1
1
<?php
2
2
3
3
use Codeception \Configuration ;
4
+ use GuzzleHttp \Client ;
5
+ use GuzzleHttp \Psr7 \Request ;
4
6
use Mcustiel \Phiremock \Client \Phiremock ;
7
+ use function Mcustiel \Phiremock \Client \postRequest ;
8
+ use function Mcustiel \Phiremock \Client \respond ;
5
9
use Mcustiel \Phiremock \Client \Utils \A ;
6
10
use Mcustiel \Phiremock \Client \Utils \Is ;
7
11
use Mcustiel \Phiremock \Client \Utils \Respond ;
8
- use function Mcustiel \Phiremock \Client \{postRequest , respond };
9
- use GuzzleHttp \Client ;
10
12
11
13
class BasicTestCest
12
14
{
@@ -15,7 +17,12 @@ class BasicTestCest
15
17
16
18
public function _before (AcceptanceTester $ I )
17
19
{
18
- $ this ->guzzle = new Client (['http_errors ' => false ]);
20
+ $ this ->guzzle = new Client (
21
+ [
22
+ 'base_uri ' => 'http://localhost:18080 ' ,
23
+ 'http_errors ' => false
24
+ ]
25
+ );
19
26
}
20
27
21
28
public function severalExceptatationsInOneTest (AcceptanceTester $ I )
@@ -49,7 +56,7 @@ public function severalExceptatationsInOneTest(AcceptanceTester $I)
49
56
)
50
57
);
51
58
foreach (['potato ' , 'tomato ' , 'banana ' , 'coconut ' ] as $ item ) {
52
- $ response = file_get_contents ( ' http://localhost:18080/ ' . $ item );
59
+ $ response = ( string ) $ this -> guzzle -> get ( " / { $ item}" )-> getBody ( );
53
60
$ I ->assertEquals ('I am a ' . $ item , $ response );
54
61
}
55
62
$ I ->seeRemoteServiceReceived (4 , A::getRequest ());
@@ -61,19 +68,37 @@ public function severalExceptatationsInOneTest(AcceptanceTester $I)
61
68
$ I ->seeRemoteServiceReceived (0 , A::getRequest ());
62
69
}
63
70
71
+ public function shouldSetTheScenarioState (AcceptanceTester $ I ): void
72
+ {
73
+ $ I ->expectARequestToRemoteServiceWithAResponse (
74
+ Phiremock::on (
75
+ A::getRequest ()
76
+ ->andUrl (Is::equalTo ('/potato ' ))
77
+ ->andScenarioState ('tomatoScenario ' , 'potatoState ' )
78
+ )->then (
79
+ Respond::withStatusCode (203 )->andBody ('I am a potato ' )
80
+ )
81
+ );
82
+ $ response = $ this ->guzzle ->get ('/potato ' );
83
+ $ I ->assertSame (404 , $ response ->getStatusCode ());
84
+ $ I ->setScenarioState ('tomatoScenario ' , 'potatoState ' );
85
+ $ response = $ this ->guzzle ->get ('/potato ' );
86
+ $ I ->assertSame (203 , $ response ->getStatusCode ());
87
+ $ I ->assertSame ('I am a potato ' , (string ) $ response ->getBody ());
88
+ }
89
+
64
90
public function shouldCreateAnExpectationWithBinaryResponseTest (AcceptanceTester $ I )
65
91
{
66
92
$ responseContents = file_get_contents (Configuration::dataDir () . '/fixtures/silhouette-1444982_640.png ' );
67
93
$ I ->expectARequestToRemoteServiceWithAResponse (
68
94
Phiremock::on (
69
- A::getRequest ()->andUrl (Is::equalTo ('/show-me-the-video ' ))
70
- )->then (
71
- respond (200 )->andBinaryBody ($ responseContents )
95
+ A::getRequest ()->andUrl (Is::equalTo ('/show-me-the-video ' ))
96
+ )->then (
97
+ respond (200 )->andBinaryBody ($ responseContents )
72
98
)
73
99
);
74
100
75
-
76
- $ responseBody = file_get_contents ('http://localhost:18080/show-me-the-video ' );
101
+ $ responseBody = (string ) $ this ->guzzle ->get ('/show-me-the-video ' )->getBody ();
77
102
$ I ->assertEquals ($ responseContents , $ responseBody );
78
103
}
79
104
@@ -84,14 +109,13 @@ public function testGrabRequestsMadeToRemoteService(AcceptanceTester $I)
84
109
Phiremock::on ($ requestBuilder )->then (respond (200 ))
85
110
);
86
111
87
- $ options = array (
88
- 'http ' => array (
89
- 'header ' => 'Content-Type: application/x-www-form-urlencoded ' ,
90
- 'method ' => 'POST ' ,
91
- 'content ' => http_build_query (['a ' => 'b ' ])
92
- )
112
+ $ request = new Request (
113
+ 'POST ' ,
114
+ '/some/url ' ,
115
+ ['Content-Type ' => 'application/x-www-form-urlencoded ' ],
116
+ http_build_query (['a ' => 'b ' ])
93
117
);
94
- file_get_contents ( ' http://localhost:18080/some/url ' , false , stream_context_create ( $ options ) );
118
+ $ this -> guzzle -> send ( $ request );
95
119
96
120
$ requests = $ I ->grabRequestsMadeToRemoteService ($ requestBuilder );
97
121
$ I ->assertCount (1 , $ requests );
@@ -101,7 +125,7 @@ public function testGrabRequestsMadeToRemoteService(AcceptanceTester $I)
101
125
102
126
$ headers = (array ) $ first ->headers ;
103
127
$ expectedSubset = [
104
- 'Host ' => ['localhost:18080 ' ],
128
+ 'Host ' => ['localhost:18080 ' ],
105
129
'Content-Type ' => ['application/x-www-form-urlencoded ' ]
106
130
];
107
131
@@ -118,12 +142,12 @@ public function testGrabRequestsMadeToRemoteService(AcceptanceTester $I)
118
142
public function testAnnotationExpectationIsLoaded (AcceptanceTester $ I )
119
143
{
120
144
$ requestBuilder = A::getRequest ()->andUrl (Is::equalTo ('/expectation/1 ' ));
121
- $ response = file_get_contents ( ' http://localhost:18080/ expectation/1 ' );
145
+ $ response = ( string ) $ this -> guzzle -> get ( ' / expectation/1 ')-> getBody ( );
122
146
123
147
$ requests = $ I ->grabRequestsMadeToRemoteService ($ requestBuilder );
124
148
$ I ->assertCount (1 , $ requests );
125
149
126
- $ I ->assertEquals (" response " , $ response );
150
+ $ I ->assertEquals (' response ' , $ response );
127
151
}
128
152
129
153
/**
@@ -134,12 +158,12 @@ public function testAnnotationExpectationIsLoaded(AcceptanceTester $I)
134
158
public function testMultipleAnnotationsAreLoaded (AcceptanceTester $ I )
135
159
{
136
160
$ requestBuilder = A::getRequest ()->andUrl (Is::matching ('/ \\/expectation \\/ \\d+/ ' ));
137
- file_get_contents ( ' http://localhost:18080 /expectation/1 ' );
138
- file_get_contents ( ' http://localhost:18080 /expectation/2 ' );
161
+ $ this -> guzzle -> get ( ' /expectation/1 ' );
162
+ $ this -> guzzle -> get ( ' /expectation/2 ' );
139
163
$ requests = $ I ->grabRequestsMadeToRemoteService ($ requestBuilder );
140
164
$ I ->assertCount (2 , $ requests );
141
165
}
142
-
166
+
143
167
/**
144
168
* @param AcceptanceTester $I
145
169
* @expectation("subdirectory/test_first_get")
@@ -148,7 +172,8 @@ public function testAnnotationInSubdirectoryIsLoaded(AcceptanceTester $I)
148
172
{
149
173
$ conditionsBuilder = A::getRequest ();
150
174
$ requestBuilder = $ conditionsBuilder ->andMethod (Is::equalTo ('GET ' ))->andUrl (Is::equalTo ('/expectation/subdirectory ' ));
151
- file_get_contents ('http://localhost:18080/expectation/subdirectory ' );
175
+ $ responseBody = (string ) $ this ->guzzle ->get ('/expectation/subdirectory ' )->getBody ();
176
+ $ I ->assertSame ('response ' , $ responseBody );
152
177
$ requests = $ I ->grabRequestsMadeToRemoteService ($ requestBuilder );
153
178
$ I ->assertCount (1 , $ requests );
154
179
}
0 commit comments