@@ -106,7 +106,29 @@ def given(self, provider_state):
106106 self ._provider_state = provider_state
107107 return self
108108
109- def start (self ):
109+ def setup (self ):
110+ """Configure the Mock Service to ready it for a test."""
111+ try :
112+ payload = {
113+ 'description' : self ._description ,
114+ 'provider_state' : self ._provider_state ,
115+ 'request' : self ._request ,
116+ 'response' : self ._response
117+ }
118+
119+ resp = requests .delete (
120+ self .uri + '/interactions' , headers = self .HEADERS )
121+
122+ assert resp .status_code == 200 , resp .content
123+ resp = requests .post (
124+ self .uri + '/interactions' ,
125+ headers = self .HEADERS , json = payload )
126+
127+ assert resp .status_code == 200 , resp .content
128+ except AssertionError :
129+ raise
130+
131+ def start_service (self ):
110132 """Start the external Mock Service."""
111133 command = [
112134 MOCK_SERVICE_PATH ,
@@ -131,7 +153,7 @@ def start(self):
131153 if process .returncode != 0 :
132154 raise RuntimeError ('The Pact mock service failed to start.' )
133155
134- def stop (self ):
156+ def stop_service (self ):
135157 """Stop the external Mock Service."""
136158 command = [MOCK_SERVICE_PATH , 'stop' , '--port={}' .format (self .port )]
137159 popen = Popen (command )
@@ -151,6 +173,28 @@ def upon_receiving(self, scenario):
151173 self ._description = scenario
152174 return self
153175
176+ def verify (self ):
177+ """
178+ Have the mock service verify all interactions occurred.
179+
180+ Calls the mock service to verify that all interactions occurred as
181+ expected, and has it write out the contracts to disk.
182+
183+ :raises AssertionError: When not all interactions are found.
184+ """
185+ resp = requests .get (
186+ self .uri + '/interactions/verification' ,
187+ headers = self .HEADERS )
188+ assert resp .status_code == 200 , resp .content
189+ payload = {
190+ 'consumer' : {'name' : self .consumer .name },
191+ 'provider' : {'name' : self .provider .name },
192+ 'pact_dir' : self .pact_dir
193+ }
194+ resp = requests .post (
195+ self .uri + '/pact' , headers = self .HEADERS , json = payload )
196+ assert resp .status_code == 200 , resp .content
197+
154198 def with_request (self , method , path , body = None , headers = None , query = None ):
155199 """
156200 Define the request the request that the client is expected to perform.
@@ -198,25 +242,7 @@ def __enter__(self):
198242
199243 Sets up the mock service to expect the client requests.
200244 """
201- try :
202- payload = {
203- 'description' : self ._description ,
204- 'provider_state' : self ._provider_state ,
205- 'request' : self ._request ,
206- 'response' : self ._response
207- }
208-
209- resp = requests .delete (
210- self .uri + '/interactions' , headers = self .HEADERS )
211-
212- assert resp .status_code == 200 , resp .content
213- resp = requests .post (
214- self .uri + '/interactions' ,
215- headers = self .HEADERS , json = payload )
216-
217- assert resp .status_code == 200 , resp .content
218- except AssertionError :
219- raise
245+ self .setup ()
220246
221247 def __exit__ (self , exc_type , exc_val , exc_tb ):
222248 """
@@ -228,18 +254,7 @@ def __exit__(self, exc_type, exc_val, exc_tb):
228254 if (exc_type , exc_val , exc_tb ) != (None , None , None ):
229255 return
230256
231- resp = requests .get (
232- self .uri + '/interactions/verification' ,
233- headers = self .HEADERS )
234- assert resp .status_code == 200 , resp .content
235- payload = {
236- 'consumer' : {'name' : self .consumer .name },
237- 'provider' : {'name' : self .provider .name },
238- 'pact_dir' : self .pact_dir
239- }
240- resp = requests .post (
241- self .uri + '/pact' , headers = self .HEADERS , json = payload )
242- assert resp .status_code == 200 , resp .content
257+ self .verify ()
243258
244259
245260class FromTerms (object ):
0 commit comments