diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 959f3af..511f173 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -1,5 +1,4 @@ module->apiAddGroupToAccount($request, $response); self::assertEquals('ok', $response->get('')['status']); + + // remove + $response = new HttpResponse(); + + $this->module->apiDeleteGroupFromAccount($request, $response); + self::assertEquals('ok', $response->get('')['status']); + } + + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiRemoveAdminGroupFromOneselfAccount() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('account', 1); + $request->setData('igroup-idlist', '3'); + + $this->module->apiDeleteGroupFromAccount($request, $response); + self::assertEquals('error', $response->get('')['status']); + } + + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountLogin() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('user', 'admin'); + $request->setData('pass', 'orange'); + + $this->module->apiLogin($request, $response); + self::assertInstanceOf('\phpOMS\Model\Message\Reload', $response->get('')); + } + + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountLoginInvalid() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('user', 'admin'); + $request->setData('pass', 'invalid'); + + $this->module->apiLogin($request, $response); + self::assertInstanceOf('\phpOMS\Model\Message\Notify', $response->get('')); + } + + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountLogout() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('user', 'admin'); + $request->setData('pass', 'invalid'); + + $this->module->apiLogout($request, $response); + self::assertEquals('ok', $response->get('')['status']); } } diff --git a/tests/Controller/Api/ApiControllerGroupTrait.php b/tests/Controller/Api/ApiControllerGroupTrait.php index dc0f107..e4ab3c3 100755 --- a/tests/Controller/Api/ApiControllerGroupTrait.php +++ b/tests/Controller/Api/ApiControllerGroupTrait.php @@ -109,6 +109,23 @@ trait ApiControllerGroupTrait self::assertGreaterThan(0, $response->get('')['response']->getId()); } + /** + * @testdox A user group can be created and deleted + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupDeleteAdminInvalid() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + + $request->setData('id', '3'); + $this->module->apiGroupDelete($request, $response); + self::assertEquals('error', $response->get('')['status']); + } + /** * @testdox A invalid user group cannot be created * @covers Modules\Admin\Controller\ApiController @@ -132,7 +149,7 @@ trait ApiControllerGroupTrait * @covers Modules\Admin\Controller\ApiController * @group module */ - public function testApiAddAccountToGroup() : void + public function testApiAddRemoveAccountToGroup() : void { $response = new HttpResponse(); $request = new HttpRequest(new HttpUri('')); @@ -143,6 +160,29 @@ trait ApiControllerGroupTrait $this->module->apiAddAccountToGroup($request, $response); self::assertEquals('ok', $response->get('')['status']); + + // remove + $response = new HttpResponse(); + + $this->module->apiDeleteAccountFromGroup($request, $response); + self::assertEquals('ok', $response->get('')['status']); + } + + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiRemoveAdminAccountFromAdminGroup() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('group', 3); + $request->setData('iaccount-idlist', '1'); + + $this->module->apiDeleteAccountFromGroup($request, $response); + self::assertEquals('error', $response->get('')['status']); } /** diff --git a/tests/Controller/Api/ApiControllerPermissionTrait.php b/tests/Controller/Api/ApiControllerPermissionTrait.php index b6ead4c..c5c7222 100755 --- a/tests/Controller/Api/ApiControllerPermissionTrait.php +++ b/tests/Controller/Api/ApiControllerPermissionTrait.php @@ -42,6 +42,23 @@ trait ApiControllerPermissionTrait self::assertGreaterThan(0, $response->get('')['response']->getId()); } + /** + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddGroupPermissionToAdmin() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('permissionowner', PermissionOwner::GROUP); + $request->setData('permissionref', 3); + + $this->module->apiAddGroupPermission($request, $response); + self::assertEquals('error', $response->get('')['status']); + } + /** * @testdox A group permission can be returned * @covers Modules\Admin\Controller\ApiController diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php index 489a5af..8f0766d 100755 --- a/tests/Controller/ApiControllerTest.php +++ b/tests/Controller/ApiControllerTest.php @@ -22,6 +22,7 @@ use Modules\Admin\tests\Controller\Api\ApiControllerGroupTrait; use Modules\Admin\tests\Controller\Api\ApiControllerModuleTrait; use Modules\Admin\tests\Controller\Api\ApiControllerPermissionTrait; use Modules\Admin\tests\Controller\Api\ApiControllerSettingsTrait; +use phpOMS\DataStorage\Session\HttpSession; use phpOMS\Account\Account; use phpOMS\Account\AccountManager; use phpOMS\Account\PermissionType; @@ -65,6 +66,7 @@ class ApiControllerTest extends \PHPUnit\Framework\TestCase $this->app->dispatcher = new Dispatcher($this->app); $this->app->eventManager = new EventManager($this->app->dispatcher); $this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php'); + $this->app->sessionManager = new HttpSession(36000); $account = new Account(); TestUtils::setMember($account, 'id', 1); diff --git a/tests/Models/AccountMapperTest.php b/tests/Models/AccountMapperTest.php index e074caa..09b22bb 100755 --- a/tests/Models/AccountMapperTest.php +++ b/tests/Models/AccountMapperTest.php @@ -149,4 +149,15 @@ class AccountMapperTest extends \PHPUnit\Framework\TestCase $accountR->generatePassword('orange'); AccountMapper::update($accountR); } + + /** + * @covers Modules\Admin\Models\AccountMapper + * @group module + */ + public function testGetWithPermission() : void + { + $accountR = AccountMapper::getWithPermissions(1); + self::assertEquals('admin', $accountR->login); + self::assertGreaterThan(0, $accountR->getPermissions()); + } } diff --git a/tests/Models/AddressMapperTest.php b/tests/Models/AddressMapperTest.php new file mode 100644 index 0000000..150073a --- /dev/null +++ b/tests/Models/AddressMapperTest.php @@ -0,0 +1,59 @@ +name = 'name'; + $address->addition = 'addition'; + $address->postal = '0123456789'; + $address->setType(AddressType::BUSINESS); + $address->city = 'city'; + $address->address = 'Some address here'; + $address->state = 'This is a state 123'; + $address->setCountry('DE'); + $address->setGeo(['lat' => 12.1, 'long' => 11.2,]); + + $id = AddressMapper::create($address); + self::assertGreaterThan(0, $address->getId()); + self::assertEquals($id, $address->getId()); + + $addressR = AddressMapper::get($address->getId()); + self::assertEquals($address->name, $addressR->name); + self::assertEquals($address->addition, $addressR->addition); + self::assertEquals($address->getType(), $addressR->getType()); + self::assertEquals($address->postal, $addressR->postal); + self::assertEquals($address->address, $addressR->address); + self::assertEquals($address->state, $addressR->state); + } +} \ No newline at end of file diff --git a/tests/Models/AddressTest.php b/tests/Models/AddressTest.php new file mode 100644 index 0000000..21b6666 --- /dev/null +++ b/tests/Models/AddressTest.php @@ -0,0 +1,141 @@ +address = new Address(); + } + + /** + * @covers Modules\Admin\Models\Address + * @group module + */ + public function testDefault() : void + { + $expected = [ + 'postal' => '', + 'city' => '', + 'country' => 'US', + 'address' => '', + 'state' => '', + 'geo' => [ + 'lat' => 0, + 'long' => 0, + ], + 'name' => '', + 'addition' => '', + ]; + + self::assertEquals('', $this->address->name); + self::assertEquals('', $this->address->addition); + self::assertEquals($expected, $this->address->toArray()); + self::assertEquals($expected, $this->address->jsonSerialize()); + } + + public function testToArray() : void + { + $expected = [ + 'postal' => '0123456789', + 'city' => 'city', + 'country' => 'Country', + 'address' => 'Some address here', + 'state' => 'This is a state 123', + 'geo' => [ + 'lat' => 12.1, + 'long' => 11.2, + ], + 'name' => 'name', + 'addition' => 'addition', + ]; + + $this->address->name = 'name'; + $this->address->addition = 'addition'; + $this->address->postal = '0123456789'; + $this->address->setType(AddressType::BUSINESS); + $this->address->city = 'city'; + $this->address->address = 'Some address here'; + $this->address->state = 'This is a state 123'; + $this->address->setCountry('Country'); + $this->address->setGeo(['lat' => 12.1, 'long' => 11.2,]); + + self::assertEquals($expected, $this->address->toArray()); + } + + public function testJsonSerialize() : void + { + $expected = [ + 'postal' => '0123456789', + 'city' => 'city', + 'country' => 'Country', + 'address' => 'Some address here', + 'state' => 'This is a state 123', + 'geo' => [ + 'lat' => 12.1, + 'long' => 11.2, + ], + 'name' => 'name', + 'addition' => 'addition', + ]; + + $this->address->name = 'name'; + $this->address->addition = 'addition'; + $this->address->postal = '0123456789'; + $this->address->setType(AddressType::BUSINESS); + $this->address->city = 'city'; + $this->address->address = 'Some address here'; + $this->address->state = 'This is a state 123'; + $this->address->setCountry('Country'); + $this->address->setGeo(['lat' => 12.1, 'long' => 11.2,]); + + self::assertEquals($expected, $this->address->jsonSerialize()); + self::assertEquals(\json_encode($this->address->jsonSerialize()), $this->address->serialize()); + } + + public function testUnserialize() : void + { + $expected = [ + 'postal' => '0123456789', + 'city' => 'city', + 'country' => 'Country', + 'address' => 'Some address here', + 'state' => 'This is a state 123', + 'geo' => [ + 'lat' => 12.1, + 'long' => 11.2, + ], + 'name' => 'name', + 'addition' => 'addition', + ]; + + $this->address->unserialize(\json_encode($expected)); + self::assertEquals(\json_encode($expected), $this->address->serialize()); + } +} diff --git a/tests/Models/AppMapperTest.php b/tests/Models/AppMapperTest.php new file mode 100644 index 0000000..2c053b3 --- /dev/null +++ b/tests/Models/AppMapperTest.php @@ -0,0 +1,51 @@ +name = 'TestAppName'; + $app->theme = 'Default'; + $app->status = ApplicationStatus::NORMAL; + + $id = AppMapper::create($app); + self::assertGreaterThan(0, $app->getId()); + self::assertEquals($id, $app->getId()); + + $appR = AppMapper::get($app->getId()); + self::assertEquals($app->name, $appR->name); + self::assertEquals($app->theme, $appR->theme); + self::assertEquals($app->status, $appR->status); + } +} diff --git a/tests/Models/AppTest.php b/tests/Models/AppTest.php new file mode 100644 index 0000000..43eca0a --- /dev/null +++ b/tests/Models/AppTest.php @@ -0,0 +1,36 @@ +getId()); + } +} diff --git a/tests/Models/GroupMapperTest.php b/tests/Models/GroupMapperTest.php index 895d0f9..b6b6e60 100755 --- a/tests/Models/GroupMapperTest.php +++ b/tests/Models/GroupMapperTest.php @@ -50,4 +50,14 @@ class GroupMapperTest extends \PHPUnit\Framework\TestCase self::assertTrue(false); } + + /** + * @covers Modules\Admin\Models\GroupMapper + * @group module + */ + public function testCountMembers() : void + { + self::assertEquals([3 => 1], GroupMapper::countMembers()); + self::assertEquals([], GroupMapper::countMembers(1)); + } } diff --git a/tests/Models/GroupTest.php b/tests/Models/GroupTest.php index 372a82b..dbf363e 100755 --- a/tests/Models/GroupTest.php +++ b/tests/Models/GroupTest.php @@ -24,6 +24,16 @@ use Modules\Admin\Models\NullAccount; */ class GroupTest extends \PHPUnit\Framework\TestCase { + protected Group $group; + + /** + * {@inheritdoc} + */ + protected function setUp() : void + { + $this->group = new Group(); + } + /** * @testdox The group has the expected default values after initialization * @covers Modules\Admin\Models\Group @@ -31,11 +41,10 @@ class GroupTest extends \PHPUnit\Framework\TestCase */ public function testDefault() : void { - $group = new Group(); - self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $group->createdAt->format('Y-m-d')); - self::assertEquals(0, $group->createdBy->getId()); - self::assertEquals('', $group->descriptionRaw); - self::assertEquals([], $group->getAccounts()); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->group->createdAt->format('Y-m-d')); + self::assertEquals(0, $this->group->createdBy->getId()); + self::assertEquals('', $this->group->descriptionRaw); + self::assertEquals([], $this->group->getAccounts()); } /** @@ -45,10 +54,8 @@ class GroupTest extends \PHPUnit\Framework\TestCase */ public function testDescriptionInputOutput() : void { - $group = new Group(); - - $group->descriptionRaw = 'Some test'; - self::assertEquals('Some test', $group->descriptionRaw); + $this->group->descriptionRaw = 'Some test'; + self::assertEquals('Some test', $this->group->descriptionRaw); } /** @@ -58,9 +65,7 @@ class GroupTest extends \PHPUnit\Framework\TestCase */ public function testCreatorInputOutput() : void { - $group = new Group(); - - $group->createdBy = new NullAccount(3); - self::assertEquals(3, $group->createdBy->getId()); + $this->group->createdBy = new NullAccount(3); + self::assertEquals(3, $this->group->createdBy->getId()); } } diff --git a/tests/Models/NullAccount.php b/tests/Models/NullAccount.php new file mode 100644 index 0000000..7ec1f2a --- /dev/null +++ b/tests/Models/NullAccount.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullAccountPermission.php b/tests/Models/NullAccountPermission.php new file mode 100644 index 0000000..0f4353c --- /dev/null +++ b/tests/Models/NullAccountPermission.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullAddress.php b/tests/Models/NullAddress.php new file mode 100644 index 0000000..0aceaa7 --- /dev/null +++ b/tests/Models/NullAddress.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullGroup.php b/tests/Models/NullGroup.php new file mode 100644 index 0000000..751a845 --- /dev/null +++ b/tests/Models/NullGroup.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullGroupPermission.php b/tests/Models/NullGroupPermission.php new file mode 100644 index 0000000..55b7480 --- /dev/null +++ b/tests/Models/NullGroupPermission.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullModule.php b/tests/Models/NullModule.php new file mode 100644 index 0000000..f94c5c7 --- /dev/null +++ b/tests/Models/NullModule.php @@ -0,0 +1,42 @@ +getId()); + } +} diff --git a/tests/Models/NullModuleTest.php b/tests/Models/NullModuleTest.php new file mode 100644 index 0000000..db9725a --- /dev/null +++ b/tests/Models/NullModuleTest.php @@ -0,0 +1,42 @@ +getId()); + } +}