Skip to content

Commit 5136f75

Browse files
committed
Return clean response with robots.txt and fixed content
1 parent 9b78c46 commit 5136f75

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

phpunit.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<phpunit bootstrap="./vendor/autoload.php" colors="true">
44
<testsuites>
5-
<testsuite name="PhpMiddleware\\BlockRobots Tests">
5+
<testsuite>
66
<directory>./test</directory>
77
</testsuite>
88
</testsuites>

src/BlockRobotsMiddleware.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Psr\Http\Message\ResponseInterface;
66
use Psr\Http\Message\ServerRequestInterface;
7+
use Zend\Diactoros\Response;
78

89
class BlockRobotsMiddleware
910
{
@@ -12,8 +13,10 @@ class BlockRobotsMiddleware
1213
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $out = null)
1314
{
1415
if ($request->getUri()->getPath() === '/robots.txt') {
15-
$response->getBody()->write('Disallow: /');
16-
return $response->withHeader('Content-Type', 'text/plain');
16+
$newReponse = new Response('php://memory', 200, ['Content-Type' => 'text/plain']);
17+
$newReponse->getBody()->write("User-Agent: *\nDisallow: /");
18+
19+
return $newReponse;
1720
}
1821
/* @var $out ResponseInterface */
1922
$response = $out === null ? $response : $out($request, $response);

test/BlockRobotsMiddlewareTest.php

+7-5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Psr\Http\Message\ResponseInterface;
77
use Zend\Diactoros\Response;
88
use Zend\Diactoros\ServerRequest;
9+
use Zend\Diactoros\Uri;
910

1011
class BlockRobotsMiddlewareTest extends \PHPUnit_Framework_TestCase
1112
{
@@ -33,14 +34,14 @@ public function testNoIndexHeader()
3334

3435
$this->assertTrue($calledOut, 'Out was not called');
3536
$this->assertNotSame($response, $result);
37+
$this->assertInstanceOf(ResponseInterface::class, $result);
3638
$this->assertEquals('noindex, nofollow', $result->getHeaderLine(BlockRobotsMiddleware::ROBOTS_HEADER));
3739
}
3840

3941
public function testRobots()
4042
{
41-
$uri = new \Zend\Diactoros\Uri('http://foo/robots.txt');
42-
$request = new ServerRequest();
43-
$request = $request->withUri($uri);
43+
$uri = new Uri('http://foo/robots.txt');
44+
$request = new ServerRequest([], [], $uri);
4445
$response = new Response();
4546
$calledOut = false;
4647

@@ -55,8 +56,9 @@ public function testRobots()
5556

5657
$this->assertFalse($calledOut, 'Out was called');
5758
$this->assertNotSame($response, $result);
59+
$this->assertInstanceOf(ResponseInterface::class, $result);
5860
$this->assertFalse($result->hasHeader(BlockRobotsMiddleware::ROBOTS_HEADER));
59-
$this->assertEquals('Disallow: /', (string) $result->getBody());
60-
$this->assertEquals('text/plain', $result->getHeaderLine('Content-Type'));
61+
$this->assertSame("User-Agent: *\nDisallow: /", (string) $result->getBody());
62+
$this->assertSame('text/plain', $result->getHeaderLine('Content-Type'));
6163
}
6264
}

0 commit comments

Comments
 (0)