Commit c01602f0 by Stephen Sanchez

Change implementation of improved logging based on new API.

parent 7af1ee3e
...@@ -16,10 +16,9 @@ class DetailResponse(JsonResponse): ...@@ -16,10 +16,9 @@ class DetailResponse(JsonResponse):
class InternalRequestErrorResponse(DetailResponse): class InternalRequestErrorResponse(DetailResponse):
""" Response returned when an internal service request fails. """ """ Response returned when an internal service request fails. """
def __init__(self, internal_message, internal_status): def __init__(self, internal_message):
message = ( message = (
'Call to E-Commerce API failed. Internal Request Status Code: ' 'Call to E-Commerce API failed. Internal Service Message: [{internal_message}]'
'[{internal_status}], Internal Service Message: [{internal_message}]' .format(internal_message=internal_message)
.format(internal_status=internal_status, internal_message=internal_message)
) )
super(InternalRequestErrorResponse, self).__init__(message=message, status=HTTP_500_INTERNAL_SERVER_ERROR) super(InternalRequestErrorResponse, self).__init__(message=message, status=HTTP_500_INTERNAL_SERVER_ERROR)
...@@ -48,12 +48,11 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto ...@@ -48,12 +48,11 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto
actual = json.loads(response.content)['detail'] actual = json.loads(response.content)['detail']
self.assertEqual(actual, expected_msg) self.assertEqual(actual, expected_msg)
def assertValidEcommerceInternalRequestErrorResponse(self, response, internal_status): def assertValidEcommerceInternalRequestErrorResponse(self, response):
""" Asserts the response is a valid response sent when the E-Commerce API is unavailable. """ """ Asserts the response is a valid response sent when the E-Commerce API is unavailable. """
self.assertEqual(response.status_code, 500) self.assertEqual(response.status_code, 500)
actual = json.loads(response.content)['detail'] actual = json.loads(response.content)['detail']
self.assertIn('Call to E-Commerce API failed', actual) self.assertIn('Call to E-Commerce API failed', actual)
self.assertIn(str(internal_status), actual)
def assertUserNotEnrolled(self): def assertUserNotEnrolled(self):
""" Asserts that the user is NOT enrolled in the course, and that an enrollment event was NOT fired. """ """ Asserts that the user is NOT enrolled in the course, and that an enrollment event was NOT fired. """
...@@ -114,7 +113,7 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto ...@@ -114,7 +113,7 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto
with self.mock_create_order(side_effect=TimeoutError): with self.mock_create_order(side_effect=TimeoutError):
response = self._post_to_view() response = self._post_to_view()
self.assertValidEcommerceInternalRequestErrorResponse(response, 408) self.assertValidEcommerceInternalRequestErrorResponse(response)
self.assertUserNotEnrolled() self.assertUserNotEnrolled()
def test_ecommerce_api_error(self): def test_ecommerce_api_error(self):
...@@ -124,7 +123,7 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto ...@@ -124,7 +123,7 @@ class OrdersViewTests(EnrollmentEventTestMixin, EcommerceApiTestMixin, ModuleSto
with self.mock_create_order(side_effect=ApiError): with self.mock_create_order(side_effect=ApiError):
response = self._post_to_view() response = self._post_to_view()
self.assertValidEcommerceInternalRequestErrorResponse(response, 500) self.assertValidEcommerceInternalRequestErrorResponse(response)
self.assertUserNotEnrolled() self.assertUserNotEnrolled()
def _test_successful_ecommerce_api_call(self): def _test_successful_ecommerce_api_call(self):
......
...@@ -10,7 +10,7 @@ from rest_framework.views import APIView ...@@ -10,7 +10,7 @@ from rest_framework.views import APIView
from commerce.api import EcommerceAPI from commerce.api import EcommerceAPI
from commerce.constants import OrderStatus, Messages from commerce.constants import OrderStatus, Messages
from commerce.exceptions import ApiError, InvalidConfigurationError from commerce.exceptions import ApiError, InvalidConfigurationError
from commerce.http import DetailResponse, ApiErrorResponse from commerce.http import DetailResponse, InternalRequestErrorResponse
from course_modes.models import CourseMode from course_modes.models import CourseMode
from courseware import courses from courseware import courses
from enrollment.api import add_enrollment from enrollment.api import add_enrollment
...@@ -120,6 +120,6 @@ class OrdersView(APIView): ...@@ -120,6 +120,6 @@ class OrdersView(APIView):
msg = Messages.ORDER_INCOMPLETE_ENROLLED.format(order_number=order_number) msg = Messages.ORDER_INCOMPLETE_ENROLLED.format(order_number=order_number)
return DetailResponse(msg, status=HTTP_202_ACCEPTED) return DetailResponse(msg, status=HTTP_202_ACCEPTED)
except ApiError: except ApiError as err:
# The API will handle logging of the error. # The API will handle logging of the error.
return ApiErrorResponse() return InternalRequestErrorResponse(err.message)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment