Logout link should be displayed only for learner portal Added changed to display only for learner portal Added unit tests check third_party_auth is enabled Changes to extend SSO logout link feature to Oauth providers Fixed quality violations Removed unncessary assert Reviewer feedback changes
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
"""Unit tests for third_party_auth/pipeline.py."""
|
|
|
|
|
|
import json
|
|
import ddt
|
|
import mock
|
|
import unittest
|
|
|
|
from third_party_auth import pipeline
|
|
from third_party_auth.tests import testutil
|
|
from third_party_auth.tests.testutil import simulate_running_pipeline
|
|
|
|
|
|
@unittest.skipUnless(testutil.AUTH_FEATURE_ENABLED, testutil.AUTH_FEATURES_KEY + ' not enabled')
|
|
@ddt.ddt
|
|
class ProviderUserStateTestCase(testutil.TestCase):
|
|
"""Tests ProviderUserState behavior."""
|
|
|
|
def test_get_unlink_form_name(self):
|
|
google_provider = self.configure_google_provider(enabled=True)
|
|
state = pipeline.ProviderUserState(google_provider, object(), None)
|
|
self.assertEqual(google_provider.provider_id + '_unlink_form', state.get_unlink_form_name())
|
|
|
|
@ddt.data(
|
|
('saml', 'tpa-saml'),
|
|
('oauth', 'google-oauth2'),
|
|
)
|
|
@ddt.unpack
|
|
def test_get_idp_logout_url_from_running_pipeline(self, idp_type, backend_name):
|
|
"""
|
|
Test idp logout url setting for running pipeline
|
|
"""
|
|
self.enable_saml()
|
|
idp_slug = "test"
|
|
idp_config = {"logout_url": "http://example.com/logout"}
|
|
getattr(self, 'configure_{idp_type}_provider'.format(idp_type=idp_type))(
|
|
enabled=True,
|
|
name="Test Provider",
|
|
slug=idp_slug,
|
|
backend_name=backend_name,
|
|
other_settings=json.dumps(idp_config)
|
|
)
|
|
request = mock.MagicMock()
|
|
kwargs = {
|
|
"response": {
|
|
"idp_name": idp_slug
|
|
}
|
|
}
|
|
with simulate_running_pipeline("third_party_auth.pipeline", backend_name, **kwargs):
|
|
logout_url = pipeline.get_idp_logout_url_from_running_pipeline(request)
|
|
self.assertEqual(idp_config['logout_url'], logout_url)
|