Files
edx-platform/common/djangoapps/third_party_auth/tests/test_pipeline.py
zia.fazal@arbisoft.com d7ed021b8d Added ability to logout from IDP
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
2020-02-07 19:38:36 +05:00

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)