def disconnect(self, *args, **kwargs): """ Override of SAMLAuth.disconnect to unlink the learner from enterprise customer if associated. """ from openedx.features.enterprise_support.api import unlink_enterprise_user_from_idp user = kwargs.get('user', None) unlink_enterprise_user_from_idp(self.strategy.request, user, self.name) return super(SAMLAuthBackend, self).disconnect(*args, **kwargs)
def test_unlink_enterprise_user_from_idp_no_customer_user(self, mock_customer_from_request, mock_registry): customer_idp = EnterpriseCustomerIdentityProviderFactory.create( provider_id='the-provider', ) customer = customer_idp.enterprise_customer mock_customer_from_request.return_value = { 'uuid': customer.uuid, } mock_registry.get_enabled_by_backend_name.return_value = [ mock.Mock(provider_id='the-provider') ] request = mock.Mock() unlink_enterprise_user_from_idp(request, self.user, idp_backend_name='the-backend-name') assert 0 == EnterpriseCustomerUser.objects.filter(user_id=self.user.id).count()