예제 #1
0
    def test_is_editable_has_met_requirements_and_value_updates(self, *args):
        """
        Ensure that the requirements for `is_editable` are met in order for
        EditIdentityProviderAdminForm to validate and that once it is valid,
        calling update_identity_provider() updates the `is_editable` field on
        the IdentityProvider as expected.
        """
        post_data = self._get_post_data(is_editable=True)
        edit_idp_form = EditIdentityProviderAdminForm(self.idp, post_data)
        edit_idp_form.cleaned_data = post_data
        with self.assertRaises(forms.ValidationError):
            edit_idp_form.clean_is_editable()

        email_domain = AuthenticatedEmailDomain.objects.create(
            identity_provider=self.idp,
            email_domain='vaultwax.com',
        )
        with self.assertRaises(forms.ValidationError):
            edit_idp_form.clean_is_editable()

        UserExemptFromSingleSignOn.objects.create(
            username='******',
            email_domain=email_domain,
        )
        self.assertTrue(edit_idp_form.is_valid())
        edit_idp_form.update_identity_provider(self.accounting_admin)

        idp = IdentityProvider.objects.get(id=self.idp.id)
        self.assertTrue(idp.is_editable)
예제 #2
0
 def test_bad_slug_update_is_invalid(self, *args):
     """
     Ensure that if passed a bad slug, EditIdentityProviderAdminForm raises
     a ValidationError and does not validate.
     """
     post_data = self._get_post_data(slug='bad slug')
     edit_idp_form = EditIdentityProviderAdminForm(self.idp, post_data)
     edit_idp_form.cleaned_data = post_data
     with self.assertRaises(forms.ValidationError):
         edit_idp_form.clean_slug()
     self.assertFalse(edit_idp_form.is_valid())
예제 #3
0
 def test_slug_update_conflict(self, *args):
     """
     Ensure that if another IdentityProvider exists with the same slug,
     EditIdentityProviderAdminForm raises a ValidationError and does not
     validate.
     """
     second_idp = IdentityProvider.objects.create(
         owner=self.account,
         name='Azure AD for VWX',
         slug='vwx',
         created_by='*****@*****.**',
         last_modified_by='*****@*****.**',
     )
     post_data = self._get_post_data(slug=second_idp.slug)
     edit_idp_form = EditIdentityProviderAdminForm(self.idp, post_data)
     edit_idp_form.cleaned_data = post_data
     with self.assertRaises(forms.ValidationError):
         edit_idp_form.clean_slug()
     self.assertFalse(edit_idp_form.is_valid())