Exemplo n.º 1
0
    def setUp(self):
        expiration = datetime.date.today() + datetime.timedelta(weeks=5)
        self.company = Company(name='Test Company', expiration_date=expiration)
        self.company.save()

        self.user_model = get_user_model()

        # Create a user who has permissions for companies and company reps
        self.user = self.user_model.objects.create_user(
            username='******',
            email='*****@*****.**',
            password='******',
            first_name='John',
            last_name='Superuser')

        company_content_type = ContentType.objects.get_for_model(Company)
        rep_content_type = ContentType.objects.get_for_model(CompanyRep)
        company_add_permission = Permission.objects.get(
            content_type=company_content_type, codename='add_company')
        company_change_permission = Permission.objects.get(
            content_type=company_content_type, codename='change_company')
        companies_view_permission = Permission.objects.get(
            content_type=company_content_type, codename='view_companies')
        rep_add_permission = Permission.objects.get(
            content_type=rep_content_type, codename='add_companyrep')
        rep_change_permission = Permission.objects.get(
            content_type=rep_content_type, codename='change_companyrep')
        rep_delete_permission = Permission.objects.get(
            content_type=rep_content_type, codename='delete_companyrep')
        self.user.user_permissions.add(company_add_permission,
                                       company_change_permission,
                                       companies_view_permission,
                                       rep_add_permission,
                                       rep_change_permission,
                                       rep_delete_permission)
Exemplo n.º 2
0
    def test_company_is_expired(self):
        """Make sure is_expired properly indicates expiration."""
        today = datetime.date.today()

        # Make the company's expiration in the past:
        expiration = today - datetime.timedelta(days=1)
        company = Company(name='Test Company', expiration_date=expiration)
        company.save()
        self.assertTrue(company.is_expired())
Exemplo n.º 3
0
    def test_company_is_not_expired(self):
        """Make sure is_expired properly indicates non-expiration."""
        today = datetime.date.today()

        # Make the company's expiration date weeks in the future:
        expiration = today + datetime.timedelta(weeks=5)
        company = Company(name='Test Company', expiration_date=expiration)
        company.save()
        self.assertFalse(company.is_expired())

        # Move the expiration date to today, which should be the final
        # non-expired day:
        expiration = today
        company.expiration_date = expiration
        company.save()
        self.assertFalse(company.is_expired())
Exemplo n.º 4
0
    def test_company_user_auth_succeeds_for_valid_account(self):
        """Verify that a company rep user can log in if their company's
        subscription is not expired.
        """
        # Create a company rep for the user, with a company that is active
        # (is_expired returns False)
        company = Company(name='Test Company',
                          expiration_date=datetime.date.today())
        company.save()
        with patch.object(Company, 'is_expired',
                          return_value=False) as mock_is_expired:
            rep = CompanyRep(user=self.user, company=company)
            rep.save()

            # Ensure that the user can be authenticated
            form = AuthenticationForm(None, self.form_data)
            self.assertTrue(form.is_valid())
        self.assertEquals(mock_is_expired.call_count, 1)
Exemplo n.º 5
0
    def test_companyrep_delete_view(self):
        """Ensure that representatives can be deleted and that deleted reps
        have their accounts disabled.
        """
        company = Company(expiration_date='3000-01-01')
        company.save()
        companyrep_user = self.user_model.objects.create_user(
            username='******', password='******')
        companyrep_user_pk = companyrep_user.pk
        companyrep = CompanyRep(company=company, user=companyrep_user)
        companyrep.save()

        self.assertTrue(
            self.client.login(username=self.user.username,
                              password='******'))
        self.assertTrue(companyrep_user.is_active)
        self.assertTrue(
            self.client.login(username='******', password='******'))

        # Use the view
        self.assertTrue(
            self.client.login(username=self.user.username,
                              password='******'))
        response = self.client.get(reverse('companies:rep-delete',
                                           args=(companyrep.pk, )),
                                   follow=True)
        self.assertContains(response, 'Are you sure')
        self.client.post(reverse('companies:rep-delete',
                                 args=(companyrep.pk, )),
                         follow=True)

        # Check that everything has been deleted
        self.assertFalse(CompanyRep.objects.exists())

        # Check that the rep can't log in
        companyrep_user = User.objects.get(pk=companyrep_user_pk)
        self.assertFalse(companyrep_user.is_active)
        self.assertFalse(
            self.client.login(username='******', password='******'))
Exemplo n.º 6
0
    def test_company_user_auth_fails_for_expired_account(self):
        """Verify that a company rep user cannot log in if their company's
        subscription is expired.
        """
        # Create a company rep for the user, with a company that has an expired
        # subscription (is_expired returns True)
        company = Company(name='Test Company',
                          expiration_date=datetime.date.today())
        company.save()
        with patch.object(Company, 'is_expired',
                          return_value=True) as mock_is_expired:
            rep = CompanyRep(user=self.user, company=company)
            rep.save()

            # Ensure that the user cannot be authenticated
            form = AuthenticationForm(None, self.form_data)
            self.assertFalse(form.is_valid())
            expected_error_msg = (
                '{}\'s subscription to this website has expired'.format(
                    company.name))
            self.assertIn(expected_error_msg, form.non_field_errors()[0])
        self.assertEquals(mock_is_expired.call_count, 1)
Exemplo n.º 7
0
    def setUp(self):
        expiration = datetime.date.today() + datetime.timedelta(weeks=5)
        self.company = Company(name='Test Company', expiration_date=expiration)
        self.company.save()

        self.user_model = get_user_model()