Example #1
0
 def test_get_identifier_survey(self):
     shared_link_identifier = random_gen.gen_string(10)
     survey = self.baker.make(
         "survey.Survey",
         is_shared_publicly=True,
         shared_link_identifier=shared_link_identifier,
     )
     url = self.reverse(
         "survey-identifier",
         kwargs={
             "version": "v1",
             "shared_link_identifier": shared_link_identifier,
         },
     )
     response = self.client.get(url)
     self.assertEqual(response.status_code, self.status_code.HTTP_200_OK,
                      response.json())
     survey.is_shared_publicly = False
     survey.save()
     url = self.reverse(
         "survey-identifier",
         kwargs={
             "version": "v1",
             "shared_link_identifier": shared_link_identifier,
         },
     )
     response = self.client.get(url)
     self.assertEqual(response.status_code,
                      self.status_code.HTTP_404_NOT_FOUND, response.json())
Example #2
0
 def test_update_share_survey(self):
     self.client.force_authenticate(self.user)
     survey_1 = self.baker.make(
         "survey.Survey",
         created_by=self.user,
         is_shared_publicly=True,
         shared_link_identifier=random_gen.gen_string(10),
     )
     url = self.reverse("survey-update-link",
                        kwargs={
                            "version": "v1",
                            "pk": survey_1.pk
                        })
     response = self.client.post(url)
     self.assertEqual(response.status_code, self.status_code.HTTP_200_OK,
                      response.json())
     survey_2 = self.baker.make(
         "survey.Survey",
         created_by=self.user,
     )
     url = self.reverse("survey-update-link",
                        kwargs={
                            "version": "v1",
                            "pk": survey_2.pk
                        })
     response = self.client.post(url)
     self.assertEqual(response.status_code,
                      self.status_code.HTTP_400_BAD_REQUEST,
                      response.json())
Example #3
0
 def test_user_email_verify(self):
     non_activated_user_pass = gen_random_password()
     non_activated_user_username = random_gen.gen_string(15)
     user_data = {
         "username": non_activated_user_username,
         "email": random_gen.gen_email(),
         "first_name": random_gen.gen_string(150),
         "last_name": random_gen.gen_string(150),
         "password": non_activated_user_pass,
         "re_password": non_activated_user_pass,
         "organization": random_gen.gen_string(255),
         "role": random_gen.gen_string(50),
     }
     url = self.reverse("user-register", kwargs={"version": "v1"})
     response = self.client.post(url, data=user_data)
     self.assertEqual(response.status_code,
                      self.status_code.HTTP_201_CREATED, response.json())
     non_activated_user = get_user_model().objects.get(
         username=non_activated_user_username)
     url = self.reverse("user-email-confirm", kwargs={"version": "v1"})
     user = authenticate(username=non_activated_user.username,
                         password=non_activated_user_pass)
     self.assertIsNone(user)
     email_verify_pin = (apps.get_model(
         "user",
         "EmailConfirmationPin").objects.get(user=non_activated_user).pin)
     response = self.client.post(
         url,
         data={
             "username": non_activated_user.username,
             "pin": email_verify_pin,
         },
     )
     self.assertEqual(response.status_code, self.status_code.HTTP_200_OK,
                      response.json())
     email_verified = get_user_model().objects.get(
         username=non_activated_user.username)
     self.assertTrue(email_verified.check_password(non_activated_user_pass))
Example #4
0
 def test_user_me_patch(self):
     self.client.force_authenticate(self.activated_user)
     self.assertTrue(self.activated_user.is_active)
     new_name = random_gen.gen_string(max_length=20)
     data = {
         "first_name": new_name,
         "password": self.activated_initial_password
     }
     url = self.reverse("user-me", kwargs={"version": "v1"})
     response = self.client.patch(url, data=data, format="json")
     self.assertEqual(response.status_code, self.status_code.HTTP_200_OK,
                      response.json())
     updated_user = get_user_model().objects.get(pk=self.activated_user.pk)
     self.assertEqual(updated_user.first_name, new_name)
Example #5
0
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_default',
        },
        'results': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_results',
        },
        'sessions': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_sessions',
        },
    }
    # give random char field values a reasonable length
    from model_bakery import random_gen
    BAKER_CUSTOM_FIELDS_GEN = {
        'django.db.models.CharField': lambda: random_gen.gen_string(20)
    }

