def test_account_request_get_raise_ApiError_if_request_not_found( self, mock_get_by_id): # Arrange request_id = "1" mock_get_by_id.side_effect = Exception() # Act # Assert with self.assertRaises(ApiError): account_request_api.get(request_id)
def get(request): """ Get an account request Parameters: request (HttpRequest): request Returns: Response object """ try: # Get parameters account_request_id = request.DATA['request_id'] try: requests = account_request_api.get(account_request_id) serializer = AccountRequestSerializer(requests) if serializer.is_valid(): return Response(serializer.data, status=status.HTTP_200_OK) else: content = {'message': 'Serialization failed'} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as e: content = {'message': 'Expected parameters not provided.'} logger.exception(e.message) return Response(content, status=status.HTTP_400_BAD_REQUEST)
def deny(request): """ Deny an account request Parameters: request (HttpRequest): request Returns: Response object """ try: # Get parameters request_id = request.DATA['requestid'] account_request_from_api = account_request_api.get(request_id) try: account_request_api.deny(account_request_from_api) return Response({}, status=status.HTTP_204_NO_CONTENT) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as e: content = {'message': 'Expected parameters not provided.'} logger.exception(e.message) return Response(content, status=status.HTTP_400_BAD_REQUEST)
def accept(request): """ Accept an account request Parameters: request (HttpRequest): request Returns: Response object """ try: # Get parameters request_id = request.DATA['requestid'] account_request_from_api = account_request_api.get(request_id) try: user_request = account_request_api.accept(account_request_from_api, send_mail=False) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) # Serialize the request serializer = AccountRequestSerializer(user_request) if serializer.is_valid(): return Response(serializer.data, status=status.HTTP_200_OK) else: content = {'message': 'Serialization failed'} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as e: content = {'message': 'Expected parameters not provided.'} logger.exception(e.message) return Response(content, status=status.HTTP_400_BAD_REQUEST)
def test_account_request_get_return_request_object(self, mock_get_by_id): # Arrange request_id = "1" mock_get_by_id.return_value = _create_account_request() # Act result = account_request_api.get(request_id) # Assert self.assertIsInstance(result, AccountRequest)
def get_object(self, pk): """Get Account Request from db Args: pk: ObjectId Returns: Account Request """ try: return account_request_api.get(pk) except exceptions.DoesNotExist: raise Http404
def deny_request(request): """ Denies an account request :param request: :return: """ try: email_params = None send_email = (request.POST.get("sendEmail") == "true" and SEND_EMAIL_WHEN_ACCOUNT_REQUEST_IS_DENIED) request_id = request.POST.get("requestid") email_subject = request.POST.get("emailParams[subject]") email_body = request.POST.get("emailParams[body]") if request_id and send_email and email_subject and email_body: # check the HTML syntax parse_html(email_body, "div") # check dangerous script injection if email_body != stripjs(email_body): return HttpResponseBadRequest("Unsafe HTML.") email_params = { "subject": email_subject, "body": email_body, } elif not request_id: raise ("Wrong parameters.") account_request_from_api = account_request_api.get(request_id) account_request_api.deny(account_request_from_api, send_email, email_params) message = "Request denied" except HTMLError as e: return HttpResponseBadRequest("HTML is not generated properly.") except main_exceptions.ApiError as error: raise exceptions.WebsiteAjaxError(str(error)) except Exception as exception: raise exceptions.WebsiteAjaxError(str(exception)) return HttpResponse(json.dumps({"message": message}), content_type="application/json")
def accept_request(request): """ Accepts a request and creates the user account :param request: :return: """ try: request_id = request.POST['requestid'] account_request_from_api = account_request_api.get(request_id) account_request_api.accept(account_request_from_api) message = "Request Accepted" except main_exceptions.ApiError as error: raise exceptions.WebsiteAjaxError(error.message) except Exception as exception: raise exceptions.WebsiteAjaxError(exception.message) return HttpResponse(json.dumps({"message": message}), content_type='application/json')
def deny_request(request): """ Denies an account request :param request: :return: """ try: request_id = request.POST['requestid'] account_request_from_api = account_request_api.get(request_id) account_request_api.deny(account_request_from_api) message = "Request denied" except main_exceptions.ApiError as error: raise exceptions.WebsiteAjaxError(error.message) except Exception as exception: raise exceptions.WebsiteAjaxError(exception.message) return HttpResponse(json.dumps({"message": message}), content_type='application/json')
def get_deny_email_template(request): request_id = request.GET.get("requestid") if request_id: account_request = account_request_api.get(request_id) context = { "lastname": account_request.last_name, "firstname": account_request.first_name, "URI": SERVER_URI, } template = loader.get_template( "core_website_app/admin/email/request_account_denied.html") content = template.render(context) return HttpResponse(json.dumps({"template": content}), content_type="application/json") else: return HttpResponseBadRequest("Missing account request id.")
def get(request): """ Get an account request Parameters: { "request_id": "request_id" } Args: request: HTTP request Returns: - code: 200 content: List of account requests - code: 400 content: Validation error / api exceptions / missing parameters """ try: # Get parameters account_request_id = request.DATA['request_id'] try: requests = account_request_api.get(account_request_id) serializer = AccountRequestSerializer(requests) if serializer.is_valid(): return Response(serializer.data, status=status.HTTP_200_OK) else: content = {'message': 'Serialization failed'} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as api_exception: content = {'message': api_exception.message} return Response(content, status=status.HTTP_400_BAD_REQUEST) except Exception as e: content = {'message': 'Expected parameters not provided.'} logger.exception(e.message) return Response(content, status=status.HTTP_400_BAD_REQUEST)