From cd0840fcf6dfe90a8939557c9162f01e4d8f3812 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sat, 14 Mar 2020 14:13:10 +0100 Subject: [PATCH] add tests --- tests/Admin/AdminTest.php | 26 ++++ tests/Controller/ApiControllerTest.php | 169 +++++++++++++++++++++++++ tests/Models/AuditTest.php | 72 +++++++++++ 3 files changed, 267 insertions(+) create mode 100644 tests/Admin/AdminTest.php create mode 100644 tests/Controller/ApiControllerTest.php create mode 100644 tests/Models/AuditTest.php diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php new file mode 100644 index 0000000..778f7ce --- /dev/null +++ b/tests/Admin/AdminTest.php @@ -0,0 +1,26 @@ +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('Auditor'); + + TestUtils::setMember($this->module, 'app', $this->app); + } + + /** + * @testdox Audit logs for create statements can be created + * @covers Modules\Auditor\Controller\ApiController + * @group module + */ + public function testLogCreate() : void + { + $this->module->apiLogCreate(1, null, ['id' => 1, 'test' => true], 1, 2, 'Auditor', 'abc', 'def'); + $logs = AuditMapper::getAll(); + + foreach($logs as $log) { + if ($log->getId() > 0 + && $log->getType() === 1 + && $log->getSubtype() === 2 + && $log->getModule() === 'Auditor' + && $log->getRef() === 'abc' + && $log->getContent() === 'def' + && $log->getOld() === null + && $log->getNew() === \json_encode(['id' => 1, 'test' => true], \JSON_PRETTY_PRINT) + ) { + self::assertTrue(true); + return; + } + } + + self::assertTrue(false); + } + + /** + * @testdox Audit logs for update statements can be created + * @covers Modules\Auditor\Controller\ApiController + * @group module + */ + public function testLogUpdate() : void + { + $this->module->apiLogUpdate(1, ['id' => 2, 'test' => true], ['id' => 1, 'test' => true], 1, 2, 'Auditor', 'abc', 'def'); + $logs = AuditMapper::getAll(); + + foreach($logs as $log) { + if ($log->getId() > 0 + && $log->getType() === 1 + && $log->getSubtype() === 2 + && $log->getModule() === 'Auditor' + && $log->getRef() === 'abc' + && $log->getContent() === 'def' + && $log->getOld() === \json_encode(['id' => 2, 'test' => true], \JSON_PRETTY_PRINT) + && $log->getNew() === \json_encode(['id' => 1, 'test' => true], \JSON_PRETTY_PRINT) + ) { + self::assertTrue(true); + return; + } + } + + self::assertTrue(false); + } + + /** + * @testdox Audit logs for delete statements can be created + * @covers Modules\Auditor\Controller\ApiController + * @group module + */ + public function testLogDelete() : void + { + $this->module->apiLogDelete(1, ['id' => 1, 'test' => true], null, 1, 2, 'Auditor', 'abc', 'def'); + $logs = AuditMapper::getAll(); + + foreach($logs as $log) { + if ($log->getId() > 0 + && $log->getType() === 1 + && $log->getSubtype() === 2 + && $log->getModule() === 'Auditor' + && $log->getRef() === 'abc' + && $log->getContent() === 'def' + && $log->getOld() === \json_encode(['id' => 1, 'test' => true], \JSON_PRETTY_PRINT) + && $log->getNew() === null + ) { + self::assertTrue(true); + return; + } + } + + self::assertTrue(false); + } +} diff --git a/tests/Models/AuditTest.php b/tests/Models/AuditTest.php new file mode 100644 index 0000000..617ca00 --- /dev/null +++ b/tests/Models/AuditTest.php @@ -0,0 +1,72 @@ +getId()); + self::assertEquals(0, $audit->getType()); + self::assertEquals(0, $audit->getSubType()); + self::assertNull($audit->getModule()); + self::assertNull($audit->getRef()); + self::assertNull($audit->getContent()); + self::assertNull($audit->getOld()); + self::assertNull($audit->getNew()); + self::assertEquals(0, $audit->getCreatedBy()->getId()); + self::assertInstanceOf('\DateTime', $audit->getCreatedAt()); + } + + /** + * @testdox The model can be initialized correctly + * @covers Modules\Auditor\Models\Audit + * @group module + */ + public function testConstructorInputOutput() : void + { + $audit = new Audit( + new Account(), + 'old', 'new', + 1, 2, + '3', + 'test', + 'content' + ); + + self::assertEquals(1, $audit->getType()); + self::assertEquals(2, $audit->getSubType()); + self::assertEquals(3, $audit->getModule()); + self::assertEquals('test', $audit->getRef()); + self::assertEquals('content', $audit->getContent()); + self::assertEquals('old', $audit->getOld()); + self::assertEquals('new', $audit->getNew()); + self::assertEquals(0, $audit->getCreatedBy()->getId()); + } +}