Skip to content

Commit

Permalink
Merge pull request #46 from ITVaan/bugfix
Browse files Browse the repository at this point in the history
Bugfix
  • Loading branch information
kroman0 committed Jul 28, 2017
2 parents 309191e + f8a2d95 commit 22a10d9
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 22 deletions.
40 changes: 29 additions & 11 deletions openprocurement/integrations/edr/tests/verify.py
Expand Up @@ -199,7 +199,7 @@ def test_bot_verify(self):
self.assertEqual(response.status, '200 OK')
self.assertTrue(self.redis.exists(db_key("14360570", "verify")))
self.app.authorization = ('Basic', ('robot', 'robot'))
response = self.app.get('/verify?id=14360570')
response = self.app.get('/verify?id=14360570', expect_errors=True)
expected_details_data = {u"additionalActivityKinds": [
{u"scheme": u"КВЕД", u"id": u"64.92", u"description": u"Інші види кредитування"},
{u"scheme": u"КВЕД", u"id": u"64.99",
Expand All @@ -219,11 +219,17 @@ def test_bot_verify(self):
{u"role_text": u"засновник", u"role": 4, u"name": u"АКЦІОНЕРИ - ЮРИДИЧНІ ТА ФІЗИЧНІ ОСОБИ"}],
u"activityKind": {u"scheme": u"КВЕД", u"id": u"64.19",
u"description": u"Інші види грошового посередництва"}}
self.assertEqual(response.json['data'][0], expected_details_data)
response = self.app.get('/verify?id=14360570')
self.assertTrue(self.redis.exists(db_key("14360570", "details")))
self.assertEqual(response.json, loads(self.redis.get(db_key("14360570", "details"))))
self.assertEqual(loads(self.redis.get(db_key("14360570", "details")))['data'][0], expected_details_data)
if SANDBOX_MODE:
self.assertEqual(response.status, '404 Not Found')
self.assertEqual(response.json['errors'][0]['description'][0]['error']['errorDetails'],
"Couldn't find this code in EDR.")
self.assertFalse(self.redis.exists(db_key("14360570", "details")))
else:
self.assertEqual(response.json['data'][0], expected_details_data)
response = self.app.get('/verify?id=14360570')
self.assertTrue(self.redis.exists(db_key("14360570", "details")))
self.assertEqual(response.json, loads(self.redis.get(db_key("14360570", "details"))))
self.assertEqual(loads(self.redis.get(db_key("14360570", "details")))['data'][0], expected_details_data)

def test_not_acceptable(self):
"""Check 406 status EDR response"""
Expand Down Expand Up @@ -413,7 +419,6 @@ def test_details(self):
u"description": u"Інші види грошового посередництва"}}
response = self.app.get('/verify?id=14360570', expect_errors=True)
if SANDBOX_MODE:
self.assertTrue(self.redis.exists(db_key("14360570", "verify")))
self.assertEqual(response.status, '404 Not Found')
self.assertEqual(response.json['errors'][0]['description'][0]['error']['errorDetails'],
"Couldn't find this code in EDR.")
Expand Down Expand Up @@ -608,10 +613,6 @@ def test_sandbox_mode_data_details(self):
self.assertEqual(response.json['data'], example_data)
self.assertEqual(iso8601.parse_date(response.json['meta']['sourceDate']).replace(second=0, microsecond=0),
datetime.datetime.now(tz=TZ).replace(second=0, microsecond=0))
self.assertTrue(self.redis.exists(db_key("00037256", "details")))
response = self.app.get('/verify?id=00037256')
self.assertEqual(response.json['data'], example_data)
self.assertEqual(response.json, loads(self.redis.get("00037256_details_sandbox")))
else:
setup_routing(self.edr_api_app, func=sandbox_mode_data)
setup_routing(self.edr_api_app, path='/1.0/subjects/999186', func=sandbox_mode_data_details)
Expand All @@ -621,3 +622,20 @@ def test_sandbox_mode_data_details(self):
self.assertEqual(response.json['data'][0], example_data[0])
self.assertEqual(response.json['meta'], {'sourceDate': '2017-04-25T11:56:36+00:00',
'detailsSourceDate': ['2017-04-25T11:56:36+00:00']})

def test_invalid_code(self):
"""Check invalid EDRPOU(IPN) number 123"""
setup_routing(self.edr_api_app, func=response_code)
response = self.app.get('/verify?id=123', status=404)
self.assertEqual(response.content_type, 'application/json')
self.assertEqual(response.status, '404 Not Found')
expected_result = [{u'error': {u'errorDetails': u"Couldn't find this code in EDR.", u'code': u'notFound'},
u'meta': {u'sourceDate': u'2017-04-25T11:56:36+00:00'}}]
if SANDBOX_MODE:
self.assertEqual(response.json['errors'][0]['description'][0]['error']['errorDetails'],
"Couldn't find this code in EDR.")
else:
self.assertTrue(self.redis.exists(db_key("123", "verify")))
self.assertEqual(response.json['errors'][0]['description'], expected_result)
response = self.app.get('/verify?id=123', status=404)
self.assertEqual(response.json, loads(self.redis.get(db_key("123", "verify"))))
11 changes: 3 additions & 8 deletions openprocurement/integrations/edr/utils.py
Expand Up @@ -334,15 +334,11 @@ def get_sandbox_data(request, code):
if request.authenticated_role == 'robots':
res = get_sandbox_details(request, code)
if res.get("errors"):
request.registry.cache_db.put(db_key(code, "verify"), json.dumps(res),
request.registry.time_to_live_negative)
return error_handler(request, 404, res["errors"][0])
request.registry.cache_db.put(db_key(code, "details"), json.dumps(res), request.registry.time_to_live)
elif TEST_DATA_VERIFY.get(code):
LOGGER.info('Return test data for {} for platform'.format(code))
res = {'data': [prepare_data(d) for d in TEST_DATA_VERIFY[code]],
'meta': {'sourceDate': datetime.now(tz=TZ).isoformat()}}
request.registry.cache_db.put(db_key(code, "verify"), json.dumps(res), request.registry.time_to_live)
return res


Expand Down Expand Up @@ -396,8 +392,6 @@ def cached_details(request, code):
if request.registry.cache_db.has(db_key(code, "details")):
LOGGER.info("Code {} was found in cache at {}".format(code, db_key(code, "details")))
redis_data = json.loads(request.registry.cache_db.get(db_key(code, "details")))
if redis_data.get("errors"):
return error_handler(request, default_error_status, redis_data["errors"][0])
return redis_data
elif request.registry.cache_db.has(db_key(code, "verify")):
redis_data = json.loads(request.registry.cache_db.get(db_key(code, "verify")))
Expand Down Expand Up @@ -428,8 +422,9 @@ def form_edr_response(request, response, code):
request.registry.cache_db.put(db_key(code, "verify"), json.dumps(res), request.registry.time_to_live)
if request.authenticated_role == 'robots': # get details for edr-bot
data_details = user_details(request, [obj['id'] for obj in data])
request.registry.cache_db.put(db_key(code, "details"), json.dumps(data_details),
request.registry.time_to_live)
if not data_details.get("errors"):
request.registry.cache_db.put(db_key(code, "details"), json.dumps(data_details),
request.registry.time_to_live)
return data_details
return res
else:
Expand Down
6 changes: 3 additions & 3 deletions openprocurement/integrations/edr/views/verify.py
Expand Up @@ -20,6 +20,9 @@ def verify_user(request):
{"location": "url", "name": "id",
"description": [{u'message': u'Wrong name of the GET parameter'}]})
details = EDRDetails('passport', passport)
data = get_sandbox_data(request, code) # return test data if SANDBOX_MODE=True and data exists for given code
if data:
return data
if role == "robots":
res = cached_details(request, details.code)
if res:
Expand All @@ -28,9 +31,6 @@ def verify_user(request):
return cached_verify(request, details.code)
LOGGER.info("Code {} was not found in cache at {}".format(
details.code, db_key(details.code, "details" if role == "robots" else "verify")))
data = get_sandbox_data(request, code) # return test data if SANDBOX_MODE=True and data exists for given code
if data:
return data
try:
response = request.registry.edr_client.get_subject(**details._asdict())
except (requests.exceptions.ReadTimeout,
Expand Down

0 comments on commit 22a10d9

Please sign in to comment.