setLanguage(); DatabaseInterface::$instance = $this->createDatabaseInterface(); Current::$server = 2; Current::$database = 'db'; Current::$table = 'table'; $this->object = new AuthenticationConfig(new ResponseRendererStub()); } public function testShowLoginFormWithoutAjax(): void { (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); $responseRenderer = ResponseRenderer::getInstance(); $responseRenderer->setAjax(false); $this->object = new AuthenticationConfig($responseRenderer); self::assertNull($this->object->showLoginForm()); } public function testShowLoginFormWithAjax(): void { (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); $responseRenderer = ResponseRenderer::getInstance(); $responseRenderer->setAjax(true); $this->object = new AuthenticationConfig($responseRenderer); $response = $this->object->showLoginForm(); self::assertNotNull($response); $body = (string) $response->getBody(); self::assertJson($body); $json = json_decode($body, true); self::assertIsArray($json); self::assertArrayHasKey('reload_flag', $json); self::assertSame('1', $json['reload_flag']); } public function testAuthCheck(): void { Config::getInstance()->selectedServer = ['user' => 'username', 'password' => 'password']; self::assertTrue( $this->object->readCredentials(), ); } public function testAuthSetUser(): void { self::assertTrue( $this->object->storeCredentials(), ); } public function testAuthFails(): void { Config::getInstance()->settings['Servers'] = [1]; $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); DatabaseInterface::$instance = $dbi; $response = $this->object->showFailure(AuthenticationFailure::deniedByDatabaseServer()); $html = (string) $response->getBody(); self::assertStringContainsString( 'You probably did not create a configuration file. You might want ' . 'to use the setup script to create one.', $html, ); self::assertStringContainsString( 'Retry to connect', $html, ); } }