Пример #1
0
class ViewReportsButtonTest(ServiceInfoFrontendTestCase):
    def test_logout_and_login_as_staff(self):
        # Staff user sees the reports button even after logging out and in
        self.password = '******'
        self.user = EmailUserFactory(password=self.password)
        self.user.is_staff = True
        self.user.save()
        self.load_page_and_set_language()
        self.login()
        button = self.wait_for_element('view_reports_button')
        self.assertTrue(button.is_displayed())
        self.logout()
        # Give the page time to start reloading before looking for the button again
        time.sleep(1)
        self.login()
        # Give the page time to start reloading before looking for the button again
        time.sleep(1)
        button = self.wait_for_element('view_reports_button')
        self.assertTrue(button.is_displayed())
        # User can view reports page
        button.click()
        self.wait_for_element('report-table')

    def test_logout_and_login_as_non_staff(self):
        # Non-staff user sees the reports button, even after logging out
        # and in and changing language.  Even if superuser.
        self.password = '******'
        self.user = EmailUserFactory(password=self.password)
        self.user.is_superuser = True
        self.user.save()
        self.load_page_and_set_language()
        self.login()
        button = self.wait_for_element('view_reports_button',
                                       must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # Log out and in again
        self.logout()
        # Give the page time to start reloading before looking for the menu again
        time.sleep(0.5)
        self.login()
        # Give the page time to start reloading before looking for the button again
        time.sleep(0.5)
        button = self.wait_for_element('view_reports_button',
                                       must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # Set the language again
        form = self.wait_for_element('language-toggle')
        button = form.find_element_by_css_selector('[data-lang="%s"]' % 'en')
        button.click()
        # Give the page time to start reloading before looking for the button again
        time.sleep(0.5)
        button = self.wait_for_element('view_reports_button',
                                       must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # User can view reports page
        button.click()
        self.wait_for_element('report-table')
Пример #2
0
class UserActivationTest(TestCase):
    def setUp(self):
        self.user = EmailUserFactory(is_active=False)
        self.user.activation_key = self.user.create_activation_key()
        self.user.save()

    def test_basic_activation(self):
        activated_user = EmailUser.objects.activate_user(
            self.user.activation_key)
        self.assertEqual(self.user.pk, activated_user.pk)
        user = EmailUser.objects.get(pk=self.user.pk)
        self.assertTrue(user.is_active)
        self.assertEqual(user.activation_key, EmailUser.ACTIVATED)

    def test_already_activated(self):
        key = self.user.activation_key
        EmailUser.objects.activate_user(key)
        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user(key)

    def test_wrong_key(self):
        another_key = self.user.create_activation_key()

        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user(another_key)

    def test_bad_format(self):
        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user("not a sha1 string")

    def test_unique_emails(self):
        # Users' emails must be unique, case-insensitively
        user1 = EmailUserFactory()
        with self.assertRaises(ValidationError):
            EmailUserFactory(email=user1.email.upper())
class ViewReportsButtonTest(ServiceInfoFrontendTestCase):

    def test_logout_and_login_as_staff(self):
        # Staff user sees the reports button even after logging out and in
        self.password = '******'
        self.user = EmailUserFactory(password=self.password)
        self.user.is_staff = True
        self.user.save()
        self.load_page_and_set_language()
        self.login()
        button = self.wait_for_element('view_reports_button')
        self.assertTrue(button.is_displayed())
        self.logout()
        # Give the page time to start reloading before looking for the button again
        time.sleep(1)
        self.login()
        # Give the page time to start reloading before looking for the button again
        time.sleep(1)
        button = self.wait_for_element('view_reports_button')
        self.assertTrue(button.is_displayed())
        # User can view reports page
        button.click()
        self.wait_for_element('report-table')

    def test_logout_and_login_as_non_staff(self):
        # Non-staff user sees the reports button, even after logging out
        # and in and changing language.  Even if superuser.
        self.password = '******'
        self.user = EmailUserFactory(password=self.password)
        self.user.is_superuser = True
        self.user.save()
        self.load_page_and_set_language()
        self.login()
        button = self.wait_for_element('view_reports_button', must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # Log out and in again
        self.logout()
        # Give the page time to start reloading before looking for the menu again
        time.sleep(0.5)
        self.login()
        # Give the page time to start reloading before looking for the button again
        time.sleep(0.5)
        button = self.wait_for_element('view_reports_button', must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # Set the language again
        form = self.wait_for_element('language-toggle')
        button = form.find_element_by_css_selector('[data-lang="%s"]' % 'en')
        button.click()
        # Give the page time to start reloading before looking for the button again
        time.sleep(0.5)
        button = self.wait_for_element('view_reports_button', must_be_visible=False)
        self.assertTrue(button.is_displayed())

        # User can view reports page
        button.click()
        self.wait_for_element('report-table')
Пример #4
0
class UserActivationTest(TestCase):
    def setUp(self):
        self.user = EmailUserFactory(is_active=False)
        self.user.activation_key = self.user.create_activation_key()
        self.user.save()

    def test_basic_activation(self):
        activated_user = EmailUser.objects.activate_user(self.user.activation_key)
        self.assertEqual(self.user.pk, activated_user.pk)
        user = EmailUser.objects.get(pk=self.user.pk)
        self.assertTrue(user.is_active)
        self.assertEqual(user.activation_key, EmailUser.ACTIVATED)

    def test_already_activated(self):
        key = self.user.activation_key
        EmailUser.objects.activate_user(key)
        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user(key)

    def test_wrong_key(self):
        another_key = self.user.create_activation_key()

        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user(another_key)

    def test_bad_format(self):
        with self.assertRaises(ValidationError):
            EmailUser.objects.activate_user("not a sha1 string")

    def test_send_email_to_user(self):
        # send_email_to_user() submits mail to Django and translates its content
        # We'll include a string in the template that we know Django has translated:
        english_text = "Are you sure?"
        french_text = "Êtes-vous sûr\xa0?"
        arabic_text = "هل أنت متأكد؟"

        our_template = Template('{% load i18n %}{% trans "' + english_text + '" %}')

        for lang, expected_text in [('', english_text), ('fr', french_text), ('ar', arabic_text),
                                    ('en', english_text)]:
            self.user.language = lang
            self.user.save()
            with patch('django.template.loader.get_template') as mock_get_template:
                mock_get_template.return_value = our_template
                self.user.send_email_to_user({}, '', '', '')

            # Test that one message has been sent.
            self.assertEqual(len(mail.outbox), 1)
            self.assertIn(expected_text, mail.outbox[0].body)
            # Empty the test outbox
            mail.outbox = []

    def test_unique_emails(self):
        # Users' emails must be unique, case-insensitively
        user1 = EmailUserFactory()
        with self.assertRaises(ValidationError):
            EmailUserFactory(email=user1.email.upper())