| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- from tokenize import Token
- from django.test import TestCase
- from .models import ProgrammedReport
- import json
- # 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
|