@@ -32,62 +32,61 @@ function it_is_a_plugin()
32
32
}
33
33
34
34
function it_appends_base_uri (
35
- UriFactory $ uriFactory ,
36
- RequestInterface $ request ,
37
35
ResponseInterface $ response ,
38
- UriInterface $ uri ,
36
+ RequestInterface $ request ,
39
37
RequestInterface $ modifiedRequest ,
38
+ UriInterface $ baseUri ,
39
+ UriInterface $ inputUri ,
40
40
UriInterface $ modifiedUri
41
41
) {
42
- $ uriFactory ->createUri ('http://httplug.io/bar ' )->willReturn ($ modifiedUri );
43
- $ this ->beConstructedWith ($ uriFactory , 'http://httplug.io/ ' );
44
-
45
- $ request ->getUri ()->shouldBeCalled ()->willReturn ($ uri );
46
- $ uri ->__toString ()->shouldBeCalled ()->willReturn ('bar ' );
47
- $ request ->withUri ($ modifiedUri )->shouldBeCalled ()->willReturn ($ modifiedRequest );
48
- $ modifiedRequest ->getUri ()->willReturn ($ modifiedUri );
42
+ $ inputUri ->__toString ()->shouldBeCalled ()->willReturn ('biz ' );
43
+ $ baseUri ->__toString ()->willReturn ('http://httplug.io/bar/ ' );
44
+ $ baseUri ->getPath ()->shouldBeCalled ()->willReturn ('/bar/ ' );
45
+ $ baseUri ->getQuery ()->shouldBeCalled ()->willReturn ('' );
49
46
50
- $ next = function (RequestInterface $ receivedRequest ) use ($ modifiedUri , $ response ) {
51
- if (Argument::is ($ modifiedUri ->getWrappedObject ())->scoreArgument ($ receivedRequest ->getUri ())) {
52
- return new FulfilledPromise ($ response ->getWrappedObject ());
53
- }
54
- };
47
+ $ baseUri ->withPath ('/bar/biz ' )->shouldBeCalled ()->willReturn ($ modifiedUri );
55
48
56
- $ finalPromise = $ this ->handleRequest ( $ request , $ next , function () {} );
57
- $ finalPromise -> shouldReturnAnInstanceOf ( ' Http\Promise\FulfilledPromise ' );
49
+ $ this ->beConstructedWith ( $ baseUri );
50
+ $ this -> valdateReturnValue ( $ request , $ modifiedRequest , $ inputUri , $ modifiedUri , $ response );
58
51
}
59
52
60
- function it_replaces_path_on_base_uri (
61
- UriFactory $ uriFactory ,
62
- RequestInterface $ request ,
53
+ function it_appends_base_uri_with_query (
63
54
ResponseInterface $ response ,
64
- UriInterface $ uri ,
55
+ RequestInterface $ request ,
65
56
RequestInterface $ modifiedRequest ,
57
+ UriInterface $ baseUri ,
58
+ UriInterface $ inputUri ,
66
59
UriInterface $ modifiedUri
67
60
) {
68
- $ baseUri = 'http://httplug.io/ ' ;
69
- $ uriFactory ->createUri ($ baseUri )->willReturn ($ modifiedUri );
70
- $ this ->beConstructedWith ($ uriFactory , $ baseUri );
61
+ $ inputUri ->__toString ()->shouldBeCalled ()->willReturn ('&a=b&c=d ' );
62
+ $ baseUri ->__toString ()->willReturn ('http://httplug.io/bar/ ' );
63
+ $ baseUri ->getPath ()->willReturn ('/bar/ ' );
64
+ $ baseUri ->getQuery ()->willReturn ('foo=bar ' );
71
65
72
- $ request ->getUri ()->shouldBeCalled ()->willReturn ($ uri );
73
- $ uri ->__toString ()->shouldBeCalled ()->willReturn ('/foo ' );
74
- $ uri ->getPath ()->shouldBeCalled ()->willReturn ('/foo ' );
75
- $ uri ->getQuery ()->shouldBeCalled ()->willReturn ('' );
66
+ $ baseUri ->withQuery ('foo=bar&a=b&c=d ' )->shouldBeCalled ()->willReturn ($ modifiedUri );
76
67
77
- $ modifiedUri ->withPath ('/foo ' )->shouldBeCalled ()->willReturn ($ modifiedUri );
78
- $ modifiedUri ->withQuery ('' )->shouldBeCalled ()->willReturn ($ modifiedUri );
68
+ $ this ->beConstructedWith ($ baseUri );
69
+ $ this ->valdateReturnValue ($ request , $ modifiedRequest , $ inputUri , $ modifiedUri , $ response );
70
+ }
79
71
80
- $ request ->withUri ($ modifiedUri )->shouldBeCalled ()->willReturn ($ modifiedRequest );
81
- $ modifiedRequest ->getUri ()->willReturn ($ modifiedUri );
72
+ function it_replaces_path_on_base_uri (
73
+ ResponseInterface $ response ,
74
+ RequestInterface $ request ,
75
+ RequestInterface $ modifiedRequest ,
76
+ UriInterface $ baseUri ,
77
+ UriInterface $ inputUri ,
78
+ UriInterface $ modifiedUri
79
+ ) {
80
+ $ inputUri ->__toString ()->shouldBeCalled ()->willReturn ('/foo ' );
81
+ $ inputUri ->getPath ()->shouldBeCalled ()->willReturn ('/foo ' );
82
+ $ inputUri ->getQuery ()->shouldBeCalled ()->willReturn ('' );
83
+ $ baseUri ->__toString ()->willReturn ('http://httplug.io/bar/ ' );
82
84
83
- $ next = function (RequestInterface $ receivedRequest ) use ($ modifiedUri , $ response ) {
84
- if (Argument::is ($ modifiedUri ->getWrappedObject ())->scoreArgument ($ receivedRequest ->getUri ())) {
85
- return new FulfilledPromise ($ response ->getWrappedObject ());
86
- }
87
- };
85
+ $ baseUri ->withPath ('/foo ' )->shouldBeCalled ()->willReturn ($ modifiedUri );
86
+ $ modifiedUri ->withQuery ('' )->shouldBeCalled ()->willReturn ($ modifiedUri );
88
87
89
- $ finalPromise = $ this ->handleRequest ( $ request , $ next , function () {} );
90
- $ finalPromise -> shouldReturnAnInstanceOf ( ' Http\Promise\FulfilledPromise ' );
88
+ $ this ->beConstructedWith ( $ baseUri );
89
+ $ this -> valdateReturnValue ( $ request , $ modifiedRequest , $ inputUri , $ modifiedUri , $ response );
91
90
}
92
91
93
92
function it_ignores_absolute_url (RequestInterface $ request , UriInterface $ uri )
@@ -98,4 +97,33 @@ function it_ignores_absolute_url(RequestInterface $request, UriInterface $uri)
98
97
$ this ->handleRequest ($ request , function () {}, function () {});
99
98
}
100
99
100
+ /**
101
+ * Make sure the handleRequest function returns what we expect. We expect that if we input a request
102
+ * the output request will have an instance of output uri.
103
+ *
104
+ * @param RequestInterface $inputRequest
105
+ * @param ResponseInterface $dummyResponse
106
+ * @param UriInterface $outputUri
107
+ */
108
+ private function valdateReturnValue (
109
+ RequestInterface $ inputRequest ,
110
+ RequestInterface $ outputRequest ,
111
+ UriInterface $ inputUri ,
112
+ UriInterface $ outputUri ,
113
+ ResponseInterface $ dummyResponse
114
+ ) {
115
+ $ inputRequest ->getUri ()->willReturn ($ inputUri );
116
+ $ inputRequest ->withUri ($ outputUri )->willReturn ($ outputRequest );
117
+ $ outputRequest ->getUri ()->willReturn ($ outputUri );
118
+
119
+ $ next = function (RequestInterface $ receivedRequest ) use ($ outputUri , $ dummyResponse ) {
120
+ if (Argument::is ($ outputUri ->getWrappedObject ())->scoreArgument ($ receivedRequest ->getUri ())) {
121
+ return new FulfilledPromise ($ dummyResponse ->getWrappedObject ());
122
+ }
123
+ };
124
+
125
+ $ finalPromise = $ this ->handleRequest ($ inputRequest , $ next , function () {});
126
+ $ finalPromise ->shouldReturnAnInstanceOf ('Http\Promise\FulfilledPromise ' );
127
+ }
128
+
101
129
}
0 commit comments