|
@@ -1,3 +1,88 @@
|
|
|
|
|
+from tokenize import Token
|
|
|
from django.test import TestCase
|
|
from django.test import TestCase
|
|
|
|
|
+from .models import ProgrammedReport
|
|
|
|
|
+import json
|
|
|
|
|
|
|
|
-# Create your tests here.
|
|
|
|
|
|
|
+
|
|
|
|
|
+# Setear con un token valido antes de ejecutar los tests.
|
|
|
|
|
+TOKEN = "335049bcd9936452b436efb61b91eeabbede8a03"
|
|
|
|
|
+USER_ID = "1"
|
|
|
|
|
+
|
|
|
|
|
+# Tests simples de los endpoints del microservicio.
|
|
|
|
|
+# No deben ser usados unicamente para garantizar la funcionalidad del sistema.
|
|
|
|
|
+# Son dificiles de mantener,lentos de desarollar y no proveen mucha informacion mas haya de lo basico.
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class ProgrammedReportTest(TestCase):
|
|
|
|
|
+
|
|
|
|
|
+ # Setup some Programmed Reports for testing.
|
|
|
|
|
+ def setUp(self):
|
|
|
|
|
+ ProgrammedReport(user_id=USER_ID, report_type="Report Type!", modules=[
|
|
|
|
|
+ "module1!"], notified_emails=["email@email.com"]).save()
|
|
|
|
|
+ ProgrammedReport(user_id=USER_ID, report_type="Report Type 2!", modules=[
|
|
|
|
|
+ "module1!"], notified_emails=["email@email.com"]).save()
|
|
|
|
|
+ ProgrammedReport(user_id=USER_ID, report_type="Report Type 3!", modules=[
|
|
|
|
|
+ "module1!"], notified_emails=["email@email.com"]).save()
|
|
|
|
|
+ ProgrammedReport(user_id="99999", report_type="Report Type 4!", modules=[
|
|
|
|
|
+ "module1!", "module2!"], notified_emails=["email@email.com"]).save()
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
|
|
+ # Test GET (list) request on a particular Programmed Report. URL: /api/preports
|
|
|
|
|
+ def test_list_programmed_reports(self):
|
|
|
|
|
+ # Retrieve all Programmed Reports and parse them.
|
|
|
|
|
+ response = self.client.get(
|
|
|
|
|
+ '/api/preports/', HTTP_AUTHORIZATION=TOKEN)
|
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
|
+ data = json.loads(response.content)
|
|
|
|
|
+
|
|
|
|
|
+ # Check if all user_id=123 reports only where retrieved.
|
|
|
|
|
+ self.assertEqual(len(data), 3)
|
|
|
|
|
+
|
|
|
|
|
+ # Check integrity of all the Programmed Reports
|
|
|
|
|
+ for item in data:
|
|
|
|
|
+ self.assertEqual(
|
|
|
|
|
+ check_programmed_report_data_integrity(item, USER_ID), True)
|
|
|
|
|
+ return True
|
|
|
|
|
+
|
|
|
|
|
+ # Test GET (retrieve) request on a particular Programmed Report. URL: /api/preports/{id}/
|
|
|
|
|
+ def test_retrieve_programmed_report(self):
|
|
|
|
|
+ # Retrieve all Programmed Reports and parse them.
|
|
|
|
|
+ response = self.client.get(
|
|
|
|
|
+ '/api/preports/', HTTP_AUTHORIZATION=TOKEN)
|
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
|
+ data = json.loads(response.content)
|
|
|
|
|
+ self.assertGreater(len(data), 0)
|
|
|
|
|
+
|
|
|
|
|
+ # Use the ID of the first one to retrieve only that report.
|
|
|
|
|
+ response = self.client.get(
|
|
|
|
|
+ '/api/preports/' + str(data[0]["id"]) + '/',
|
|
|
|
|
+ CONTENT_TYPE='application/json', HTTP_AUTHORIZATION=TOKEN)
|
|
|
|
|
+
|
|
|
|
|
+ # Check if all went okey, including data integrity.
|
|
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
|
|
+ data = json.loads(response.content)
|
|
|
|
|
+ self.assertEqual(
|
|
|
|
|
+ check_programmed_report_data_integrity(data, USER_ID), True)
|
|
|
|
|
+ return True
|
|
|
|
|
+
|
|
|
|
|
+ def test_create_programmed_report(self):
|
|
|
|
|
+
|
|
|
|
|
+ response = self.client.post('/api/preports/', {
|
|
|
|
|
+ "user_id": USER_ID,
|
|
|
|
|
+ "report_type": "sometype",
|
|
|
|
|
+ "modules": json.dumps(["module1"]),
|
|
|
|
|
+ "notified_emails": json.dumps(["test@email.com"])
|
|
|
|
|
+ }, HTTP_AUTHORIZATION=TOKEN)
|
|
|
|
|
+ self.assertEqual(response.status_code, 201)
|
|
|
|
|
+ pass
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def check_programmed_report_data_integrity(data, user_id=None):
|
|
|
|
|
+ result = True
|
|
|
|
|
+ if (user_id != None):
|
|
|
|
|
+ result = data["user_id"] == user_id
|
|
|
|
|
+ result = result and len(data["modules"]) > 0 and isinstance(
|
|
|
|
|
+ data["modules"][0], str)
|
|
|
|
|
+ result = result and len(data["notified_emails"]) > 0 and isinstance(
|
|
|
|
|
+ data["notified_emails"][0], str)
|
|
|
|
|
+ return result
|