fix: remove learner record MFE URL building logic

[APER-2240]

The monolith no longer needs to understand how to build URLs to the Learner Record MFE. The Credentials IDA has logic to determine if (and how) a request should be redirected to the MFE so we can remove these  changes. Another PR later will remove the unused settings.
This commit is contained in:
Justin Hynes
2023-01-30 16:12:25 -05:00
parent a50ef12ad0
commit e8679056e4
2 changed files with 11 additions and 85 deletions

View File

@@ -2,10 +2,6 @@
import uuid
from unittest import mock
from django.test import override_settings
from edx_toggles.toggles.testutils import override_waffle_switch
from openedx.core.djangoapps.credentials.config import USE_LEARNER_RECORD_MFE
from openedx.core.djangoapps.credentials.models import CredentialsApiConfig
from openedx.core.djangoapps.credentials.tests import factories
from openedx.core.djangoapps.credentials.tests.mixins import CredentialsApiConfigMixin
@@ -93,69 +89,12 @@ class TestGetCredentials(CredentialsApiConfigMixin, CacheIsolationTestCase):
}
assert kwargs['querystring'] == querystring
@override_settings(LEARNER_RECORD_MICROFRONTEND_URL=None)
@override_settings(CREDENTIALS_PUBLIC_SERVICE_URL="http://foo")
def test_get_credentials_records_url(self):
"""
A test that verifies the functionality of the `get_credentials_records_url`. 
A test that verifies the functionality of the `get_credentials_records_url`.
"""
result = get_credentials_records_url()
assert result == "http://foo/records/"
assert result == "https://credentials.example.com/records/"
result = get_credentials_records_url("abcdefgh-ijkl-mnop-qrst-uvwxyz123456")
assert result == "http://foo/records/programs/abcdefghijklmnopqrstuvwxyz123456/"
@override_settings(LEARNER_RECORD_MICROFRONTEND_URL="http://blah")
@override_settings(CREDENTIALS_PUBLIC_SERVICE_URL="http://foo")
@override_waffle_switch(USE_LEARNER_RECORD_MFE, False)
def test_get_credentials_records_mfe_url_waffle_disabled(self):
"""
A test that verifies the results of the `get_credentials_records_url` function when the
LEARNER_RECORD_MICROFRONTEND_URL setting exists but the USE_LEARNER_RECORD_MFE waffle flag is disabled.
"""
result = get_credentials_records_url()
assert result == "http://foo/records/"
result = get_credentials_records_url("abcdefgh-ijkl-mnop-qrst-uvwxyz123456")
assert result == "http://foo/records/programs/abcdefghijklmnopqrstuvwxyz123456/"
@override_settings(LEARNER_RECORD_MICROFRONTEND_URL="http://blah")
@override_settings(CREDENTIALS_PUBLIC_SERVICE_URL="http://foo")
@override_waffle_switch(USE_LEARNER_RECORD_MFE, True)
def test_get_credentials_records_mfe_url_waffle_enabled(self):
"""
A test that verifies the results of the `get_credentials_records_url` function when the
LEARNER_RECORD_MICROFRONTEND_URL setting exists but the USE_LEARNER_RECORD_MFE waffle flag is enabled.
"""
result = get_credentials_records_url()
assert result == "http://blah/"
result = get_credentials_records_url("abcdefgh-ijkl-mnop-qrst-uvwxyz123456")
assert result == "http://blah/abcdefghijklmnopqrstuvwxyz123456/"
@override_settings(CREDENTIALS_PUBLIC_SERVICE_URL=None)
@override_settings(LEARNER_RECORD_MICROFRONTEND_URL=None)
def test_get_credentials_records_url_expect_none(self):
"""
A test that verifieis the results of the `get_credentials_records_url` function when the system is configured
to use neither the Credentials IDA or the Learner Record MFE.
"""
result = get_credentials_records_url()
assert result is None
result = get_credentials_records_url("abcdefgh-ijkl-mnop-qrst-uvwxyz123456")
assert result is None
@override_settings(LEARNER_RECORD_MICROFRONTEND_URL="http://blah")
@override_settings(CREDENTIALS_PUBLIC_SERVICE_URL=None)
@override_waffle_switch(USE_LEARNER_RECORD_MFE, True)
def test_get_credentials_records_url_only_mfe_configured(self):
"""
A test that verifieis the results of the `get_credentials_records_url` function when the system is configured
to use only the Learner Record MFE.
"""
result = get_credentials_records_url()
assert result == "http://blah/"
result = get_credentials_records_url("abcdefgh-ijkl-mnop-qrst-uvwxyz123456")
assert result == "http://blah/abcdefghijklmnopqrstuvwxyz123456/"
assert result == "https://credentials.example.com/records/programs/abcdefghijklmnopqrstuvwxyz123456"

View File

@@ -1,10 +1,8 @@
"""Helper functions for working with Credentials."""
import requests
from edx_rest_api_client.auth import SuppliedJwtAuth
from urllib.parse import urljoin
from django.conf import settings
from openedx.core.djangoapps.credentials.config import USE_LEARNER_RECORD_MFE
from openedx.core.djangoapps.credentials.models import CredentialsApiConfig
from openedx.core.djangoapps.oauth_dispatch.jwt import create_jwt_for_user
from openedx.core.lib.edx_api_utils import get_api_data
@@ -18,27 +16,16 @@ def get_credentials_records_url(program_uuid=None):
Arguments:
program_uuid (str): Optional program uuid to link for a program records URL
"""
base_url = settings.CREDENTIALS_PUBLIC_SERVICE_URL
learner_record_mfe_base_url = settings.LEARNER_RECORD_MICROFRONTEND_URL
use_learner_record_mfe = USE_LEARNER_RECORD_MFE.is_enabled() and learner_record_mfe_base_url
if not base_url and not use_learner_record_mfe:
base_url = CredentialsApiConfig.current().public_records_url
if base_url is None:
return None
# If we have a program uuid we build a link to the appropriate Program Record page in Credentials (or the Learner
# Record MFE)
if program_uuid:
# Credentials expects the UUID without dashes so we strip them here
stripped_program_uuid = program_uuid.replace('-', '')
if use_learner_record_mfe:
return f"{learner_record_mfe_base_url}/{stripped_program_uuid}/"
return f"{base_url}/records/programs/{stripped_program_uuid}/"
else:
# Otherwise, build a link to the appropriate Learner Record index page
if use_learner_record_mfe:
return f"{learner_record_mfe_base_url}/"
else:
return f"{base_url}/records/"
# Credentials expects Program UUIDs without dashes so we remove them here
stripped_program_uuid = program_uuid.replace("-", "")
return urljoin(base_url, f"programs/{stripped_program_uuid}")
return base_url
def get_credentials_api_client(user):