fbett /
le-acme2-php
| 1 | <?php |
||||
| 2 | namespace LE_ACME2Tests; |
||||
| 3 | |||||
| 4 | use LE_ACME2\Exception\InvalidResponse; |
||||
| 5 | |||||
| 6 | /** |
||||
| 7 | * @covers \LE_ACME2\Account |
||||
| 8 | */ |
||||
| 9 | class AccountTest extends AbstractLeAcme2TestCase { |
||||
| 10 | |||||
| 11 | private $_commonKeyDirectoryPath; |
||||
| 12 | |||||
| 13 | public function __construct(string $name) { |
||||
| 14 | parent::__construct($name); |
||||
| 15 | |||||
| 16 | $this->_commonKeyDirectoryPath = TestHelper::getInstance()->getTempPath() . 'le-storage/'; |
||||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||
| 17 | } |
||||
| 18 | |||||
| 19 | public function testNonExistingCommonKeyDirectoryPath() { |
||||
| 20 | |||||
| 21 | $this->assertTrue(\LE_ACME2\Account::getCommonKeyDirectoryPath() === null); |
||||
| 22 | |||||
| 23 | $notExistingPath = TestHelper::getInstance()->getTempPath() . 'should-not-exist/'; |
||||
| 24 | |||||
| 25 | $this->catchExpectedException( |
||||
| 26 | \RuntimeException::class, |
||||
| 27 | function() use($notExistingPath) { |
||||
| 28 | \LE_ACME2\Account::setCommonKeyDirectoryPath($notExistingPath); |
||||
| 29 | } |
||||
| 30 | ); |
||||
| 31 | } |
||||
| 32 | |||||
| 33 | public function testCommonKeyDirectoryPath() { |
||||
| 34 | |||||
| 35 | if(!file_exists($this->_commonKeyDirectoryPath)) { |
||||
| 36 | mkdir($this->_commonKeyDirectoryPath); |
||||
| 37 | } |
||||
| 38 | |||||
| 39 | \LE_ACME2\Account::setCommonKeyDirectoryPath($this->_commonKeyDirectoryPath); |
||||
| 40 | |||||
| 41 | $this->assertTrue( |
||||
| 42 | \LE_ACME2\Account::getCommonKeyDirectoryPath() === $this->_commonKeyDirectoryPath |
||||
| 43 | ); |
||||
| 44 | } |
||||
| 45 | |||||
| 46 | public function testNonExisting() { |
||||
| 47 | |||||
| 48 | if(\LE_ACME2\Account::exists($this->_accountEmail)) { |
||||
| 49 | $this->markTestSkipped('Skipped: Account does already exist'); |
||||
| 50 | } |
||||
| 51 | |||||
| 52 | $this->assertTrue(!\LE_ACME2\Account::exists($this->_accountEmail)); |
||||
| 53 | |||||
| 54 | $this->catchExpectedException( |
||||
| 55 | \RuntimeException::class, |
||||
| 56 | function() { |
||||
| 57 | \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 58 | } |
||||
| 59 | ); |
||||
| 60 | |||||
| 61 | } |
||||
| 62 | |||||
| 63 | public function testCreate() { |
||||
| 64 | |||||
| 65 | if(\LE_ACME2\Account::exists($this->_accountEmail)) { |
||||
| 66 | // Skipping account modification tests, when the account already exists |
||||
| 67 | // to reduce the LE api usage while developing |
||||
| 68 | TestHelper::getInstance()->setSkipAccountModificationTests(true); |
||||
|
0 ignored issues
–
show
It seems like
setSkipAccountModificationTests() must be provided by classes using this trait. How about adding it as abstract method to this trait?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
| 69 | $this->markTestSkipped('Account modifications skipped: Account does already exist'); |
||||
| 70 | } |
||||
| 71 | |||||
| 72 | $this->assertTrue(!\LE_ACME2\Account::exists($this->_accountEmail)); |
||||
| 73 | |||||
| 74 | $account = \LE_ACME2\Account::create($this->_accountEmail); |
||||
| 75 | $this->assertTrue(is_object($account)); |
||||
| 76 | $this->assertTrue($account->getEmail() === $this->_accountEmail); |
||||
| 77 | |||||
| 78 | $account = \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 79 | $this->assertTrue(is_object($account)); |
||||
| 80 | |||||
| 81 | $result = $account->getData(); |
||||
| 82 | $this->assertTrue($result->getStatus() === \LE_ACME2\Response\Account\AbstractAccount::STATUS_VALID); |
||||
| 83 | } |
||||
| 84 | |||||
| 85 | public function testInvalidCreate() { |
||||
| 86 | |||||
| 87 | if(TestHelper::getInstance()->shouldSkipAccountModificationTests()) { |
||||
|
0 ignored issues
–
show
It seems like
shouldSkipAccountModificationTests() must be provided by classes using this trait. How about adding it as abstract method to this trait?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||
| 88 | $this->expectNotToPerformAssertions(); |
||||
| 89 | return; |
||||
| 90 | } |
||||
| 91 | |||||
| 92 | $e = $this->catchExpectedException( |
||||
| 93 | InvalidResponse::class, |
||||
| 94 | function() { |
||||
| 95 | \LE_ACME2\Account::create('test_php' . phpversion() . '@example.org'); |
||||
| 96 | } |
||||
| 97 | ); |
||||
| 98 | $this->assertEquals( |
||||
| 99 | 'Invalid response received: ' . |
||||
| 100 | 'urn:ietf:params:acme:error:invalidContact' . |
||||
| 101 | ' - ' . |
||||
| 102 | 'Error creating new account :: contact email has forbidden domain "example.org"', |
||||
| 103 | $e->getMessage(), |
||||
| 104 | ); |
||||
| 105 | } |
||||
| 106 | |||||
| 107 | public function testModification() { |
||||
| 108 | |||||
| 109 | if(TestHelper::getInstance()->shouldSkipAccountModificationTests()) { |
||||
| 110 | $this->expectNotToPerformAssertions(); |
||||
| 111 | return; |
||||
| 112 | } |
||||
| 113 | |||||
| 114 | $account = \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 115 | $this->assertTrue(is_object($account)); |
||||
| 116 | |||||
| 117 | $keyDirectoryPath = $account->getKeyDirectoryPath(); |
||||
| 118 | $newEmail = 'new-' . $this->_accountEmail; |
||||
| 119 | |||||
| 120 | // An email from example.org is not allowed |
||||
| 121 | $result = $account->update('[email protected]'); |
||||
| 122 | $this->assertTrue($result === false); |
||||
| 123 | |||||
| 124 | $result = $account->update($newEmail); |
||||
| 125 | $this->assertTrue($result === true); |
||||
| 126 | |||||
| 127 | $this->assertTrue($account->getKeyDirectoryPath() !== $keyDirectoryPath); |
||||
| 128 | $this->assertTrue(file_exists($account->getKeyDirectoryPath())); |
||||
| 129 | |||||
| 130 | $result = $account->update($this->_accountEmail); |
||||
| 131 | $this->assertTrue($result === true); |
||||
| 132 | |||||
| 133 | $result = $account->changeKeys(); |
||||
| 134 | $this->assertTrue($result === true); |
||||
| 135 | |||||
| 136 | // 11. August 2022 |
||||
| 137 | // Quickfix: The LE server will not recognize fast enough, that the account key has already changed |
||||
| 138 | sleep(5); |
||||
| 139 | } |
||||
| 140 | |||||
| 141 | public function testDeactivation() { |
||||
| 142 | |||||
| 143 | if(TestHelper::getInstance()->shouldSkipAccountModificationTests()) { |
||||
| 144 | $this->expectNotToPerformAssertions(); |
||||
| 145 | return; |
||||
| 146 | } |
||||
| 147 | |||||
| 148 | $account = \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 149 | $this->assertTrue(is_object($account)); |
||||
| 150 | |||||
| 151 | $result = $account->deactivate(); |
||||
| 152 | $this->assertTrue($result === true); |
||||
| 153 | |||||
| 154 | // 11. August 2022 |
||||
| 155 | // Quickfix: The LE server will not recognize fast enough, that the account is already deactivated |
||||
| 156 | sleep(5); |
||||
| 157 | |||||
| 158 | // The account is already deactivated |
||||
| 159 | $result = $account->deactivate(); |
||||
| 160 | $this->assertTrue($result === false); |
||||
| 161 | |||||
| 162 | // The account is already deactivated |
||||
| 163 | $result = $account->changeKeys(); |
||||
| 164 | $this->assertTrue($result === false); |
||||
| 165 | |||||
| 166 | // The account is already deactivated |
||||
| 167 | $this->catchExpectedException( |
||||
| 168 | \LE_ACME2\Exception\InvalidResponse::class, |
||||
| 169 | function() use($account) { |
||||
| 170 | $account->getData(); |
||||
| 171 | } |
||||
| 172 | ); |
||||
| 173 | } |
||||
| 174 | |||||
| 175 | public function testCreationAfterDeactivation() { |
||||
| 176 | |||||
| 177 | if(TestHelper::getInstance()->shouldSkipAccountModificationTests()) { |
||||
| 178 | $this->expectNotToPerformAssertions(); |
||||
| 179 | return; |
||||
| 180 | } |
||||
| 181 | |||||
| 182 | $account = \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 183 | $this->assertTrue(is_object($account)); |
||||
| 184 | |||||
| 185 | system('rm -R ' . $account->getKeyDirectoryPath()); |
||||
| 186 | $this->assertTrue(!\LE_ACME2\Account::exists($this->_accountEmail)); |
||||
| 187 | |||||
| 188 | $account = \LE_ACME2\Account::create($this->_accountEmail); |
||||
| 189 | $this->assertTrue(is_object($account)); |
||||
| 190 | } |
||||
| 191 | |||||
| 192 | public function test() { |
||||
| 193 | |||||
| 194 | $account = \LE_ACME2\Account::get($this->_accountEmail); |
||||
| 195 | $this->assertTrue(is_object($account)); |
||||
| 196 | } |
||||
| 197 | } |