Skip to content

Commit

Permalink
feat: pluggable url for idv location
Browse files Browse the repository at this point in the history
  • Loading branch information
zacharis278 committed Sep 25, 2024
1 parent 3768efa commit d43c9a9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
4 changes: 3 additions & 1 deletion lms/djangoapps/verify_student/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from django.core.exceptions import ObjectDoesNotExist
from django.utils.timezone import now
from django.utils.translation import gettext as _
from openedx_filters.learning.filters import IDVPageURLRequested

from common.djangoapps.course_modes.models import CourseMode
from common.djangoapps.student.models import User
Expand Down Expand Up @@ -244,7 +245,8 @@ def get_verify_location(cls, course_id=None):
location = f'{settings.ACCOUNT_MICROFRONTEND_URL}/id-verification'
if course_id:
location += f'?course_id={quote(str(course_id))}'
return location

return IDVPageURLRequested.run_filter(location)

@classmethod
def get_verification_details_by_id(cls, attempt_id):
Expand Down
33 changes: 32 additions & 1 deletion lms/djangoapps/verify_student/tests/test_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@

import ddt
from django.conf import settings
from django.test import TestCase
from django.test import TestCase, override_settings
from django.utils.timezone import now
from django.utils.translation import gettext as _
from freezegun import freeze_time
from openedx_filters import PipelineStep
from pytz import utc

from common.djangoapps.student.tests.factories import UserFactory
Expand All @@ -33,6 +34,16 @@
}


class TestIdvPageUrlRequestedPipelineStep(PipelineStep):
""" Utility function to test a configured pipeline step """
TEST_URL = 'example.com/verify'

def run_filter(self, url): # pylint: disable=arguments-differ
return {
"url": self.TEST_URL
}


@patch.dict(settings.VERIFY_STUDENT, FAKE_SETTINGS)
@ddt.ddt
class TestIDVerificationService(ModuleStoreTestCase):
Expand Down Expand Up @@ -167,6 +178,26 @@ def test_get_verify_location_from_string(self):
expected_path = f'{settings.ACCOUNT_MICROFRONTEND_URL}/id-verification'
assert path == (expected_path + '?course_id=course-v1%3AedX%2BDemoX%2BDemo_Course')

@override_settings(
OPEN_EDX_FILTERS_CONFIG={
"org.openedx.learning.idv.page.url.requested.v1": {
"pipeline": [
"lms.djangoapps.verify_student.tests.test_services.TestIdvPageUrlRequestedPipelineStep",
],
"fail_silently": False,
},
},
)
def test_get_verify_location_with_filter_step(self):
"""
Test IDV flow location can be customized with an openedx filter
"""
url = IDVerificationService.get_verify_location()
assert url == TestIdvPageUrlRequestedPipelineStep.TEST_URL

url = IDVerificationService.get_verify_location('course-v1:edX+DemoX+Demo_Course')
assert url == TestIdvPageUrlRequestedPipelineStep.TEST_URL

def test_get_expiration_datetime(self):
"""
Test that the latest expiration datetime is returned if there are multiple records
Expand Down

0 comments on commit d43c9a9

Please sign in to comment.