/** * @test */ public function wrongShortCodeFormatOutputsErrorMessage() { $shortCode = 'abc123'; $this->urlShortener->shortCodeToUrl($shortCode)->willThrow(new InvalidShortCodeException())->shouldBeCalledTimes(1); $this->commandTester->execute(['command' => 'shortcode:parse', 'shortCode' => $shortCode]); $output = $this->commandTester->getDisplay(); $this->assertEquals('Provided short code "' . $shortCode . '" has an invalid format.' . PHP_EOL, $output); }
/** * @test */ public function previewExceptionReturnsNotFound() { $shortCode = 'abc123'; $this->urlShortener->shortCodeToUrl($shortCode)->willThrow(PreviewGenerationException::class)->shouldBeCalledTimes(1); $resp = $this->action->__invoke(ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode), new Response(), function ($req, $resp) { return $resp; }); $this->assertEquals(500, $resp->getStatusCode()); }
/** * @test */ public function unexpectedExceptionWillReturnError() { $shortCode = 'abc123'; $this->urlShortener->shortCodeToUrl($shortCode)->willThrow(\Exception::class)->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); $response = $this->action->__invoke($request, new Response()); $this->assertEquals(500, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::UNKNOWN_ERROR) > 0); }
/** * @test */ public function aCorrectRequestReturnsTheQrCodeResponse() { $shortCode = 'abc123'; $this->urlShortener->shortCodeToUrl($shortCode)->willReturn(new ShortUrl())->shouldBeCalledTimes(1); $resp = $this->action->__invoke(ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode), new Response(), function ($req, $resp) { return $resp; }); $this->assertInstanceOf(QrCodeResponse::class, $resp); $this->assertEquals(200, $resp->getStatusCode()); }
/** * @test */ public function nextErrorMiddlewareIsInvokedIfAnExceptionIsThrown() { $shortCode = 'abc123'; $this->urlShortener->shortCodeToUrl($shortCode)->willThrow(\Exception::class)->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); $originalResponse = new Response(); $test = $this; $this->action->__invoke($request, $originalResponse, function (ServerRequestInterface $req, ResponseInterface $resp, $error) use($test, $request) { $test->assertSame($request, $req); $test->assertEquals(404, $resp->getStatusCode()); $test->assertEquals('Not Found', $error); }); }