feat: Add SAMLProvidersWithOrg for Support View MFEs

This commit is contained in:
ansabgillani
2021-12-22 12:44:51 +05:00
committed by Ansab Gillani
parent 672f4465fc
commit 21581748ef
3 changed files with 72 additions and 1 deletions

View File

@@ -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

View File

@@ -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'),
]

View File

@@ -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]