views.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. from django.core.exceptions import PermissionDenied
  2. from django.http import Http404, HttpResponse
  3. from rest_framework.decorators import api_view
  4. from social_core.backends.github import GithubOAuth2
  5. from social_core.exceptions import AuthFailed, NotAllowedToDisconnect, WrongBackend
  6. from misago.core import errorpages
  7. from misago.core.decorators import require_POST
  8. from misago.core.exceptions import Banned, SocialAuthBanned, SocialAuthFailed
  9. from misago.core.shortcuts import paginate, paginated_response, validate_slug
  10. from misago.core.views import home_redirect
  11. from misago.users.models import Ban
  12. from .models import Model
  13. from .serializers import MockSerializer
  14. def test_pagination(request, page=None):
  15. items = range(15)
  16. page = paginate(items, page, 5)
  17. return HttpResponse(",".join([str(x) for x in page.object_list]))
  18. @api_view()
  19. def test_paginated_response(request):
  20. data = range(100)
  21. page = paginate(data, 2, 10)
  22. return paginated_response(page)
  23. @api_view()
  24. def test_paginated_response_data(request):
  25. data = range(100)
  26. page = paginate(data, 2, 10)
  27. return paginated_response(page, data=["a", "b", "c", "d", "e"])
  28. @api_view()
  29. def test_paginated_response_serializer(request):
  30. data = [0, 1, 2, 3]
  31. page = paginate(data, 0, 10)
  32. return paginated_response(page, serializer=MockSerializer)
  33. @api_view()
  34. def test_paginated_response_data_serializer(request):
  35. data = [0, 1, 2, 3]
  36. page = paginate(data, 0, 10)
  37. return paginated_response(
  38. page, data=["a", "b", "c", "d"], serializer=MockSerializer
  39. )
  40. @api_view()
  41. def test_paginated_response_data_extra(request):
  42. data = [0, 1, 2, 3]
  43. page = paginate(data, 0, 10)
  44. return paginated_response(
  45. page, data=["a", "b", "c", "d"], extra={"next": "EXTRA", "lorem": "ipsum"}
  46. )
  47. def validate_slug_view(request, pk, slug):
  48. model = Model(int(pk), "eric-the-fish")
  49. validate_slug(model, slug)
  50. return HttpResponse("Allright!")
  51. def raise_misago_banned(request):
  52. ban = Ban(user_message="Banned for test!")
  53. raise Banned(ban)
  54. def raise_misago_403(request):
  55. raise PermissionDenied("Misago 403")
  56. def raise_misago_404(request):
  57. raise Http404("Misago 404")
  58. def raise_misago_405(request):
  59. return errorpages.not_allowed(request)
  60. def raise_403(request):
  61. raise PermissionDenied()
  62. def raise_404(request):
  63. raise Http404()
  64. def raise_social_auth_failed(require_POST):
  65. raise AuthFailed(GithubOAuth2)
  66. def raise_social_wrong_backend(request):
  67. raise WrongBackend("facebook")
  68. def raise_social_not_allowed_to_disconnect(request):
  69. raise NotAllowedToDisconnect()
  70. def raise_social_auth_failed_message(request):
  71. raise SocialAuthFailed(GithubOAuth2, "This message will be shown to user!")
  72. def raise_social_auth_banned(request):
  73. ban = Ban(user_message="Banned in auth!")
  74. raise SocialAuthBanned(GithubOAuth2, ban)
  75. def test_redirect(request):
  76. return home_redirect(request)
  77. @require_POST
  78. def test_require_post(request):
  79. return HttpResponse("Request method: %s" % request.method)
  80. @errorpages.shared_403_exception_handler
  81. def mock_custom_403_error_page(request, exception):
  82. return HttpResponse("Custom 403", status=403)
  83. @errorpages.shared_404_exception_handler
  84. def mock_custom_404_error_page(request, exception):
  85. return HttpResponse("Custom 404", status=404)