Exemple #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)
Exemple #2
0
    def test_slug_and_last_modified_by_updates(self, *args):
        """
        Ensure that the `slug` and `last_modified_by` fields properly update
        when EditIdentityProviderAdminForm validates and calls
        update_identity_provider().
        """
        post_data = self._get_post_data(slug='vaultwax-2')
        edit_idp_form = EditIdentityProviderAdminForm(self.idp, post_data)
        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.assertEqual(idp.slug, post_data['slug'])
        self.assertEqual(idp.last_modified_by, self.accounting_admin.username)
        self.assertNotEqual(idp.created_by, self.accounting_admin.username)
Exemple #3
0
    def test_name_updates_and_is_required(self, *args):
        """
        Ensure that the `name` field is both required and updates the name
        of the IdentityProvider when EditIdentityProviderAdminForm
        validates and update_identity_provider() is called.
        """
        bad_post_data = self._get_post_data(name='')
        bad_edit_idp_form = EditIdentityProviderAdminForm(self.idp, bad_post_data)
        self.assertFalse(bad_edit_idp_form.is_valid())

        post_data = self._get_post_data(name='new name test')
        edit_idp_form = EditIdentityProviderAdminForm(self.idp, post_data)
        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.assertEqual(idp.name, post_data['name'])
Exemple #4
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())
Exemple #5
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())
 def edit_idp_form(self):
     if self.request.method == 'POST' and not self.is_deletion_request:
         return EditIdentityProviderAdminForm(self.identity_provider,
                                              self.request.POST)
     return EditIdentityProviderAdminForm(self.identity_provider)