# Development helpers
if DEBUG:
    INSTALLED_APPS += ['evap.development']

    # Django debug toolbar settings
    if not TESTING and ENABLE_DEBUG_TOOLBAR:
        INSTALLED_APPS += ['debug_toolbar']
        MIDDLEWARE = ['debug_toolbar.middleware.DebugToolbarMiddleware'
                      ] + MIDDLEWARE

        def show_toolbar(request):
            return True
Example #6
0
        'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_default',
        },
        'results': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_results',
        },
        'sessions': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'testing_cache_sessions',
        },
    }
    # give random char field values a reasonable length
    from model_bakery import random_gen
    BAKER_CUSTOM_FIELDS_GEN = {'django.db.models.CharField': lambda: random_gen.gen_string(20)}


# Django debug toolbar settings
if DEBUG and not TESTING and ENABLE_DEBUG_TOOLBAR:
    INSTALLED_APPS += ['debug_toolbar']
    MIDDLEWARE = ['debug_toolbar.middleware.DebugToolbarMiddleware'] + MIDDLEWARE

    def show_toolbar(request):
        return True

    DEBUG_TOOLBAR_CONFIG = {
        'SHOW_TOOLBAR_CALLBACK': 'evap.settings.show_toolbar',
        'JQUERY_URL': '',
    }
Example #7
0
 def test_project_survey_creation(self):
     url = self.reverse("project-create-survey",
                        kwargs={
                            "version": "v1",
                            "pk": self.project.pk
                        })
     module = self.baker.make("context.Module")
     question_group = self.baker.make("survey.QuestionGroup", module=module)
     question_1 = self.baker.make("survey.Question",
                                  answer_type="location",
                                  group=question_group)
     question_2 = self.baker.make("survey.Question", answer_type="number")
     question_3 = self.baker.make("survey.Question", answer_type="boolean")
     question_4 = self.baker.make("survey.Question",
                                  answer_type="single_option")
     question_4_option = self.baker.make("survey.Option",
                                         question=question_4)
     question_5 = self.baker.make("survey.Question",
                                  answer_type="multiple_option")
     question_5_option_1 = self.baker.make("survey.Option",
                                           question=question_5)
     question_5_option_2 = self.baker.make("survey.Option",
                                           question=question_5)
     statement = self.baker.make("statement.Statement")
     data = {
         "title":
         random_gen.gen_string(255),
         "answers": [
             {
                 "question": question_1.pk,
                 "answer":
                 '{"type": "Point", "coordinates": [5.000000, 23.000000]}',
                 "answerType": "location",
             },
             {
                 "question": question_2.pk,
                 "answer": 2,
                 "answerType": "number",
             },
             {
                 "question": question_3.pk,
                 "answer": "true",
                 "answerType": "boolean",
             },
             {
                 "question": question_4.pk,
                 "answerType": "single_option",
                 "options": [question_4_option.pk],
             },
             {
                 "question": question_5.pk,
                 "answerType": "multiple_option",
                 "options":
                 [question_5_option_1.pk, question_5_option_2.pk],
             },
         ],
         "results": [
             {
                 "statement": statement.pk,
                 "score": 0.90,
                 "module": question_1.group.module.pk,
             },
         ],
     }
     self.client.force_authenticate(self.project_created_user)
     response = self.client.post(url, data, format="json")
     self.assertEqual(response.status_code,
                      self.status_code.HTTP_201_CREATED, response.json())
            ConfirmStatusChoices.CONFIRMED,
            ConfirmStatusChoices.WAITING_FOR_CONFIRM,
            ConfirmStatusChoices.DISPROVED,
        ]
    )


# Category recipes
category = Recipe(Category)
active_category = category.extend(is_active=True)
inactive_category = category.extend(is_active=False)

# Tutorial recipes
tutorial = Recipe(
    Tutorial,
    short_description=lambda: gen_string(150),
    body=lambda: gen_string(150),
    confirm_status=get_random_confirm_status,
    _fill_optional=["author"],
)
confirmed_tutorial = tutorial.extend(
    confirm_status=ConfirmStatusChoices.CONFIRMED
)
waiting_for_confirm_tutorial = tutorial.extend(
    confirm_status=ConfirmStatusChoices.WAITING_FOR_CONFIRM
)
disproved_tutorial = tutorial.extend(
    confirm_status=ConfirmStatusChoices.DISPROVED
)

# TutorialComment recipes