diff --git a/webapp/tests/test_signup.py b/webapp/tests/test_signup.py index 99f55b2..446313f 100644 --- a/webapp/tests/test_signup.py +++ b/webapp/tests/test_signup.py @@ -3,13 +3,11 @@ from unittest import skip from django.contrib.auth.models import User from rest_framework import status from rest_framework.test import APITestCase, force_authenticate - from webapp.serializers import SignupSerializer, SignupFormSerializer from webapp.models import Signup from webapp.tests.event_fixture import createEventObject from webapp.tests.signup_fixture import createSignupForm, createSignupObject, createSignupRequest, ALL_QUESTION_TYPES, ALL_QUESTION_TYPES_ANSWER - URL = "/api/signup/" @@ -33,10 +31,6 @@ class SignupTestCase(APITestCase): self.signupForm.signup_set.all(), many=True ) - - # Unauthorized - response = self.client.get(URL, format="json") - self.assertTrue(response.status_code, status.HTTP_401_UNAUTHORIZED) # Authenticate self.client.force_authenticate(user=self.authClient) response = self.client.get(URL, format="json") @@ -48,10 +42,6 @@ class SignupTestCase(APITestCase): expected = SignupSerializer( Signup.objects.get(id=id) ) - - # Unauthorized - response = self.client.get(f"{URL}{id}/", format="json") - self.assertTrue(response.status_code, status.HTTP_401_UNAUTHORIZED) # Authenticate self.client.force_authenticate(user=self.authClient) response = self.client.get(f"{URL}{id}/", format="json") @@ -64,70 +54,10 @@ class SignupTestCase(APITestCase): self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Signup.objects.count(), 3) - def test_create_signup_404_or_hidden(self): - new = createSignupRequest(3001, ALL_QUESTION_TYPES_ANSWER) - response = self.client.post(URL, new, format="json") - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - self.assertEqual(Signup.objects.count(), 2) - - new = createSignupRequest(self.hiddenForm.id, ALL_QUESTION_TYPES_ANSWER) - response = self.client.post(URL, new, format="json") - self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) - self.assertEqual(Signup.objects.count(), 2) - @skip("NotImplemented") def test_get_hidden_forms_admin(self): pass - def test_create_malformed_answer(self): - # Empty body - response = self.client.post(URL, createSignupRequest(self.signupForm.id, {}), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Array - response = self.client.post(URL, createSignupRequest(self.signupForm.id, []), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Extra ids - testInput = ALL_QUESTION_TYPES_ANSWER.copy() - testInput["newId"] = "Oon extraa" - response = self.client.post(URL, createSignupRequest(self.signupForm.id, testInput), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Bad id - response = self.client.post(URL, createSignupRequest(self.signupFormText.id, {"malformed": "TekstiƤ"}), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Wrong data type for text - response = self.client.post(URL, createSignupRequest(self.signupFormText.id, {"j5CeRZDvl": 123}), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Wrong data for checkbox - response = self.client.post(URL, createSignupRequest(self.signupFormCheck.id, { - "i10d426d5": ["D"] - }), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Wrong data type for checkbox - response = self.client.post(URL, createSignupRequest(self.signupFormCheck.id, { - "i10d426d5": {"j5CeRZDvl": {"asd": "123"}} - }), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Wrong data for radiobutton - response = self.client.post(URL, createSignupRequest(self.signupFormRadio.id, { - "RHJhSoaLD": [] - }), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - # Wrong data type for radiobutton - response = self.client.post(URL, createSignupRequest(self.signupFormRadio.id, { - "RHJhSoaLD": {"asd": "123"} - }), format="json") - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - - self.assertEqual(Signup.objects.count(), 2) - # Update and Delete are available for super admin (Django Admin) # and to the user that signed up (uid token) @skip("NotImplemented") diff --git a/webapp/tests/test_signup_errors.py b/webapp/tests/test_signup_errors.py new file mode 100644 index 0000000..9d30392 --- /dev/null +++ b/webapp/tests/test_signup_errors.py @@ -0,0 +1,98 @@ +from django.test import TestCase +from unittest import skip +from django.contrib.auth.models import User +from rest_framework import status +from rest_framework.test import APITestCase, force_authenticate +from webapp.serializers import SignupSerializer, SignupFormSerializer +from webapp.models import Signup +from webapp.tests.event_fixture import createEventObject +from webapp.tests.signup_fixture import createSignupForm, createSignupObject, createSignupRequest, ALL_QUESTION_TYPES, ALL_QUESTION_TYPES_ANSWER + +URL = "/api/signup/" + + +class SignupErrorTestCase(APITestCase): + def setUp(self): + self.signupForm = createSignupForm() + self.signupFormText = createSignupForm(name="Form2", questions=[ALL_QUESTION_TYPES[0]]) + self.signupFormRadio = createSignupForm(name="Form3", questions=[ALL_QUESTION_TYPES[1]]) + self.signupFormCheck = createSignupForm(name="Form4", questions=[ALL_QUESTION_TYPES[2]]) + self.hiddenForm = createSignupForm(visible=False) + + self.signup1 = createSignupObject(self.signupForm, ALL_QUESTION_TYPES) + self.signup2 = createSignupObject(self.signupForm, ALL_QUESTION_TYPES) + + username, password = "test_admin", "password123" + self.authClient = User.objects.create_superuser(username, "myemail@test.com", password) + + def test_get_all_unauthorized(self): + response = self.client.get(URL, format="json") + self.assertTrue(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_get_single_unauthorized(self): + id = self.signup1.id + expected = SignupSerializer( + Signup.objects.get(id=id) + ) + response = self.client.get(f"{URL}{id}/", format="json") + self.assertTrue(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_create_signup_404(self): + new = createSignupRequest(3001, ALL_QUESTION_TYPES_ANSWER) + response = self.client.post(URL, new, format="json") + self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + self.assertEqual(Signup.objects.count(), 2) + + def test_create_signup_hidden(self): + new = createSignupRequest(self.hiddenForm.id, ALL_QUESTION_TYPES_ANSWER) + response = self.client.post(URL, new, format="json") + self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) + self.assertEqual(Signup.objects.count(), 2) + + def test_create_empty_body(self): + response = self.client.post(URL, createSignupRequest(self.signupForm.id, {}), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_array_body(self): + response = self.client.post(URL, createSignupRequest(self.signupForm.id, []), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_extra_body(self): + testInput = ALL_QUESTION_TYPES_ANSWER.copy() + testInput["newId"] = "Oon extraa" + response = self.client.post(URL, createSignupRequest(self.signupForm.id, testInput), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_id(self): + response = self.client.post(URL, createSignupRequest(self.signupFormText.id, {"malformed": "TekstiƤ"}), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_type_text(self): + response = self.client.post(URL, createSignupRequest(self.signupFormText.id, {"j5CeRZDvl": 123}), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_data_checkbox(self): + response = self.client.post(URL, createSignupRequest(self.signupFormCheck.id, { + "i10d426d5": ["D"] + }), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_type_checkbox(self): + response = self.client.post(URL, createSignupRequest(self.signupFormCheck.id, { + "i10d426d5": {"j5CeRZDvl": {"asd": "123"}} + }), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_radio(self): + response = self.client.post(URL, createSignupRequest(self.signupFormRadio.id, { + "RHJhSoaLD": [] + }), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + def test_create_bad_type_radio(self): + response = self.client.post(URL, createSignupRequest(self.signupFormRadio.id, { + "RHJhSoaLD": {"asd": "123"} + }), format="json") + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + + self.assertEqual(Signup.objects.count(), 2)