@@ -187,51 +187,72 @@ async def test_distance_filter(cli, db_conn, company, params, con_distances):
187
187
)
188
188
189
189
url = str (cli .server .app .router ['contractor-list' ].url_for (company = company .public_key ))
190
- r = await cli .get (url , params = params , headers = {'X-Forwarded-For' : '1.1.1.1' })
190
+ r = await cli .get (url , params = params , headers = {'X-Forwarded-For' : '1.1.1.1' , 'CF-IPCountry' : 'GB' })
191
191
assert r .status == 200 , await r .text ()
192
192
obj = await r .json ()
193
193
assert list (map (itemgetter ('link' , 'distance' ), obj ['results' ])) == con_distances
194
194
195
195
196
196
async def test_geocode_cache (cli , other_server , company ):
197
197
url = str (cli .server .app .router ['contractor-list' ].url_for (company = company .public_key ))
198
- r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.1' })
198
+ country = {'CF-IPCountry' : 'GB' }
199
+ r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.1' , ** country })
199
200
assert r .status == 200 , await r .text ()
200
- assert other_server .app ['request_log' ] == [('geocode' , 'SW1W 0EN' )]
201
+ assert other_server .app ['request_log' ] == [('geocode' , 'SW1W 0EN|uk ' )]
201
202
obj = await r .json ()
202
203
assert {
203
204
'pretty' : 'Lower Grosvenor Pl, Westminster, London SW1W 0EN, UK' ,
204
205
'lat' : 51.4980603 ,
205
206
'lng' : - 0.14505
206
207
} == obj ['location' ]
207
208
208
- r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.2' })
209
+ r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.2' , ** country })
209
210
assert r .status == 200 , await r .text ()
210
- r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.3' })
211
+ r = await cli .get (url , params = {'location' : 'SW1W 0EN' }, headers = {'X-Forwarded-For' : '1.1.1.3' , ** country })
211
212
assert r .status == 200 , await r .text ()
212
- assert other_server .app ['request_log' ] == [('geocode' , 'SW1W 0EN' )]
213
+ assert other_server .app ['request_log' ] == [('geocode' , 'SW1W 0EN|uk ' )]
213
214
214
215
215
216
async def test_geocode_rate_limit (cli , other_server , company ):
216
217
url = str (cli .server .app .router ['contractor-list' ].url_for (company = company .public_key ))
218
+ country = {'CF-IPCountry' : 'GB' }
217
219
for i in range (10 ):
218
- r = await cli .get (url , params = {'location' : f'SW1W { i } EN' }, headers = {'X-Forwarded-For' : '1.1.1.1' })
220
+ r = await cli .get (url , params = {'location' : f'SW1W { i } EN' }, headers = {'X-Forwarded-For' : '1.1.1.1' , ** country })
219
221
assert r .status == 200 , await r .text ()
220
- r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.1' })
222
+ assert len (other_server .app ['request_log' ]) == 10
223
+ r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.1' , ** country })
221
224
assert r .status == 429 , await r .text ()
222
- r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.1' })
225
+ assert len (other_server .app ['request_log' ]) == 10
226
+ r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.1' , ** country })
223
227
assert r .status == 429 , await r .text ()
224
- r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.2' })
228
+ assert len (other_server .app ['request_log' ]) == 10
229
+ r = await cli .get (url , params = {'location' : 'SW1W 1ENx' }, headers = {'X-Forwarded-For' : '1.1.1.2' , ** country })
225
230
assert r .status == 200 , await r .text ()
226
231
assert len (other_server .app ['request_log' ]) == 11
227
232
228
233
229
234
async def test_geocode_error (cli , other_server , company ):
230
235
url = str (cli .server .app .router ['contractor-list' ].url_for (company = company .public_key ))
231
- r = await cli .get (url , params = {'location' : '500' }, headers = {'X-Forwarded-For' : '1.1.1.1' })
236
+ r = await cli .get (url , params = {'location' : '500' }, headers = {'X-Forwarded-For' : '1.1.1.1' , 'CF-IPCountry' : 'GB' })
232
237
assert r .status == 500 , await r .text ()
233
238
234
239
240
+ async def test_geocode_other_country (cli , other_server , company ):
241
+ r = await cli .get (
242
+ cli .server .app .router ['contractor-list' ].url_for (company = company .public_key ),
243
+ params = {'location' : 'SW1W 0EN' },
244
+ headers = {'X-Forwarded-For' : '1.1.1.1' , 'CF-IPCountry' : 'US' }
245
+ )
246
+ assert r .status == 200 , await r .text ()
247
+ obj = await r .json ()
248
+ assert {
249
+ 'pretty' : 'Lower Grosvenor Pl, Westminster, London SW1W 0EN, UK' ,
250
+ 'lat' : 51.4980603 ,
251
+ 'lng' : - 0.14505 ,
252
+ } == obj ['location' ]
253
+ assert other_server .app ['request_log' ] == [('geocode' , 'SW1W 0EN|us' )]
254
+
255
+
235
256
async def create_labels (db_conn , company ):
236
257
await db_conn .execute (
237
258
sa_labels
0 commit comments