Test signup POST

This commit is contained in:
Aarni Halinen
2020-06-15 20:25:24 +03:00
parent 2433c7828d
commit f505fae3e6
4 changed files with 59 additions and 13 deletions
+9 -8
View File
@@ -103,12 +103,7 @@ class SignupForm(models.Model):
@property
def schema(self):
questions = self.questions
ids = list(map(lambda x: x["id"], questions))
properties = {
"required": ids,
"minProperties": len(ids),
"maxProperties": len(ids)
}
properties = {}
for q in questions:
id = q["id"]
@@ -143,8 +138,14 @@ class SignupForm(models.Model):
}
else: raise Exception("invalid question type!")
return properties
ids = list(map(lambda x: x["id"], questions))
return {
"type": "object",
"required": ids,
"minProperties": len(ids),
"maxProperties": len(ids),
"properties": properties
}
class Meta:
verbose_name = _('Signup form')
+1 -1
View File
@@ -10,7 +10,7 @@ ALL_QUESTION_TYPES = [
{"id": "i10d426d5", "name": "Asd3", "type": "checkbox", "options": ["A", "B", "C"]}
]
ALL_QUESTION_TYPES_ANSWER = {"j5CeRZDvl": "Testi", "RHJhSoaLD": "maybe", "i10d426d5": ["B"]}
ALL_QUESTION_TYPES_ANSWER = {"j5CeRZDvl": "Testi", "RHJhSoaLD": "maybe", "i10d426d5": ["B","C"]}
def createSignupForm(name="Form1", start_time=timezone.now(), end_time=month_from_now(), questions=ALL_QUESTION_TYPES, visible=True):
+49 -2
View File
@@ -17,6 +17,9 @@ class SignupTestCase(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)
@@ -77,11 +80,55 @@ class SignupTestCase(APITestCase):
pass
def test_create_malformed_answer(self):
malformed = createSignupJSON(self.signupForm.id, [])
response = self.client.post(URL, malformed, format="json")
# Empty body
response = self.client.post(URL, createSignupJSON(self.signupForm.id, {}), format="json")
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
# Array
response = self.client.post(URL, createSignupJSON(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, createSignupJSON(self.signupForm.id, testInput), format="json")
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
# Bad id
response = self.client.post(URL, createSignupJSON(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, createSignupJSON(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, createSignupJSON(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, createSignupJSON(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, createSignupJSON(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, createSignupJSON(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")
-2
View File
@@ -86,11 +86,9 @@ class SignupViewSet(viewsets.ModelViewSet):
if (form.visible):
signup = json.loads(request.data["answer"])
# Throws error if not valid
print(form.schema)
validate(instance=signup, schema=form.schema)
return super().create(request, *args, **kwargs)
except Exception as inst:
print(inst)
return HttpResponseBadRequest()
else:
return HttpResponseBadRequest()