1515
1616class DjangoAltchaWidgetTest (TestCase ):
1717 def test_widget_initialization_with_default_options (self ):
18- widget = AltchaWidget (options = None )
18+ widget = AltchaWidget ()
1919 self .assertNotIn ("challengeurl" , widget .options )
2020 self .assertNotIn ("challengejson" , widget .options )
2121 self .assertNotIn ("auto" , widget .options )
@@ -56,7 +56,7 @@ def test_widget_rendering_with_complex_options(self):
5656 self .assertIn (expected , rendered_widget_html )
5757
5858 def test_js_translation_included_if_enabled (self ):
59- widget = AltchaWidget (options = None )
59+ widget = AltchaWidget ()
6060 expected_js = "/static/altcha/dist_i18n/all.min.js"
6161
6262 with override_settings (ALTCHA_INCLUDE_TRANSLATIONS = True ):
@@ -66,3 +66,61 @@ def test_js_translation_included_if_enabled(self):
6666 with override_settings (ALTCHA_INCLUDE_TRANSLATIONS = False ):
6767 rendered_widget_html = widget .render ("name" , "value" )
6868 self .assertNotIn (expected_js , rendered_widget_html )
69+
70+ def test_widget_renders_default_js_url_through_static (self ):
71+ widget = AltchaWidget ()
72+ rendered_html = widget .render ("name" , "value" )
73+ self .assertIn ("/static/altcha/altcha.min.js" , rendered_html )
74+
75+ def test_widget_respects_custom_static_url (self ):
76+ widget = AltchaWidget ()
77+ with override_settings (STATIC_URL = "/assets/" ):
78+ rendered_html = widget .render ("name" , "value" )
79+ self .assertIn ("/assets/altcha/altcha.min.js" , rendered_html )
80+ self .assertNotIn ("/static/altcha/altcha.min.js" , rendered_html )
81+
82+ def test_widget_resolves_relative_js_url_override (self ):
83+ widget = AltchaWidget ()
84+ with override_settings (ALTCHA_JS_URL = "custom/altcha.js" ):
85+ rendered_html = widget .render ("name" , "value" )
86+ self .assertIn ("/static/custom/altcha.js" , rendered_html )
87+
88+ def test_widget_passes_through_absolute_js_url (self ):
89+ widget = AltchaWidget ()
90+ with override_settings (ALTCHA_JS_URL = "/my_static/altcha.js" ):
91+ rendered_html = widget .render ("name" , "value" )
92+ self .assertIn ('src="/my_static/altcha.js"' , rendered_html )
93+ self .assertNotIn ("/static/my_static/altcha.js" , rendered_html )
94+
95+ def test_widget_passes_through_http_js_url (self ):
96+ widget = AltchaWidget ()
97+ cdn_url = "http://cdn/altcha.min.js"
98+ with override_settings (ALTCHA_JS_URL = cdn_url ):
99+ rendered_html = widget .render ("name" , "value" )
100+ self .assertIn (cdn_url , rendered_html )
101+
102+ def test_widget_passes_through_https_js_url (self ):
103+ widget = AltchaWidget ()
104+ cdn_url = "https://cdn/altcha.min.js"
105+ with override_settings (ALTCHA_JS_URL = cdn_url ):
106+ rendered_html = widget .render ("name" , "value" )
107+ self .assertIn (cdn_url , rendered_html )
108+
109+ def test_widget_resolves_translations_url_through_static (self ):
110+ widget = AltchaWidget ()
111+ with override_settings (
112+ ALTCHA_INCLUDE_TRANSLATIONS = True ,
113+ STATIC_URL = "/assets/" ,
114+ ):
115+ rendered_html = widget .render ("name" , "value" )
116+ self .assertIn ("/assets/altcha/dist_i18n/all.min.js" , rendered_html )
117+
118+ def test_widget_passes_through_absolute_translations_url (self ):
119+ widget = AltchaWidget ()
120+ cdn_url = "https://cdni18n/all.min.js"
121+ with override_settings (
122+ ALTCHA_INCLUDE_TRANSLATIONS = True ,
123+ ALTCHA_JS_TRANSLATIONS_URL = cdn_url ,
124+ ):
125+ rendered_html = widget .render ("name" , "value" )
126+ self .assertIn (cdn_url , rendered_html )
0 commit comments