def post(self, request): """ request body is expected to look like this: { "requester": { "email": "*****@*****.**", "name": "name" }, "subject": "test subject", "comment": { "body": "message details", "uploads": ['file_token'], }, "custom_fields": [ { "id": '001', "value": 'demo-course' } ], "tags": ["LMS"] } """ try: proxy_status = create_zendesk_ticket( requester_name=request.user.username, requester_email=request.user.email, subject=request.data['subject'], body=request.data['comment']['body'], custom_fields=request.data['custom_fields'], tags=request.data['tags']) except KeyError as key: logger.error('Zendesk Proxy Bad Request KeyError: %s', key) return Response(status=status.HTTP_400_BAD_REQUEST) return Response(status=proxy_status)
def post(self, request): """ request body is expected to look like this: { "name": "John Q. Student", "email": { "from": "*****@*****.**", "message": "I, John Q. Student, am having problems for the following reasons: ...", "subject": "Help Request" }, "tags": ["zendesk_help_request"] } """ try: proxy_status = create_zendesk_ticket( requester_name=request.data['name'], requester_email=request.data['email']['from'], subject=request.data['email']['subject'], body=request.data['email']['message'], tags=request.data['tags'] ) except KeyError: return Response(status=status.HTTP_400_BAD_REQUEST) return Response( status=proxy_status )
def test_financial_assistant_ticket(self): """ Test Financial Assistent request ticket. """ ticket_creation_response_data = { "ticket": { "id": 35436, "subject": "My printer is on fire!", } } response_text = json.dumps(ticket_creation_response_data) with patch('requests.post', return_value=MagicMock(status_code=200, text=response_text)): with patch('requests.put', return_value=MagicMock(status_code=200)): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], group='Financial Assistance', additional_info=OrderedDict(( ('Username', 'test'), ('Full Name', 'Legal Name'), ('Course ID', 'course_key'), ('Annual Household Income', 'Income'), ('Country', 'Country'), )), ) assert status_code == 200
def test_unexpected_error_pinging_zendesk(self): with patch('requests.post', side_effect=Exception("WHAMMY")): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) self.assertEqual(status_code, 500)
def test_missing_settings(self): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) self.assertEqual(status_code, 503)
def test_unexpected_error_pinging_zendesk(self): with patch('requests.post', side_effect=Exception("WHAMMY")): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) assert status_code == 500
def test_missing_settings(self): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) assert status_code == 503
def test_zendesk_status_codes(self, mock_code): with patch('requests.post', return_value=MagicMock(status_code=mock_code)): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) self.assertEqual(status_code, mock_code)
def test_zendesk_status_codes(self, mock_code): with patch('requests.post', return_value=MagicMock(status_code=mock_code)): status_code = create_zendesk_ticket( requester_name=self.request_data['name'], requester_email=self.request_data['email'], subject=self.request_data['subject'], body=self.request_data['body'], ) assert status_code == mock_code
def post(self, request): """ request body is expected to look like this: { "requester": { "email": "*****@*****.**", "name": "name" }, "subject": "test subject", "comment": { "body": "message details", "uploads": ['file_token'], }, "custom_fields": [ { "id": '001', "value": 'demo-course' } ], "tags": ["LMS"] } """ try: proxy_status = create_zendesk_ticket( requester_name=request.data['requester']['name'], requester_email=request.data['requester']['email'], subject=request.data['subject'], body=request.data['comment']['body'], custom_fields=request.data['custom_fields'], tags=request.data['tags'] ) except KeyError: return Response(status=status.HTTP_400_BAD_REQUEST) return Response( status=proxy_status )