Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from django.test import TestCase, RequestFactory
2from django.urls import reverse
3from rest_framework import status
4from rest_framework.test import APIRequestFactory, force_authenticate
5from policorp.classViews.userView import UserView
6from policorp.models import User
7from policorp.tests import aux
8import json
10class TestUserView(TestCase):
12 def setUp(self):
13 # Every test needs access to the request factory.
14 self.factory = APIRequestFactory()
16 def test_userView_POST_return_405(self):
17 """ GIVEN ; WHEN POST /policorp/user/foo ; THEN code 405 should be returned """
18 username = 'foo'
19 u1 = aux.createUser(username, 'foo@example.com', 'example')
20 request = self.factory.post(reverse('policorp:user', kwargs={'username': username}))
21 force_authenticate(request, user=u1)
22 response = UserView.as_view()(request, username)
23 self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
25 def test_userView_GET_authenticated_foo_return_200(self):
26 """ GIVEN ; WHEN GET /policorp/user/foo ; THEN code 200 should be returned """
27 username = 'foo'
28 u1 = aux.createUser(username, 'foo@example.com', 'example')
29 request = self.factory.get(reverse('policorp:user', kwargs={'username': username}))
30 force_authenticate(request, user=u1)
31 response = UserView.as_view()(request, username)
32 self.assertEqual(response.status_code, status.HTTP_200_OK)
34 def test_userView_GET_not_authenticated_foo_return_403(self):
35 """ GIVEN ; WHEN GET /policorp/user/foo ; THEN code 200 should be returned """
36 username = 'foo'
37 u1 = aux.createUser(username, 'foo@example.com', 'example')
38 request = self.factory.get(reverse('policorp:user', kwargs={'username': username}))
39 response = UserView.as_view()(request, username)
40 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
42 def test_userView_GET_another_user_cannot_see_my_user_details(self):
43 """ GIVEN ; WHEN GET /policorp/user/foo ; THEN code 403 should be returned """
44 username = 'foo'
45 u1 = aux.createUser(username, 'foo@example.com', 'example')
46 u2 = aux.createUser('bar', 'bar@example.com', 'example')
47 request = self.factory.get(reverse('policorp:user', kwargs={'username': username}))
48 force_authenticate(request, user=u2)
49 response = UserView.as_view()(request, username)
50 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
52 def test_userView_GET_supervisor_user_can_see_my_user_details(self):
53 """ GIVEN ; WHEN authenticated supervisor GET /policorp/user/foo ; THEN code 200 should be returned """
54 username = 'foo'
55 u1 = aux.createUser(username, 'foo@example.com', 'example')
56 request = self.factory.get(reverse('policorp:user', kwargs={'username': username}))
57 supervisor = User.objects.create_supervisor('bar', 'bar@example.com', 'example')
58 force_authenticate(request, user=supervisor)
59 response = UserView.as_view()(request, username)
60 self.assertEqual(response.status_code, status.HTTP_200_OK)
62 def test_userView_GET_authenticated_foo_returns_200_and_user_data(self):
63 """ GIVEN ; WHEN GET /policorp/user/foo ; THEN code 200 should be returned """
64 username = "foo"
65 email = "foo@example.com"
66 password = "example"
67 first_name = "Nombre"
68 last_name = "Apellido"
70 u1 = aux.createUser(username, email, password, first_name, last_name)
71 request = self.factory.get(reverse('policorp:user', kwargs={'username': username}))
72 force_authenticate(request, user=u1)
73 response = UserView.as_view()(request, username)
74 self.assertEqual(response.status_code, status.HTTP_200_OK)
76 expected_json = {
77 "username": username,
78 "email": email,
79 "first_name": first_name,
80 "last_name": last_name
81 }
83 self.assertJSONEqual(json.dumps(response.data), expected_json)