2121from unittest import mock
2222from urllib .parse import parse_qs , urlparse
2323
24+ from django import http
2425from django .conf import settings
2526from django .contrib .auth import SESSION_KEY , get_user_model
2627from django .contrib .auth .models import AnonymousUser
2728from django .core .exceptions import ImproperlyConfigured
2829from django .test import Client , TestCase , override_settings
2930from django .test .client import RequestFactory
3031from django .urls import reverse , reverse_lazy
31- from django .utils .encoding import force_text
3232from djangosaml2 import views
3333from djangosaml2 .cache import OutstandingQueriesCache
3434from djangosaml2 .conf import get_config
@@ -57,6 +57,15 @@ def dummy_loader(request):
5757 return 'dummy_loader'
5858
5959
60+ def dummy_get_response (request : http .HttpRequest ):
61+ """
62+ Return a basic HttpResponse.
63+
64+ Function needed to instantiate SamlSessionMiddleware.
65+ """
66+ return http .HttpResponse ("Session test" )
67+
68+
6069non_callable = 'just a string'
6170
6271
@@ -433,7 +442,7 @@ def test_assertion_consumer_service(self):
433442
434443 # as the RelayState is empty we have redirect to ACS_DEFAULT_REDIRECT_URL
435444 self .assertRedirects (response , '/dashboard/' )
436- self .assertEqual (force_text (new_user .id ), client .session [SESSION_KEY ])
445+ self .assertEqual (str (new_user .id ), client .session [SESSION_KEY ])
437446
438447 @override_settings (ACS_DEFAULT_REDIRECT_URL = 'testprofiles:dashboard' )
439448 def test_assertion_consumer_service_default_relay_state (self ):
@@ -458,7 +467,7 @@ def test_assertion_consumer_service_default_relay_state(self):
458467
459468 # The RelayState is missing, redirect to ACS_DEFAULT_REDIRECT_URL
460469 self .assertRedirects (response , '/dashboard/' )
461- self .assertEqual (force_text (new_user .id ), self .client .session [SESSION_KEY ])
470+ self .assertEqual (str (new_user .id ), self .client .session [SESSION_KEY ])
462471
463472 def test_assertion_consumer_service_already_logged_in_allowed (self ):
464473 self .client .force_login (User .objects .create (
@@ -566,7 +575,7 @@ def test_echo_view_no_saml_session(self):
566575 request .COOKIES = self .client .cookies
567576 request .user = User .objects .last ()
568577
569- middleware = SamlSessionMiddleware ()
578+ middleware = SamlSessionMiddleware (dummy_get_response )
570579 middleware .process_request (request )
571580
572581 response = EchoAttributesView .as_view ()(request )
@@ -585,7 +594,7 @@ def test_echo_view_success(self):
585594 request = RequestFactory ().get ('/' )
586595 request .user = User .objects .last ()
587596
588- middleware = SamlSessionMiddleware ()
597+ middleware = SamlSessionMiddleware (dummy_get_response )
589598 middleware .process_request (request )
590599
591600 saml_session_name = getattr (
@@ -808,7 +817,7 @@ def test_custom_conf_loader_from_view(self):
808817 config_loader_path = 'djangosaml2.tests.test_config_loader_with_real_conf'
809818 request = RequestFactory ().get ('/login/' )
810819 request .user = AnonymousUser ()
811- middleware = SamlSessionMiddleware ()
820+ middleware = SamlSessionMiddleware (dummy_get_response )
812821 middleware .process_request (request )
813822
814823 saml_session_name = getattr (
@@ -855,7 +864,7 @@ def test_middleware_cookie_expireatbrowserclose(self):
855864 request = RequestFactory ().get ('/login/' )
856865 request .user = AnonymousUser ()
857866 request .session = session
858- middleware = SamlSessionMiddleware ()
867+ middleware = SamlSessionMiddleware (dummy_get_response )
859868 middleware .process_request (request )
860869
861870 saml_session_name = getattr (
@@ -882,7 +891,7 @@ def test_middleware_cookie_with_expiry(self):
882891 request = RequestFactory ().get ('/login/' )
883892 request .user = AnonymousUser ()
884893 request .session = session
885- middleware = SamlSessionMiddleware ()
894+ middleware = SamlSessionMiddleware (dummy_get_response )
886895 middleware .process_request (request )
887896
888897 saml_session_name = getattr (
0 commit comments