feat: Add SAMLProvidersWithOrg for Support View MFEs
This commit is contained in:
committed by
Ansab Gillani
parent
672f4465fc
commit
21581748ef
@@ -1369,3 +1369,33 @@ class LinkProgramEnrollmentSupportAPIViewTests(SupportViewTestCase):
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
error = "All linking lines must be in the format 'external_user_key,lms_username'"
|
||||
assert response_data['errors'] == [error]
|
||||
|
||||
|
||||
class SAMLProvidersWithOrgTests(SupportViewTestCase):
|
||||
"""
|
||||
Tests for the get_saml_providers API View
|
||||
"""
|
||||
_url = reverse("support:get_saml_providers")
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
Make the user support staff.
|
||||
"""
|
||||
super().setUp()
|
||||
SupportStaffRole().add_users(self.user)
|
||||
|
||||
self.org_key_list = ['test_org', 'donut_org', 'tri_org']
|
||||
for org_key in self.org_key_list:
|
||||
lms_org = OrganizationFactory(
|
||||
short_name=org_key
|
||||
)
|
||||
SAMLProviderConfigFactory(
|
||||
organization=lms_org,
|
||||
slug=org_key,
|
||||
enabled=True,
|
||||
)
|
||||
|
||||
def test_returning_saml_providers(self):
|
||||
response = self.client.get(self._url)
|
||||
response_data = json.loads(response.content.decode('utf-8'))
|
||||
assert response_data == self.org_key_list
|
||||
|
||||
@@ -15,7 +15,8 @@ from .views.manage_user import ManageUserDetailView, ManageUserSupportView
|
||||
from .views.program_enrollments import (
|
||||
LinkProgramEnrollmentSupportView,
|
||||
LinkProgramEnrollmentSupportAPIView,
|
||||
ProgramEnrollmentsInspectorView
|
||||
ProgramEnrollmentsInspectorView,
|
||||
SAMLProvidersWithOrg,
|
||||
)
|
||||
from .views.sso_records import SsoView
|
||||
|
||||
@@ -64,5 +65,10 @@ urlpatterns = [
|
||||
ProgramEnrollmentsInspectorView.as_view(),
|
||||
name='program_enrollments_inspector'
|
||||
),
|
||||
re_path(
|
||||
r'get_saml_providers/?$',
|
||||
SAMLProvidersWithOrg.as_view(),
|
||||
name='get_saml_providers'
|
||||
),
|
||||
re_path(r'sso_records/(?P<username_or_email>[\w.@+-]+)?$', SsoView.as_view(), name='sso_records'),
|
||||
]
|
||||
|
||||
@@ -262,3 +262,38 @@ class ProgramEnrollmentsInspectorView(View):
|
||||
).prefetch_related('program_course_enrollments')
|
||||
serialized = ProgramEnrollmentSerializer(program_enrollments, many=True)
|
||||
return serialized.data
|
||||
|
||||
|
||||
class SAMLProvidersWithOrg(APIView):
|
||||
"""
|
||||
Support-only API View for fetching a list of all
|
||||
organizations names which will be utilized as keys.
|
||||
"""
|
||||
@method_decorator(require_support_permission)
|
||||
def get(self, request):
|
||||
"""
|
||||
The get request returns a list of all
|
||||
organizations names which will be utilized as keys.
|
||||
* Example Request:
|
||||
- GET /support/get_saml_providers/
|
||||
* Example Response:
|
||||
[
|
||||
'test_org',
|
||||
'donut_org',
|
||||
'tri_org'
|
||||
]
|
||||
"""
|
||||
org_key_names = self._get_org_key_names()
|
||||
return Response(data=org_key_names)
|
||||
|
||||
def _get_org_key_names(self):
|
||||
"""
|
||||
From our Third_party_auth models, return a list of
|
||||
of organizations names which will be utilized as keys.
|
||||
"""
|
||||
saml_providers = SAMLProviderConfig.objects.current_set().filter(
|
||||
enabled=True,
|
||||
organization__isnull=False
|
||||
).select_related('organization')
|
||||
|
||||
return [saml_provider.organization.short_name for saml_provider in saml_providers]
|
||||
|
||||
Reference in New Issue
Block a user