|
2 | 2 |
|
3 | 3 | namespace spec\Xabbuh\XApi\Client\Request;
|
4 | 4 |
|
5 |
| -use Guzzle\Http\Message\RequestInterface; |
6 |
| -use Guzzle\Http\Message\Response; |
7 |
| -use Guzzle\Service\ClientInterface; |
| 5 | +use Http\Client\HttpClient; |
| 6 | +use Http\Message\RequestFactory; |
8 | 7 | use PhpSpec\ObjectBehavior;
|
| 8 | +use Psr\Http\Message\RequestInterface; |
| 9 | +use Psr\Http\Message\ResponseInterface; |
9 | 10 |
|
10 | 11 | class HandlerSpec extends ObjectBehavior
|
11 | 12 | {
|
12 |
| - function let(ClientInterface $client) |
| 13 | + function let(HttpClient $client, RequestFactory $requestFactory) |
13 | 14 | {
|
14 |
| - $this->beConstructedWith($client, '1.0.1'); |
| 15 | + $this->beConstructedWith($client, $requestFactory, 'http://example.com/xapi/', '1.0.1'); |
15 | 16 | }
|
16 | 17 |
|
17 | 18 | function it_throws_an_exception_if_a_request_is_created_with_an_invalid_method()
|
18 | 19 | {
|
19 | 20 | $this->shouldThrow('\InvalidArgumentException')->during('createRequest', array('options', '/xapi/statements'));
|
20 | 21 | }
|
21 | 22 |
|
22 |
| - function it_sets_the_experience_api_version_header_and_the_content_type_header_when_creating_a_request(ClientInterface $client, RequestInterface $request) |
| 23 | + function it_returns_get_request_created_by_the_http_client(RequestFactory $requestFactory, RequestInterface $request) |
23 | 24 | {
|
24 |
| - $client->get('/xapi/statements')->willReturn($request); |
25 |
| - $request->addHeader('X-Experience-API-Version', '1.0.1')->shouldBeCalled(); |
26 |
| - $request->addHeader('Content-Type', 'application/json')->shouldBeCalled(); |
| 25 | + $requestFactory->createRequest('GET', 'http://example.com/xapi/statements', array( |
| 26 | + 'X-Experience-API-Version' => '1.0.1', |
| 27 | + 'Content-Type' => 'application/json', |
| 28 | + ))->willReturn($request); |
27 | 29 |
|
28 |
| - $this->createRequest('get', '/xapi/statements'); |
| 30 | + $this->createRequest('get', '/statements')->shouldReturn($request); |
| 31 | + $this->createRequest('GET', '/statements')->shouldReturn($request); |
29 | 32 | }
|
30 | 33 |
|
31 |
| - function it_sets_basic_auth_data_when_credentials_are_configured_when_creating_a_request(ClientInterface $client, RequestInterface $request) |
| 34 | + function it_returns_post_request_created_by_the_http_client(RequestFactory $requestFactory, RequestInterface $request) |
32 | 35 | {
|
33 |
| - $this->beConstructedWith($client, '1.0.1', 'username', 'password'); |
| 36 | + $requestFactory->createRequest('POST', 'http://example.com/xapi/statements', array( |
| 37 | + 'X-Experience-API-Version' => '1.0.1', |
| 38 | + 'Content-Type' => 'application/json', |
| 39 | + ))->willReturn($request); |
34 | 40 |
|
35 |
| - $client->get('/xapi/statements')->willReturn($request); |
36 |
| - $request->addHeader('X-Experience-API-Version', '1.0.1')->shouldBeCalled(); |
37 |
| - $request->addHeader('Content-Type', 'application/json')->shouldBeCalled(); |
38 |
| - $request->setAuth('username', 'password')->shouldBeCalled(); |
39 |
| - |
40 |
| - $this->createRequest('get', '/xapi/statements'); |
41 |
| - } |
42 |
| - |
43 |
| - function it_returns_get_request_created_by_the_http_client(ClientInterface $client, RequestInterface $request) |
44 |
| - { |
45 |
| - $client->get('/xapi/statements')->willReturn($request); |
46 |
| - |
47 |
| - $this->createRequest('get', '/xapi/statements')->shouldReturn($request); |
48 |
| - $this->createRequest('GET', '/xapi/statements')->shouldReturn($request); |
49 |
| - } |
50 |
| - |
51 |
| - function it_returns_post_request_created_by_the_http_client(ClientInterface $client, RequestInterface $request) |
52 |
| - { |
53 |
| - $client->post('/xapi/statements', null, 'body')->willReturn($request); |
54 |
| - |
55 |
| - $this->createRequest('post', '/xapi/statements', array(), 'body')->shouldReturn($request); |
56 |
| - $this->createRequest('POST', '/xapi/statements', array(), 'body')->shouldReturn($request); |
| 41 | + $this->createRequest('post', '/statements', array(), 'body')->shouldReturn($request); |
| 42 | + $this->createRequest('POST', '/statements', array(), 'body')->shouldReturn($request); |
57 | 43 | }
|
58 | 44 |
|
59 |
| - function it_returns_put_request_created_by_the_http_client(ClientInterface $client, RequestInterface $request) |
| 45 | + function it_returns_put_request_created_by_the_http_client(RequestFactory $requestFactory, RequestInterface $request) |
60 | 46 | {
|
61 |
| - $client->put('/xapi/statements', null, 'body')->willReturn($request); |
| 47 | + $requestFactory->createRequest('PUT', 'http://example.com/xapi/statements', array( |
| 48 | + 'X-Experience-API-Version' => '1.0.1', |
| 49 | + 'Content-Type' => 'application/json', |
| 50 | + ))->willReturn($request); |
62 | 51 |
|
63 |
| - $this->createRequest('put', '/xapi/statements', array(), 'body')->shouldReturn($request); |
64 |
| - $this->createRequest('PUT', '/xapi/statements', array(), 'body')->shouldReturn($request); |
| 52 | + $this->createRequest('put', '/statements', array(), 'body')->shouldReturn($request); |
| 53 | + $this->createRequest('PUT', '/statements', array(), 'body')->shouldReturn($request); |
65 | 54 | }
|
66 | 55 |
|
67 |
| - function it_returns_delete_request_created_by_the_http_client(ClientInterface $client, RequestInterface $request) |
| 56 | + function it_returns_delete_request_created_by_the_http_client(RequestFactory $requestFactory, RequestInterface $request) |
68 | 57 | {
|
69 |
| - $client->delete('/xapi/statements')->willReturn($request); |
| 58 | + $requestFactory->createRequest('DELETE', 'http://example.com/xapi/statements', array( |
| 59 | + 'X-Experience-API-Version' => '1.0.1', |
| 60 | + 'Content-Type' => 'application/json', |
| 61 | + ))->willReturn($request); |
70 | 62 |
|
71 |
| - $this->createRequest('delete', '/xapi/statements')->shouldReturn($request); |
72 |
| - $this->createRequest('DELETE', '/xapi/statements')->shouldReturn($request); |
| 63 | + $this->createRequest('delete', '/statements')->shouldReturn($request); |
| 64 | + $this->createRequest('DELETE', '/statements')->shouldReturn($request); |
73 | 65 | }
|
74 | 66 |
|
75 |
| - function it_throws_an_access_denied_exception_when_a_401_status_code_is_returned(RequestInterface $request, Response $response) |
| 67 | + function it_throws_an_access_denied_exception_when_a_401_status_code_is_returned(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
76 | 68 | {
|
77 |
| - $request->send()->willReturn($response); |
| 69 | + $client->sendRequest($request)->willReturn($response); |
78 | 70 | $response->getStatusCode()->willReturn(401);
|
79 |
| - $response->getBody(true)->willReturn('body'); |
| 71 | + $response->getBody()->willReturn('body'); |
80 | 72 |
|
81 | 73 | $this->shouldThrow('Xabbuh\XApi\Common\Exception\AccessDeniedException')->during('executeRequest', array($request, array(200)));
|
82 | 74 | }
|
83 | 75 |
|
84 |
| - function it_throws_an_access_denied_exception_when_a_403_status_code_is_returned(RequestInterface $request, Response $response) |
| 76 | + function it_throws_an_access_denied_exception_when_a_403_status_code_is_returned(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
85 | 77 | {
|
86 |
| - $request->send()->willReturn($response); |
| 78 | + $client->sendRequest($request)->willReturn($response); |
87 | 79 | $response->getStatusCode()->willReturn(403);
|
88 |
| - $response->getBody(true)->willReturn('body'); |
| 80 | + $response->getBody()->willReturn('body'); |
89 | 81 |
|
90 | 82 | $this->shouldThrow('Xabbuh\XApi\Common\Exception\AccessDeniedException')->during('executeRequest', array($request, array(200)));
|
91 | 83 | }
|
92 | 84 |
|
93 |
| - function it_throws_a_not_found_exception_when_a_404_status_code_is_returned(RequestInterface $request, Response $response) |
| 85 | + function it_throws_a_not_found_exception_when_a_404_status_code_is_returned(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
94 | 86 | {
|
95 |
| - $request->send()->willReturn($response); |
| 87 | + $client->sendRequest($request)->willReturn($response); |
96 | 88 | $response->getStatusCode()->willReturn(404);
|
97 |
| - $response->getBody(true)->willReturn('body'); |
| 89 | + $response->getBody()->willReturn('body'); |
98 | 90 |
|
99 | 91 | $this->shouldThrow('Xabbuh\XApi\Common\Exception\NotFoundException')->during('executeRequest', array($request, array(200)));
|
100 | 92 | }
|
101 | 93 |
|
102 |
| - function it_throws_a_conflict_exception_when_a_409_status_code_is_returned(RequestInterface $request, Response $response) |
| 94 | + function it_throws_a_conflict_exception_when_a_409_status_code_is_returned(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
103 | 95 | {
|
104 |
| - $request->send()->willReturn($response); |
| 96 | + $client->sendRequest($request)->willReturn($response); |
105 | 97 | $response->getStatusCode()->willReturn(409);
|
106 |
| - $response->getBody(true)->willReturn('body'); |
| 98 | + $response->getBody()->willReturn('body'); |
107 | 99 |
|
108 | 100 | $this->shouldThrow('Xabbuh\XApi\Common\Exception\ConflictException')->during('executeRequest', array($request, array(200)));
|
109 | 101 | }
|
110 | 102 |
|
111 |
| - function it_throws_an_xapi_exception_when_an_unexpected_status_code_is_returned(RequestInterface $request, Response $response) |
| 103 | + function it_throws_an_xapi_exception_when_an_unexpected_status_code_is_returned(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
112 | 104 | {
|
113 |
| - $request->send()->willReturn($response); |
| 105 | + $client->sendRequest($request)->willReturn($response); |
114 | 106 | $response->getStatusCode()->willReturn(204);
|
115 |
| - $response->getBody(true)->willReturn('body'); |
| 107 | + $response->getBody()->willReturn('body'); |
116 | 108 |
|
117 | 109 | $this->shouldThrow('Xabbuh\XApi\Common\Exception\XApiException')->during('executeRequest', array($request, array(200)));
|
118 | 110 | }
|
119 | 111 |
|
120 |
| - function it_returns_the_response_on_success(RequestInterface $request, Response $response) |
| 112 | + function it_returns_the_response_on_success(HttpClient $client, RequestInterface $request, ResponseInterface $response) |
121 | 113 | {
|
122 |
| - $request->send()->willReturn($response); |
| 114 | + $client->sendRequest($request)->willReturn($response); |
123 | 115 | $response->getStatusCode()->willReturn(200);
|
124 |
| - $response->getBody(true)->willReturn('body'); |
| 116 | + $response->getBody()->willReturn('body'); |
125 | 117 |
|
126 | 118 | $this->executeRequest($request, array(200))->shouldReturn($response);
|
127 | 119 | }
|
|
0 commit comments