def test__authenticate(self): failed_request = mock.Mock( **{ "status_code": 401, "json.return_value": { "TransactionResult": { "SeverityText": "Warning", "ResultID": "SC001", "ResultText": "Invalid Credentials", "ResultMessage": { "ResultDescription": "Your user credentials are invalid. Please contact " "your D&B Representative or your local Customer " "Service Center." }, }, "TransactionDetail": { "ApplicationTransactionID": "", "ServiceTransactionID": "Id-2aff06563f327800e6661f003aac2627", "TransactionTimestamp": "2015-09-26T16:25:14.193", }, }, } ) success_request = mock.Mock( **{ "status_code": 200, "json.return_value": { "TransactionResult": { "SeverityText": "Information", "ResultID": "CM000", "ResultText": "Success", "ResultMessage": {"ResultDescription": "Success"}, }, "AuthenticationDetail": {"Token": self.auth_token}, "TransactionDetail": { "ApplicationTransactionID": "", "ServiceTransactionID": "Id-6e0007569042780011671f00ca2011db", "TransactionTimestamp": "2015-09-26T16:30:38.160", }, }, } ) with mock.patch("dnb_direct.client.requests") as requests_mock: # Failed auth requests_mock.post.return_value = failed_request client = DirectClient("foo", "bar") self.assertRaises(DnbAuthenticationError, lambda: client._authenticate()) # Successful auth requests_mock.post.return_value = success_request client = DirectClient("foo", "bar") self.assertEqual(client._authenticate(), self.auth_token) requests_mock.post.assert_called_with( "https://maxcvservices.dnb.com/Authentication/V2.0/", headers={"x-dnb-user": "******", "x-dnb-pwd": "bar"} )
def test_call_api(self): failed_request = mock.Mock( **{ "status_code": 200, "json.return_value": { "ServiceError": { "TransactionDetail": { "ApplicationTransactionID": "REST", "ServiceTransactionID": "Id-6e040756527b7800a2671f00e043d181", "TransactionTimestamp": "2015-09-26T16:47:42", }, "TransactionResult": { "SeverityText": "Error", "ResultID": "CM002", "ResultText": "Invalid URL provided", }, } }, } ) bad_endpoint_request = mock.Mock(**{"status_code": 200, "json.side_effect": ValueError}) success_request = mock.Mock( **{ "status_code": 200, "json.return_value": { "MatchResponse": { "TransactionDetail": { "ServiceTransactionID": "Id-871d21a751de8134079b2d0c-1", "TransactionTimestamp": "2013-07-11T05:56:05", }, "TransactionResult": { "SeverityText": "Information", "ResultID": "CM000", "ResultText": "Success", }, "MatchResponseDetail": { "MatchDataCriteriaText": {"$": "Name and Address Lookup"}, "CandidateMatchedQuantity": 24, "MatchCandidate": [ { "DUNSNumber": "804735132", "OrganizationPrimaryName": { "OrganizationName": {"$": "GORMAN MANUFACTURING COMPANY, INC."} }, "PrimaryAddress": { "StreetAddressLine": [{"LineText": "492 KOLLER STREET"}], "PrimaryTownName": "SAN FRANCISCO", "CountryISOAlpha2Code": "US", "PostalCode": "94110", "TerritoryAbbreviatedName": "CA", "UndeliverableIndicator": False, }, "MailingAddress": {"CountryISOAlpha2Code": "US", "UndeliverableIndicator": False}, } ], }, "DisplaySequence": 24, } }, } ) with mock.patch("dnb_direct.client.requests") as requests_mock: c = DirectClient("foo", "bar") c._authenticate = mock.Mock(return_value="somevalidtoken") # bad endpoint requests_mock.get.return_value = bad_endpoint_request self.assertRaises(DnbError, lambda: c.call_api("bad_endpoint")) # failed request requests_mock.get.return_value = failed_request response = c.call_api("organizations") self.assertEqual(response["ServiceError"]["TransactionResult"]["SeverityText"], "Error") # good request (GET) requests_mock.get.return_value = success_request params = {"SubjectName": "GORMAN MANUFACTURING", "match": "true"} c.call_api("organizations", "5.0", **params) requests_mock.get.assert_called_with( "https://maxcvservices.dnb.com/V5.0/organizations", headers={"Authorization": "somevalidtoken"}, params=params, )