diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php new file mode 100644 index 0000000..7f65c7d --- /dev/null +++ b/tests/Admin/AdminTest.php @@ -0,0 +1,26 @@ +getHeader()->setAccount(1); + $request->setData('id', '1'); + + $this->module->apiAccountGet($request, $response); + + self::assertEquals('admin', $response->get('')['response']->getName()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user can be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountUpdate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', 1); + $request->setData('email', 'oms@orange-management.de'); + + $this->module->apiAccountUpdate($request, $response); + $this->module->apiAccountGet($request, $response); + + self::assertEquals('oms@orange-management.de', $response->get('')['response']->getEmail()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user can be found by name + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountFind() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('search', 'admin'); + + $this->module->apiAccountFind($request, $response); + self::assertCount(1, $response->get('')); + self::assertEquals('admin', $response->get('')[0]->getName1()); + } + + /** + * @testdox A user and profile for the user can be created + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountAndProfileCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('login', 'guest'); + $request->setData('password', 'guest'); + $request->setData('name1', 'Guest'); + $request->setData('email', 'test@email.com'); + $request->setData('type', AccountType::USER); + $request->setData('status', AccountStatus::INACTIVE); + + $this->module->apiAccountCreate($request, $response); + + self::assertEquals('guest', $response->get('')['response']->getName()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user can be deleted + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountDelete() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + // mustn't create a profile otherwise it will not be possible to delete the account because of FK constraints + $request->setData('name1', 'Guest'); + $request->setData('email', 'test@email.com'); + $request->setData('type', AccountType::USER); + $request->setData('status', AccountStatus::INACTIVE); + + $this->module->apiAccountCreate($request, $response); + $request->setData('id', $response->get('')['response']->getId()); + $this->module->apiAccountDelete($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A invalid user cannot be created + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountCreateInvalid() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('status', 999); + $request->setData('description', 'test description'); + + $this->module->apiAccountCreate($request, $response); + self::assertEquals('validation', $response->get('account_create')::TYPE); + } + + /** + * @testdox A user group can be added to a user + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddGroupToAccount() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('account', 1); + $request->setData('igroup-idlist', '1'); + + $this->module->apiAddGroupToAccount($request, $response); + self::assertEquals('ok', $response->get('')['status']); + } +} diff --git a/tests/Controller/Api/ApiControllerGroupTrait.php b/tests/Controller/Api/ApiControllerGroupTrait.php new file mode 100644 index 0000000..3d4fcae --- /dev/null +++ b/tests/Controller/Api/ApiControllerGroupTrait.php @@ -0,0 +1,165 @@ +getHeader()->setAccount(1); + $request->setData('id', '3'); + + $this->module->apiGroupGet($request, $response); + + self::assertEquals('admin', $response->get('')['response']->getName()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user group can be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupSet() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', '3'); + $request->setData('name', 'root'); + + $this->module->apiGroupUpdate($request, $response); + $this->module->apiGroupGet($request, $response); + + self::assertEquals('root', $response->get('')['response']->getName()); + + $request->setData('name', 'admin', true); + $this->module->apiGroupUpdate($request, $response); + } + + /** + * @testdox A user group can be found by name + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupFind() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('search', 'admin'); + + $this->module->apiGroupFind($request, $response); + self::assertCount(1, $response->get('')); + self::assertEquals('admin', $response->get('')[0]->getName()); + } + + /** + * @testdox A user group can be created and deleted + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupCreateDelete() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('name', 'test'); + $request->setData('status', GroupStatus::INACTIVE); + $request->setData('description', 'test description'); + + $this->module->apiGroupCreate($request, $response); + + self::assertEquals('test', $response->get('')['response']->getName()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + + // test delete + $request->setData('id', $response->get('')['response']->getId()); + $this->module->apiGroupDelete($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A invalid user group cannot be created + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupCreateInvalid() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('status', 999); + $request->setData('description', 'test description'); + + $this->module->apiGroupCreate($request, $response); + self::assertEquals('validation', $response->get('group_create')::TYPE); + } + + /** + * @testdox A user can be added to a user group + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddAccountToGroup() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('group', 1); + $request->setData('iaccount-idlist', '1'); + + $this->module->apiAddAccountToGroup($request, $response); + self::assertEquals('ok', $response->get('')['status']); + } + + /** + * @testdox A user and user group can be found by name + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountGroupFind() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('search', 'admin'); + + $this->module->apiAccountGroupFind($request, $response); + self::assertCount(2, $response->get('')); + self::assertEquals('admin', $response->get('')[0]['name'][0] ?? ''); + self::assertEquals('admin', $response->get('')[1]['name'][0] ?? ''); + } +} diff --git a/tests/Controller/Api/ApiControllerModuleTrait.php b/tests/Controller/Api/ApiControllerModuleTrait.php new file mode 100644 index 0000000..3635b8f --- /dev/null +++ b/tests/Controller/Api/ApiControllerModuleTrait.php @@ -0,0 +1,131 @@ +getHeader()->setAccount(1); + $request->setData('module', 'TestModule'); + + $request->setData('status', ModuleStatusUpdateType::INSTALL); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('ok', $response->get('')['status']); + + $request->setData('status', ModuleStatusUpdateType::ACTIVATE, true); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('ok', $response->get('')['status']); + + $request->setData('status', ModuleStatusUpdateType::DEACTIVATE, true); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('ok', $response->get('')['status']); + + $request->setData('status', ModuleStatusUpdateType::UNINSTALL, true); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('ok', $response->get('')['status']); + } + + /** + * @testdox A missing module cannot be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiModuleStatusUpdateEmptyModule() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + + $request->setData('status', ModuleStatusUpdateType::INSTALL); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertNull($response->get('module_stutus_update')); + } + + /** + * @testdox A invalid module status cannot update a module + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiModuleStatusUpdateInvalidStatus() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('module', 'TestModule'); + + $request->setData('status', 99); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('warning', $response->get('')['status']); + } + + /** + * @testdox A invalid module cannot be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiModuleStatusUpdateInvalidModule() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('module', 'invalid'); + + $request->setData('status', ModuleStatusUpdateType::INSTALL); + $this->module->apiModuleStatusUpdate($request, $response); + self::assertEquals('warning', $response->get('')['status']); + } + + /** + * @testdox A module can be re-initialized + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiReInit() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + + $routes = include __DIR__ . '/../../../../../Web/Api/Routes.php'; + $hooks = include __DIR__ . '/../../../../../Web/Api/Hooks.php'; + + $this->module->apiReInit($request, $response); + + $routes2 = include __DIR__ . '/../../../../../Web/Api/Routes.php'; + $hooks2 = include __DIR__ . '/../../../../../Web/Api/Hooks.php'; + + self::assertEquals($routes, $routes2); + self::assertEquals($hooks, $hooks2); + } +} diff --git a/tests/Controller/Api/ApiControllerPermissionTrait.php b/tests/Controller/Api/ApiControllerPermissionTrait.php new file mode 100644 index 0000000..bb48cb8 --- /dev/null +++ b/tests/Controller/Api/ApiControllerPermissionTrait.php @@ -0,0 +1,267 @@ +getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::GROUP); + $request->setData('permissionref', 1); + + $this->module->apiAddGroupPermission($request, $response); + self::assertEquals('ok', $response->get('')['status']); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A group permission can be returned + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupPermissionGet() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', '2'); + + $this->module->apiGroupPermissionGet($request, $response); + + self::assertEquals(1, $response->get('')['response']->getGroup()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user group permission can be created and deleted + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupPermissionCreateDelete() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::GROUP); + $request->setData('permissionref', 1); + + $this->module->apiAddGroupPermission($request, $response); + self::assertEquals('ok', $response->get('')['status']); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + + // test delete + $request->setData('id', $response->get('')['response']->getId()); + $this->module->apiGroupPermissionDelete($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A permission with missing data cannot be added to a user group + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddGroupPermissionInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::GROUP); + + $this->module->apiAddGroupPermission($request, $response); + self::assertEquals('validation', $response->get('permission_create')::TYPE); + } + + /** + * @testdox A invalid permission type cannot be added to a user group + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddGroupPermissionInvalidType() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::ACCOUNT); + $request->setData('permissionref', 1); + + $this->module->apiAddGroupPermission($request, $response); + self::assertEquals('validation', $response->get('permission_create')::TYPE); + } + + /** + * @testdox A user group permission can be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiGroupPermissionUpdate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', 1); + $request->setData('permissionread', PermissionType::READ); + + $this->module->apiGroupPermissionUpdate($request, $response); + + self::assertEquals(PermissionType::READ, $response->get('')['response']->getPermission()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + + $request->setData('permissioncreate', PermissionType::CREATE); + $request->setData('permissionupdate', PermissionType::MODIFY); + $request->setData('permissiondelete', PermissionType::DELETE); + $request->setData('permissionpermission', PermissionType::PERMISSION); + + $this->module->apiGroupPermissionUpdate($request, $response); + } + + /** + * @testdox A permission can be added to a user + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddAccountPermission() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::ACCOUNT); + $request->setData('permissionref', 1); + + $this->module->apiAddAccountPermission($request, $response); + self::assertEquals('ok', $response->get('')['status']); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user permission can be returned + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountPermissionGet() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', '1'); + + $this->module->apiAccountPermissionGet($request, $response); + + self::assertEquals(1, $response->get('')['response']->getAccount()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A user permission can be created and deleted + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountPermissionCreateDelete() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::ACCOUNT); + $request->setData('permissionref', 1); + + $this->module->apiAddAccountPermission($request, $response); + self::assertEquals('ok', $response->get('')['status']); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + + // test delete + $request->setData('id', $response->get('')['response']->getId()); + $this->module->apiAccountPermissionDelete($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @testdox A permission with missing data cannot be added to a user + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddAccountPermissionInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::ACCOUNT); + + $this->module->apiAddAccountPermission($request, $response); + self::assertEquals('validation', $response->get('permission_create')::TYPE); + } + + /** + * @testdox A invalid permission type cannot be added to a user + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAddAccountPermissionInvalidType() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('permissionowner', PermissionOwner::GROUP); + $request->setData('permissionref', 1); + + $this->module->apiAddAccountPermission($request, $response); + self::assertEquals('validation', $response->get('permission_create')::TYPE); + } + + /** + * @testdox A user permission can be updated + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiAccountPermissionUpdate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('id', 1); + $request->setData('permissionread', PermissionType::READ); + + $this->module->apiAccountPermissionUpdate($request, $response); + + self::assertEquals(PermissionType::READ, $response->get('')['response']->getPermission()); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } +} diff --git a/tests/Controller/Api/ApiControllerSettingsTrait.php b/tests/Controller/Api/ApiControllerSettingsTrait.php new file mode 100644 index 0000000..be69d8b --- /dev/null +++ b/tests/Controller/Api/ApiControllerSettingsTrait.php @@ -0,0 +1,58 @@ +getHeader()->setAccount(1); + $request->setData('name', '1000000019'); + + $this->module->apiSettingsGet($request, $response); + self::assertEquals('DE', $response->get('')['response']); + } + + /** + * @testdox Application settings can be set in the database + * @covers Modules\Admin\Controller\ApiController + * @group module + */ + public function testApiSettingsSet() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->getHeader()->setAccount(1); + $request->setData('settings', \json_encode([['name' => '1000000019', 'content' => 'US']])); + $this->module->apiSettingsSet($request, $response); + + $request->setData('name', '1000000019'); + $this->module->apiSettingsGet($request, $response); + self::assertEquals('US', $response->get('')['response']); + } +} diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php new file mode 100644 index 0000000..5a42c3e --- /dev/null +++ b/tests/Controller/ApiControllerTest.php @@ -0,0 +1,96 @@ +app = new class() extends ApplicationAbstract + { + protected string $appName = 'Api'; + }; + + $this->app->dbPool = $GLOBALS['dbpool']; + $this->app->orgId = 1; + $this->app->appName = 'Backend'; + $this->app->accountManager = new AccountManager($GLOBALS['session']); + $this->app->appSettings = new CoreSettings($this->app->dbPool->get()); + $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules'); + $this->app->dispatcher = new Dispatcher($this->app); + $this->app->eventManager = new EventManager($this->app->dispatcher); + $this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php'); + + $account = new Account(); + TestUtils::setMember($account, 'id', 1); + + $permission = new AccountPermission(); + $permission->setUnit(1); + $permission->setApp('backend'); + $permission->setPermission( + PermissionType::READ + | PermissionType::CREATE + | PermissionType::MODIFY + | PermissionType::DELETE + | PermissionType::PERMISSION + ); + + $account->addPermission($permission); + + $this->app->accountManager->add($account); + $this->app->router = new WebRouter(); + + $this->module = $this->app->moduleManager->get('Admin'); + + TestUtils::setMember($this->module, 'app', $this->app); + } + + use ApiControllerSettingsTrait; + use ApiControllerAccountTrait; + use ApiControllerGroupTrait; + use ApiControllerPermissionTrait; + use ApiControllerModuleTrait; +} diff --git a/tests/Models/AccountMapperTest.php b/tests/Models/AccountMapperTest.php new file mode 100644 index 0000000..5965260 --- /dev/null +++ b/tests/Models/AccountMapperTest.php @@ -0,0 +1,103 @@ +setName('TestLogin'); + $account->setName1('Donald'); + $account->setName2('Fauntleroy'); + $account->setName3('Duck'); + $account->setLoginTries(3); + $account->setEmail('d.duck@duckburg.com'); + $account->setStatus(AccountStatus::ACTIVE); + $account->setType(AccountType::USER); + + $id = AccountMapper::create($account); + self::assertGreaterThan(0, $account->getId()); + self::assertEquals($id, $account->getId()); + + $accountR = AccountMapper::get($account->getId()); + self::assertEquals($account->getCreatedAt()->format('Y-m-d'), $accountR->getCreatedAt()->format('Y-m-d')); + self::assertEquals($account->getName(), $accountR->getName()); + self::assertEquals($account->getName1(), $accountR->getName1()); + self::assertEquals($account->getName2(), $accountR->getName2()); + self::assertEquals($account->getName3(), $accountR->getName3()); + self::assertEquals($account->getStatus(), $accountR->getStatus()); + self::assertEquals($account->getType(), $accountR->getType()); + self::assertEquals($account->getEmail(), $accountR->getEmail()); + self::assertEquals($account->getLoginTries(), $accountR->getLoginTries()); + } + + /** + * @testdox A empty user password results in a failed login + * @covers Modules\Admin\Models\AccountMapper + * @group module + */ + public function testEmptyPasswordLogin() : void + { + self::assertEquals(LoginReturnType::WRONG_PASSWORD, AccountMapper::login('admin', '')); + } + + /** + * @testdox A invalid user password results in a failed login + * @covers Modules\Admin\Models\AccountMapper + * @group module + */ + public function testInvalidPasswordLogin() : void + { + self::assertEquals(LoginReturnType::WRONG_PASSWORD, AccountMapper::login('admin', 'invalid')); + } + + /** + * @testdox A invalid user name results in a failed login + * @covers Modules\Admin\Models\AccountMapper + * @group module + */ + public function testInvalidUsernameLogin() : void + { + self::assertEquals(LoginReturnType::WRONG_USERNAME, AccountMapper::login('zzzzInvalidTestzzz', 'orange')); + } + + /** + * @testdox A valid user name and password results in a successful login + * @covers Modules\Admin\Models\AccountMapper + * @group module + */ + public function testValidLogin() : void + { + self::assertGreaterThan(0, AccountMapper::login('admin', 'orange')); + } +} diff --git a/tests/Models/AccountPermissionTest.php b/tests/Models/AccountPermissionTest.php new file mode 100644 index 0000000..34546c0 --- /dev/null +++ b/tests/Models/AccountPermissionTest.php @@ -0,0 +1,36 @@ +getAccount()); + } +} diff --git a/tests/Models/AccountTest.php b/tests/Models/AccountTest.php new file mode 100644 index 0000000..7912f4c --- /dev/null +++ b/tests/Models/AccountTest.php @@ -0,0 +1,49 @@ +getLoginTries()); + } + + /** + * @testdox The login tries can be set and returned + * @covers Modules\Admin\Models\Account + * @group module + */ + public function testLoginTriesInputOutput() : void + { + $account = new Account(); + + $account->setLoginTries(3); + self::assertEquals(3, $account->getLoginTries()); + } +} diff --git a/tests/Models/GroupMapperTest.php b/tests/Models/GroupMapperTest.php new file mode 100644 index 0000000..777f73d --- /dev/null +++ b/tests/Models/GroupMapperTest.php @@ -0,0 +1,53 @@ +getId() === $groupId) { + self::assertTrue(true); + return; + } + } + + self::assertTrue(false); + } +} diff --git a/tests/Models/GroupPermissionTest.php b/tests/Models/GroupPermissionTest.php new file mode 100644 index 0000000..cef2ca0 --- /dev/null +++ b/tests/Models/GroupPermissionTest.php @@ -0,0 +1,36 @@ +getGroup()); + } +} diff --git a/tests/Models/GroupTest.php b/tests/Models/GroupTest.php new file mode 100644 index 0000000..45d16db --- /dev/null +++ b/tests/Models/GroupTest.php @@ -0,0 +1,66 @@ +format('Y-m-d'), $group->getCreatedAt()->format('Y-m-d')); + self::assertEquals(0, $group->getCreatedBy()->getId()); + self::assertEquals('', $group->getDescriptionRaw()); + self::assertEquals([], $group->getAccounts()); + } + + /** + * @testdox The description can be set and returned + * @covers Modules\Admin\Models\Group + * @group module + */ + public function testDescriptionInputOutput() : void + { + $group = new Group(); + + $group->setDescriptionRaw('Some test'); + self::assertEquals('Some test', $group->getDescriptionRaw()); + } + + /** + * @testdox The creator can be set and returned + * @covers Modules\Admin\Models\Group + * @group module + */ + public function testCreatorInputOutput() : void + { + $group = new Group(); + + $group->setCreatedBy(new NullAccount(3)); + self::assertEquals(3, $group->getCreatedBy()->getId()); + } +} diff --git a/tests/Models/LocalizationMapperTest.php b/tests/Models/LocalizationMapperTest.php new file mode 100644 index 0000000..e2045dd --- /dev/null +++ b/tests/Models/LocalizationMapperTest.php @@ -0,0 +1,44 @@ +getTemperature()); + self::assertEquals($localization->jsonSerialize(), $localizationRemote->jsonSerialize()); + } +} diff --git a/tests/Models/ModuleTest.php b/tests/Models/ModuleTest.php new file mode 100644 index 0000000..8a58da9 --- /dev/null +++ b/tests/Models/ModuleTest.php @@ -0,0 +1,105 @@ +module = new Module(); + } + + /** + * @testdox The module has the expected default values after initialization + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->module->getId()); + self::assertInstanceOf('\DateTime', $this->module->getCreatedAt()); + self::assertEquals('', $this->module->getName()); + self::assertEquals('', $this->module->getDescription()); + self::assertEquals(ModuleStatus::INACTIVE, $this->module->getStatus()); + self::assertEquals(\json_encode($this->module->jsonSerialize()), $this->module->__toString()); + self::assertEquals($this->module->jsonSerialize(), $this->module->toArray()); + } + + /** + * @testdox The name can be set and returned + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testNameInputOutput() : void + { + $this->module->setName('Name'); + self::assertEquals('Name', $this->module->getName()); + } + + /** + * @testdox The description can be set and returned + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testDescriptionInputOutput() : void + { + $this->module->setDescription('Desc'); + self::assertEquals('Desc', $this->module->getDescription()); + } + + /** + * @testdox The status can be set and returned + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testStatusInputOutput() : void + { + $this->module->setStatus(ModuleStatus::ACTIVE); + self::assertEquals(ModuleStatus::ACTIVE, $this->module->getStatus()); + } + + /** + * @testdox The module can be serialized + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testSerializations() : void + { + self::assertEquals(\json_encode($this->module->jsonSerialize()), $this->module->__toString()); + self::assertEquals($this->module->jsonSerialize(), $this->module->toArray()); + } + + /** + * @testdox A invalid status throws a InvalidEnumValue exception + * @covers Modules\Admin\Models\Module + * @group module + */ + public function testInvalidStatus() : void + { + self::expectException(\phpOMS\Stdlib\Base\Exception\InvalidEnumValue::class); + + $this->module->setStatus(9999); + } +} diff --git a/tests/Models/om_OMS.json b/tests/Models/om_OMS.json new file mode 100644 index 0000000..2fbb3fc --- /dev/null +++ b/tests/Models/om_OMS.json @@ -0,0 +1,67 @@ +{ + "language": "en", + "country": "US", + "currency": { + "code": "USD", + "position": 0, + "format": "1" + }, + "thousand": ",", + "decimal": ".", + "angle": "deg", + "temperature": "fahrenheit", + "weight": { + "very_light": "mg", + "light": "g", + "medium": "kg", + "heavy": "t", + "very_heavy": "t" + }, + "speed": { + "very_slow": "mps", + "slow": "ms", + "medium": "kph", + "fast": "kph", + "very_fast": "management", + "sea": "knot" + }, + "length": { + "very_short": "micron", + "short": "mm", + "medium": "cm", + "long": "m", + "very_long": "km", + "sea": "mile" + }, + "area": { + "very_small": "micron", + "small": "mm", + "medium": "cm", + "large": "m", + "very_large": "orange" + }, + "volume": { + "very_small": "mul", + "small": "ml", + "medium": "l", + "large": "cm", + "very_large": "m", + "teaspoon": "Metric tsp", + "tablespoon": "Metric tblsp", + "glass": "Metric cup" + }, + "datetime": { + "very_short": "d.m", + "short": "m.y", + "medium": "Y.m.d", + "long": "Y.m.d h:i", + "very_long": "Y.m.d h:i:s" + }, + "precision": { + "very_short": 0, + "short": 1, + "medium": 2, + "long": 3, + "very_long": 5 + } +} \ No newline at end of file