1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
<?php
namespace GuzzleHttp\Tests\Subscriber\LogSubscriber;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Stream\Stream;
use GuzzleHttp\Message\Request;
use GuzzleHttp\Message\Response;
use GuzzleHttp\Subscriber\Log\Formatter;
/**
* @covers GuzzleHttp\Subscriber\Log\Formatter
*/
class FormatterTest extends \PHPUnit_Framework_TestCase
{
public function testCreatesWithClfByDefault()
{
$f = new Formatter();
$this->assertEquals(Formatter::CLF, $this->readAttribute($f, 'template'));
$f = new Formatter(null);
$this->assertEquals(Formatter::CLF, $this->readAttribute($f, 'template'));
}
public function testFormatsMessagesWithCustomData()
{
$f = new Formatter('{foo} - {method} - {code}');
$request = new Request('GET', '/');
$response = new Response(200);
$result = $f->format($request, $response, null, ['foo' => 'bar']);
$this->assertEquals('bar - GET - 200', $result);
}
public function testFormatsTimestamps()
{
$f = new Formatter('{ts}');
$request = new Request('GET', '/');
$result = $f->format($request);
// Ensure it matches this format: '2014-03-02T00:18:41+00:00';
$this->assertEquals(1, preg_match('/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}/', $result));
}
public function formatProvider()
{
$request = new Request('PUT', '/', ['x-test' => 'abc'], Stream::factory('foo'));
$response = new Response(200, ['X-Baz' => 'Bar'], Stream::factory('baz'));
$err = new RequestException('Test', $request, $response);
return [
['{request}', [$request], (string) $request],
['{response}', [$request, $response], (string) $response],
['{request} {response}', [$request, $response], $request . ' ' . $response],
// Empty response yields no value
['{request} {response}', [$request], $request . ' '],
['{req_headers}', [$request], "PUT / HTTP/1.1\r\nx-test: abc"],
['{res_headers}', [$request, $response], "HTTP/1.1 200 OK\r\nX-Baz: Bar"],
['{res_headers}', [$request], 'NULL'],
['{req_body}', [$request], 'foo'],
['{res_body}', [$request, $response], 'baz'],
['{res_body}', [$request], 'NULL'],
['{method}', [$request], $request->getMethod()],
['{url}', [$request], $request->getUrl()],
['{resource}', [$request], $request->getResource()],
['{req_version}', [$request], $request->getProtocolVersion()],
['{res_version}', [$request, $response], $response->getProtocolVersion()],
['{res_version}', [$request], 'NULL'],
['{host}', [$request], $request->getHost()],
['{hostname}', [$request, $response], gethostname()],
['{hostname}{hostname}', [$request, $response], gethostname() . gethostname()],
['{code}', [$request, $response], $response->getStatusCode()],
['{code}', [$request], 'NULL'],
['{phrase}', [$request, $response], $response->getReasonPhrase()],
['{phrase}', [$request], 'NULL'],
['{error}', [$request, $response, $err], 'Test'],
['{error}', [$request], 'NULL'],
['{req_header_x-test}', [$request], 'abc'],
['{req_header_x-not}', [$request], ''],
['{res_header_X-Baz}', [$request, $response], 'Bar'],
['{res_header_x-not}', [$request, $response], ''],
['{res_header_X-Baz}', [$request], 'NULL'],
];
}
/**
* @dataProvider formatProvider
*/
public function testFormatsMessages($template, $args, $result)
{
$f = new Formatter($template);
$this->assertEquals((string) $result, call_user_func_array(array($f, 'format'), $args));
}
}
|