createDatabaseInterface(); $GLOBALS['server'] = 1; $GLOBALS['text_dir'] = 'ltr'; $this->dbiStub = $this->createStub(DatabaseInterface::class); $this->dbiStub->method('isMariaDB')->willReturn(true); $this->requestStub = $this->createStub(ServerRequest::class); $this->requestStub->method('isAjax')->willReturn(true); $this->requestStub->method('getParsedBodyParam')->willReturn('test.user', 'test.host'); $this->responseRendererStub = new ResponseRenderer(); $this->controller = new AccountLockController( $this->responseRendererStub, new Template(), new AccountLocking($this->dbiStub), ); } public function testWithValidAccount(): void { $this->dbiStub->method('getVersion')->willReturn(100402); $this->dbiStub->method('tryQuery')->willReturn($this->createStub(DummyResult::class)); ($this->controller)($this->requestStub); $message = Message::success('The account test.user@test.host has been successfully locked.'); $this->assertEquals(200, $this->responseRendererStub->getResponse()->getStatusCode()); $this->assertTrue($this->responseRendererStub->hasSuccessState()); $this->assertEquals(['message' => $message->getDisplay()], $this->responseRendererStub->getJSONResult()); } public function testWithInvalidAccount(): void { $this->dbiStub->method('getVersion')->willReturn(100402); $this->dbiStub->method('tryQuery')->willReturn(false); $this->dbiStub->method('getError')->willReturn('Invalid account.'); ($this->controller)($this->requestStub); $message = Message::error('Invalid account.'); $this->assertEquals(400, $this->responseRendererStub->getResponse()->getStatusCode()); $this->assertFalse($this->responseRendererStub->hasSuccessState()); $this->assertEquals(['message' => $message->getDisplay()], $this->responseRendererStub->getJSONResult()); } public function testWithUnsupportedServer(): void { $this->dbiStub->method('getVersion')->willReturn(100401); ($this->controller)($this->requestStub); $message = Message::error('Account locking is not supported.'); $this->assertEquals(400, $this->responseRendererStub->getResponse()->getStatusCode()); $this->assertFalse($this->responseRendererStub->hasSuccessState()); $this->assertEquals(['message' => $message->getDisplay()], $this->responseRendererStub->getJSONResult()); } }