Skip to content
Snippets Groups Projects
Unverified Commit b95739c1 authored by srwang's avatar srwang Committed by GitHub
Browse files

Merge pull request #25888 from edx/swang/ws-1591

WS-1591: change Prospectus user dropdown to show avatar instead of username
parents b115dec7 70cf6ddb
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@ from django.utils.http import http_date, parse_http_date
from edx_rest_framework_extensions.auth.jwt import cookies as jwt_cookies
from edx_rest_framework_extensions.auth.jwt.constants import JWT_DELIMITER
from oauth2_provider.models import Application
from common.djangoapps.student.models import UserProfile
from openedx.core.djangoapps.oauth_dispatch.adapters import DOTAdapter
from openedx.core.djangoapps.oauth_dispatch.api import create_dot_access_token
......@@ -23,6 +24,7 @@ from openedx.core.djangoapps.oauth_dispatch.jwt import create_jwt_from_token
from openedx.core.djangoapps.user_api.accounts.utils import retrieve_last_sitewide_block_completed
from openedx.core.djangoapps.user_authn.exceptions import AuthFailedError
from common.djangoapps.util.json_request import JsonResponse
from openedx.core.djangoapps.user_api.accounts.image_helpers import get_profile_image_urls_for_user
log = logging.getLogger(__name__)
......@@ -219,6 +221,14 @@ def _set_deprecated_logged_in_cookie(response, cookie_settings):
return response
def _convert_to_absolute_uris(request, urls_obj):
""" Convert relative URL paths to absolute URIs """
for url_name, url_path in six.iteritems(urls_obj):
urls_obj[url_name] = request.build_absolute_uri(url_path)
return urls_obj
def _get_user_info_cookie_data(request, user):
""" Returns information that will populate the user info cookie. """
......@@ -245,14 +255,21 @@ def _get_user_info_cookie_data(request, user):
except User.DoesNotExist:
pass
# Convert relative URL paths to absolute URIs
for url_name, url_path in six.iteritems(header_urls):
header_urls[url_name] = request.build_absolute_uri(url_path)
header_urls = _convert_to_absolute_uris(request, header_urls)
image_urls = {}
try:
image_urls = get_profile_image_urls_for_user(user)
except UserProfile.DoesNotExist:
pass
image_urls = _convert_to_absolute_uris(request, image_urls)
user_info = {
'version': settings.EDXMKTG_USER_INFO_COOKIE_VERSION,
'username': user.username,
'header_urls': header_urls,
'user_image_urls': image_urls,
}
return user_info
......
# pylint: disable=missing-docstring
from datetime import date
import json
import six
from django.conf import settings
......@@ -15,13 +16,17 @@ from openedx.core.djangoapps.user_api.accounts.utils import retrieve_last_sitewi
from openedx.core.djangoapps.user_authn import cookies as cookies_api
from openedx.core.djangoapps.user_authn.tests.utils import setup_login_oauth_client
from openedx.core.djangolib.testing.utils import skip_unless_lms
from common.djangoapps.student.tests.factories import AnonymousUserFactory, UserFactory
from common.djangoapps.student.tests.factories import AnonymousUserFactory, UserFactory, UserProfileFactory
from openedx.core.djangoapps.profile_images.tests.helpers import make_image_file
from openedx.core.djangoapps.profile_images.images import create_profile_images
from openedx.core.djangoapps.user_api.accounts.image_helpers import get_profile_image_names
class CookieTests(TestCase):
def setUp(self):
super(CookieTests, self).setUp()
self.user = UserFactory.create()
self.user.profile = UserProfileFactory.create(user=self.user)
self.request = RequestFactory().get('/')
self.request.user = self.user
self.request.session = self._get_stub_session()
......@@ -31,6 +36,25 @@ class CookieTests(TestCase):
get_expiry_age=lambda: max_age,
)
def _convert_to_absolute_uris(self, request, urls_obj):
""" Convert relative URL paths to absolute URIs """
for url_name, url_path in six.iteritems(urls_obj):
urls_obj[url_name] = request.build_absolute_uri(url_path)
return urls_obj
def _get_expected_image_urls(self):
expected_image_urls = {
'full': '/static/default_500.png',
'large': '/static/default_120.png',
'medium': '/static/default_50.png',
'small': '/static/default_30.png'
}
expected_image_urls = self._convert_to_absolute_uris(self.request, expected_image_urls)
return expected_image_urls
def _get_expected_header_urls(self):
expected_header_urls = {
'logout': reverse('logout'),
......@@ -39,9 +63,7 @@ class CookieTests(TestCase):
'learner_profile': reverse('learner_profile', kwargs={'username': self.user.username}),
}
# Convert relative URL paths to absolute URIs
for url_name, url_path in six.iteritems(expected_header_urls):
expected_header_urls[url_name] = self.request.build_absolute_uri(url_path)
expected_header_urls = self._convert_to_absolute_uris(self.request, expected_header_urls)
return expected_header_urls
......@@ -85,12 +107,18 @@ class CookieTests(TestCase):
@skip_unless_lms
def test_get_user_info_cookie_data(self):
with make_image_file() as image_file:
create_profile_images(image_file, get_profile_image_names(self.user.username))
self.user.profile.profile_image_uploaded_at = date.today()
self.user.profile.save()
actual = cookies_api._get_user_info_cookie_data(self.request, self.user) # pylint: disable=protected-access
expected = {
'version': settings.EDXMKTG_USER_INFO_COOKIE_VERSION,
'username': self.user.username,
'header_urls': self._get_expected_header_urls(),
'user_image_urls': self._get_expected_image_urls(),
}
self.assertDictEqual(actual, expected)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment