def test_login_and_registration_form_signin_not_preserves_params(self, theme, url_name): params = [ ('course_id', 'edX/DemoX/Demo_Course'), ('enrollment_action', 'enroll'), ] # The response should not have a "Sign In" button with the URL # that preserves the querystring params with with_comprehensive_theme_context(theme): response = self.client.get(reverse(url_name), params, HTTP_ACCEPT="text/html") expected_url = '/login?{}'.format(self._finish_auth_url_param(params + [('next', '/dashboard')])) self.assertNotContains(response, expected_url) # Add additional parameters: params = [ ('course_id', 'edX/DemoX/Demo_Course'), ('enrollment_action', 'enroll'), ('course_mode', CourseMode.DEFAULT_MODE_SLUG), ('email_opt_in', 'true'), ('next', '/custom/final/destination') ] # Verify that this parameter is also preserved with with_comprehensive_theme_context(theme): response = self.client.get(reverse(url_name), params, HTTP_ACCEPT="text/html") expected_url = '/login?{}'.format(self._finish_auth_url_param(params)) self.assertNotContains(response, expected_url)
def test_login_and_registration_form_signin_not_preserves_params( self, theme, url_name): params = [ ('course_id', 'edX/DemoX/Demo_Course'), ('enrollment_action', 'enroll'), ] # The response should not have a "Sign In" button with the URL # that preserves the querystring params with with_comprehensive_theme_context(theme): response = self.client.get(reverse(url_name), params, HTTP_ACCEPT="text/html") expected_url = '/login?{}'.format( self._finish_auth_url_param(params + [('next', '/dashboard')])) self.assertNotContains(response, expected_url) # Add additional parameters: params = [('course_id', 'edX/DemoX/Demo_Course'), ('enrollment_action', 'enroll'), ('course_mode', CourseMode.DEFAULT_MODE_SLUG), ('email_opt_in', 'true'), ('next', '/custom/final/destination')] # Verify that this parameter is also preserved with with_comprehensive_theme_context(theme): response = self.client.get(reverse(url_name), params, HTTP_ACCEPT="text/html") expected_url = '/login?{}'.format(self._finish_auth_url_param(params)) self.assertNotContains(response, expected_url)
def test_footer_content_types(self, theme, accepts, content_type, content): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): resp = self._get_footer(accepts=accepts) assert resp['Content-Type'] == content_type self.assertContains(resp, content)
def test_language_rtl(self, theme, language, static_path): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): resp = self._get_footer(accepts="text/html", params={'language': language}) self.assertContains(resp, static_path)
def test_language_rtl(self, theme, language, static_path): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): resp = self._get_footer(accepts="text/html", params={'language': language}) self.assertEqual(resp.status_code, 200) self.assertIn(static_path, resp.content)
def test_footer_content_types(self, theme, accepts, content_type, content): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): resp = self._get_footer(accepts=accepts) self.assertEqual(resp.status_code, 200) self.assertEqual(resp["Content-Type"], content_type) self.assertIn(content, resp.content)
def test_include_dependencies(self, theme, include_dependencies): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): params = {'include-dependencies': 1} if include_dependencies else {} resp = self._get_footer(accepts="text/html", params=params) if include_dependencies: self.assertContains(resp, "vendor",) else: self.assertNotContains(resp, "vendor")
def test_show_openedx_logo(self, theme, show_logo): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): params = {'show-openedx-logo': 1} if show_logo else {} resp = self._get_footer(accepts="text/html", params=params) if show_logo: self.assertContains(resp, 'alt="Powered by Open edX"') else: self.assertNotContains(resp, 'alt="Powered by Open edX"')
def test_include_dependencies(self, theme, include_dependencies): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): params = {'include-dependencies': 1} if include_dependencies else {} resp = self._get_footer(accepts="text/html", params=params) self.assertEqual(resp.status_code, 200) if include_dependencies: self.assertIn("vendor", resp.content) else: self.assertNotIn("vendor", resp.content)
def test_show_openedx_logo(self, theme, show_logo): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): params = {"show-openedx-logo": 1} if show_logo else {} resp = self._get_footer(accepts="text/html", params=params) self.assertEqual(resp.status_code, 200) if show_logo: self.assertIn(settings.FOOTER_OPENEDX_URL, resp.content) else: self.assertNotIn(settings.FOOTER_OPENEDX_URL, resp.content)
def test_show_openedx_logo(self, theme, show_logo): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): params = {'show-openedx-logo': 1} if show_logo else {} resp = self._get_footer(accepts="text/html", params=params) self.assertEqual(resp.status_code, 200) if show_logo: self.assertIn('alt="Powered by Open edX"', resp.content) else: self.assertNotIn('alt="Powered by Open edX"', resp.content)
def test_footer_json(self): self._set_feature_flag(True) with with_comprehensive_theme_context(None): resp = self._get_footer() assert resp.status_code == 200 json_data = json.loads(resp.content.decode('utf-8')) assert isinstance(json_data, dict) # Logo assert 'logo_image' in json_data # Links assert 'navigation_links' in json_data for link in json_data["navigation_links"]: assert 'name' in link assert 'title' in link assert 'url' in link # Social links assert 'social_links' in json_data for link in json_data["social_links"]: assert 'name' in link assert 'title' in link assert 'url' in link assert 'icon-class' in link assert 'action' in link # Mobile links assert 'mobile_links' in json_data for link in json_data["mobile_links"]: assert 'name' in link assert 'title' in link assert 'url' in link assert 'image' in link # Legal links assert 'legal_links' in json_data for link in json_data["legal_links"]: assert 'name' in link assert 'title' in link assert 'url' in link # OpenEdX assert 'openedx_link' in json_data assert 'url' in json_data['openedx_link'] assert 'title' in json_data['openedx_link'] assert 'image' in json_data['openedx_link'] # Copyright assert 'copyright' in json_data
def test_footer_json(self, theme): self._set_feature_flag(True) with with_comprehensive_theme_context(theme): resp = self._get_footer() self.assertEqual(resp.status_code, 200) json_data = json.loads(resp.content) self.assertTrue(isinstance(json_data, dict)) # Logo self.assertIn("logo_image", json_data) # Links self.assertIn("navigation_links", json_data) for link in json_data["navigation_links"]: self.assertIn("name", link) self.assertIn("title", link) self.assertIn("url", link) # Social links self.assertIn("social_links", json_data) for link in json_data["social_links"]: self.assertIn("name", link) self.assertIn("title", link) self.assertIn("url", link) self.assertIn("icon-class", link) self.assertIn("action", link) # Mobile links self.assertIn("mobile_links", json_data) for link in json_data["mobile_links"]: self.assertIn("name", link) self.assertIn("title", link) self.assertIn("url", link) self.assertIn("image", link) # Legal links self.assertIn("legal_links", json_data) for link in json_data["legal_links"]: self.assertIn("name", link) self.assertIn("title", link) self.assertIn("url", link) # OpenEdX self.assertIn("openedx_link", json_data) self.assertIn("url", json_data["openedx_link"]) self.assertIn("title", json_data["openedx_link"]) self.assertIn("image", json_data["openedx_link"]) # Copyright self.assertIn("copyright", json_data)
def test_include_language_selector(self, theme, language, include_language_selector): self._set_feature_flag(True) DarkLangConfig(released_languages='en,eo,es-419,fr', enabled=True, changed_by=User().save()).save() with with_comprehensive_theme_context(theme): params = { key: val for key, val in [ ('language', language), ('include-language-selector', include_language_selector) ] if val } resp = self._get_footer(accepts="text/html", params=params) self.assertEqual(resp.status_code, 200) if include_language_selector: selected_language = language if language else 'en' self._verify_language_selector(resp.content, selected_language) else: self.assertNotIn('footer-language-selector', resp.content)