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"))))
def verify_user(request): code = request.params.get('id', '').encode('utf-8') details = EDRDetails('code', code) role = request.authenticated_role if not code: passport = request.params.get('passport', '').encode('utf-8') if not passport: return error_handler( request, default_error_status, { "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: return res elif request.registry.cache_db.has(db_key(details.code, "verify")): 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"))) try: response = request.registry.edr_client.get_subject(**details._asdict()) except (requests.exceptions.ReadTimeout, requests.exceptions.ConnectTimeout): return error_handler( request, default_error_status, { "location": "url", "name": "id", "description": [{ u'message': u'Gateway Timeout Error' }] }) return form_edr_response(request, response, details.code)
def test_details(self): """Check data for get_subject_details request""" setup_routing(self.edr_api_app, func=response_code) setup_routing(self.edr_api_app, path='/1.0/subjects/2842335', func=response_details) expected_data = { u"additionalActivityKinds": [{ u"scheme": u"КВЕД", u"id": u"64.92", u"description": u"Інші види кредитування" }, { u"scheme": u"КВЕД", u"id": u"64.99", u"description": u"Надання інших фінансових послуг (крім страхування та пенсійного забезпечення), н. в. і. у." }, { u"scheme": u"КВЕД", u"id": u"66.11", u"description": u"Управління фінансовими ринками" }, { u"scheme": u"КВЕД", u"id": u"66.12", u"description": u"Посередництво за договорами по цінних паперах або товарах" }, { u"scheme": u"КВЕД", u"id": u"66.19", u"description": u"Інша допоміжна діяльність у сфері фінансових послуг, крім страхування та пенсійного забезпечення" }], u"management": u"ЗАГАЛЬНІ ЗБОРИ", u"name": u"ПАТ КБ \"ПРИВАТБАНК\"", u"registrationStatus": u"registered", u"registrationStatusDetails": u"зареєстровано", u"identification": { u"scheme": u"UA-EDR", u"id": u"14360570", u"legalName": u"АКЦІОНЕРНЕ ТОВАРИСТВО КОМЕРЦІЙНИЙ БАНК \"ПРИВАТБАНК\"" }, u"address": { u"postalCode": u"49094", u"countryName": u"УКРАЇНА", u"streetAddress": u"Дніпропетровська обл., місто Дніпропетровськ, Жовтневий район" }, u"founders": [{ u"role_text": u"засновник", u"role": 4, u"name": u"АКЦІОНЕРИ - ЮРИДИЧНІ ТА ФІЗИЧНІ ОСОБИ" }], u"activityKind": { u"scheme": u"КВЕД", u"id": u"64.19", u"description": u"Інші види грошового посередництва" } } response = self.app.get('/verify?id=14360570', expect_errors=True) 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.") else: self.assertTrue(self.redis.exists(db_key("14360570", "details"))) response = self.app.get('/verify?id=14360570') self.assertEqual( response.json, loads(self.redis.get(db_key("14360570", "details")))) self.assertEqual(response.status, '200 OK') self.assertEqual(response.content_type, 'application/json') self.assertEqual(response.json['data'][0], expected_data) self.assertEqual( response.json['meta'], { 'sourceDate': '2017-04-25T11:56:36+00:00', 'detailsSourceDate': ['2017-04-25T11:56:36+00:00'] })