def test_expired_access_token(self): expired_token_response_body = { "expires_in": 0, "access_token": self.access_token } responses.add(responses.POST, self.url_base + self.oauth_api_path, json=expired_token_response_body, status=200) responses.add(responses.POST, self.url_base + self.oauth_api_path, json=self.expected_token_response_body, status=200) expected_course_response_body = self.content_payload expected_course_response_body[ "@odata.context"] = "$metadata#OcnCourses/$entity" responses.add(responses.POST, self.url_base + self.course_api_path, json=expected_course_response_body, status=200) sap_client = SAPSuccessFactorsAPIClient(self.enterprise_config) sap_client.create_content_metadata(self.content_payload) assert len(responses.calls) == 3 assert responses.calls[ 0].request.url == self.url_base + self.oauth_api_path assert responses.calls[ 1].request.url == self.url_base + self.oauth_api_path assert responses.calls[ 2].request.url == self.url_base + self.course_api_path
def test_expired_access_token(self): """ If our token expires after some call, make sure to get it again. Make a call, have the token expire after waiting some time (technically no time since time is frozen), and make a call again and notice 2 OAuth calls in total are required. """ expired_token_response_body = {"expires_in": 0, "access_token": self.access_token} responses.add( responses.POST, self.url_base + self.oauth_api_path, json=expired_token_response_body, status=200 ) expected_course_response_body = self.content_payload expected_course_response_body["@odata.context"] = "$metadata#OcnCourses/$entity" responses.add( responses.POST, self.url_base + self.course_api_path, json=expected_course_response_body, status=200 ) sap_client = SAPSuccessFactorsAPIClient(self.enterprise_config) sap_client.create_content_metadata(self.content_payload) sap_client.create_content_metadata(self.content_payload) assert len(responses.calls) == 4 assert responses.calls[0].request.url == self.url_base + self.oauth_api_path assert responses.calls[1].request.url == self.url_base + self.course_api_path assert responses.calls[2].request.url == self.url_base + self.oauth_api_path assert responses.calls[3].request.url == self.url_base + self.course_api_path
def test_sap_api_connection_error(self): """ ``create_content_metadata`` should raise ClientError when API request fails with a connection error. """ responses.add(responses.POST, self.url_base + self.oauth_api_path, json=self.expected_token_response_body, status=200) expected_course_response_body = self.content_payload expected_course_response_body[ "@odata.context"] = "$metadata#OcnCourses/$entity" responses.add(responses.POST, self.url_base + self.course_api_path, body=requests.exceptions.RequestException()) with raises(ClientError): sap_client = SAPSuccessFactorsAPIClient(self.enterprise_config) sap_client.create_content_metadata(self.content_payload)