From 6130bdc39959f1f5e5aab08d7a11a7b95d5bac6d Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Sun, 16 Jul 2023 06:54:10 -0400
Subject: [PATCH] Add special assertResponse kwargs just for
 extra_user_auth_setup

---
 .../test_cases/integration_test_case.py       | 21 ++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/django_expanded_test_cases/test_cases/integration_test_case.py b/django_expanded_test_cases/test_cases/integration_test_case.py
index 726ab13..e9b7d42 100644
--- a/django_expanded_test_cases/test_cases/integration_test_case.py
+++ b/django_expanded_test_cases/test_cases/integration_test_case.py
@@ -63,7 +63,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         url_args=None, url_kwargs=None, url_query_params=None,
         redirect_args=None, redirect_kwargs=None, redirect_query_params=None,
         expected_title=None, expected_header=None, expected_messages=None, expected_content=None,
-        auto_login=True, user=None, user_permissions=None, user_groups=None,
+        auto_login=True, user=None, user_permissions=None, user_groups=None, extra_usergen_kwargs=None,
         ignore_content_ordering=False, content_starts_after=None, content_ends_before=None,
         **kwargs,
     ):
@@ -96,6 +96,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         :param user: User to log in with, if auto_login is True. Defaults to `test_user`.
         :param user_permissions: Optional permissions to provide to login user.
         :param user_groups: Optional groups to provide to login user.
+        :param extra_usergen_kwargs: Optional dictionary of values to pass to _get_login_user__extra_user_auth_setup().
         :param ignore_content_ordering: Bool indicating if ordering should be verified. Defaults to checking ordering.
         :param content_starts_after: The HTML that expected_content should occur after. This HTML and everything
                                      preceding is stripped out of the "search space" for the expected_content value.
@@ -111,6 +112,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         redirect_kwargs = {**kwargs, **(redirect_kwargs or {})}
         redirect_query_params = redirect_query_params or {}
         url_kwargs = {**kwargs.pop('kwargs', {}), **(url_kwargs or {}), **kwargs}
+        extra_usergen_kwargs = extra_usergen_kwargs or {}
 
         # Reset client "user login" state for new response generation.
         self.client.logout()
@@ -131,6 +133,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             user=user,
             user_permissions=user_permissions,
             user_groups=user_groups,
+            extra_usergen_kwargs=extra_usergen_kwargs,
         )
 
         # Optionally output all debug info for found response.
@@ -162,6 +165,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             expected_title=expected_title, expected_header=expected_header, expected_messages=expected_messages,
             expected_content=expected_content,
             auto_login=auto_login, user=user, user_permissions=user_permissions, user_groups=user_groups,
+            extra_usergen_kwargs=extra_usergen_kwargs,
             ignore_content_ordering=ignore_content_ordering, content_starts_after=content_starts_after,
             content_ends_before=content_ends_before,
             **kwargs,
@@ -215,6 +219,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             expected_title=expected_title, expected_header=expected_header, expected_messages=expected_messages,
             expected_content=expected_content,
             auto_login=auto_login, user=user, user_permissions=user_permissions, user_groups=user_groups,
+            extra_usergen_kwargs=extra_usergen_kwargs,
             ignore_content_ordering=ignore_content_ordering, content_starts_after=content_starts_after,
             content_ends_before=content_ends_before,
             **kwargs,
@@ -232,7 +237,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         url_args=None, url_kwargs=None, url_query_params=None,
         redirect_args=None, redirect_kwargs=None, redirect_query_params=None,
         expected_title=None, expected_header=None, expected_messages=None, expected_content=None,
-        auto_login=True, user=None, user_permissions=None, user_groups=None,
+        auto_login=True, user=None, user_permissions=None, user_groups=None, extra_usergen_kwargs=None,
         ignore_content_ordering=False, content_starts_after=None, content_ends_before=None,
         **kwargs,
     ):
@@ -246,6 +251,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         redirect_args = redirect_args or []
         redirect_kwargs = redirect_kwargs or {}
         redirect_query_params = redirect_query_params or {}
+        extra_usergen_kwargs = extra_usergen_kwargs or {}
 
         # Call base function to handle actual logic.
         return self.assertResponse(
@@ -270,6 +276,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             user=user,
             user_permissions=user_permissions,
             user_groups=user_groups,
+            extra_usergen_kwargs=extra_usergen_kwargs,
             ignore_content_ordering=ignore_content_ordering,
             content_starts_after=content_starts_after,
             content_ends_before=content_ends_before,
@@ -285,7 +292,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         url_args=None, url_kwargs=None, url_query_params=None,
         redirect_args=None, redirect_kwargs=None, redirect_query_params=None,
         expected_title=None, expected_header=None, expected_messages=None, expected_content=None,
-        auto_login=True, user=None, user_permissions=None, user_groups=None,
+        auto_login=True, user=None, user_permissions=None, user_groups=None, extra_usergen_kwargs=None,
         ignore_content_ordering=False, content_starts_after=None, content_ends_before=None,
         **kwargs,
     ):
@@ -299,6 +306,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         redirect_args = redirect_args or []
         redirect_kwargs = redirect_kwargs or {}
         redirect_query_params = redirect_query_params or {}
+        extra_usergen_kwargs = extra_usergen_kwargs or {}
 
         # Forcibly add values to "data" dict, so that POST doesn't validate to empty in view.
         # This guarantees that view serves as POST, like this specific assertion expects.
@@ -329,6 +337,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             user=user,
             user_permissions=user_permissions,
             user_groups=user_groups,
+            extra_usergen_kwargs=extra_usergen_kwargs,
             ignore_content_ordering=ignore_content_ordering,
             content_starts_after=content_starts_after,
             content_ends_before=content_ends_before,
@@ -943,7 +952,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         *args,
         get=True, data=None, secure=True,
         url_args=None, url_kwargs=None, query_params=None,
-        auto_login=True, user=None, user_permissions=None, user_groups=None,
+        auto_login=True, user=None, user_permissions=None, user_groups=None, extra_usergen_kwargs=None,
         **kwargs,
     ):
         """Helper function for assertResponse().
@@ -959,6 +968,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         :param auto_login: Bool indicating if User should be "logged in" to client or not.
         :param user_permissions: Set of Django Permissions to give to test user before accessing page.
         :param user_groups: Set of Django PermissionGroups to give to test user before accessing page.
+        :param extra_usergen_kwargs: Optional dictionary of values to pass to _get_login_user__extra_user_auth_setup().
         :return: Django response object for provided url.
         """
         # Handle mutable data defaults.
@@ -966,6 +976,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
         url_args = (*args, *kwargs.pop('args', []), *(url_args or []))
         url_kwargs = {**kwargs.pop('kwargs', {}), **(url_kwargs or {}), **kwargs}
         query_params = query_params or {}
+        extra_usergen_kwargs = {**kwargs, **(extra_usergen_kwargs or {})}
 
         # Validate data types.
         if not isinstance(data, dict):
@@ -979,7 +990,7 @@ class IntegrationTestCase(BaseTestCase, ResponseTestCaseMixin):
             auto_login=auto_login,
             user_permissions=user_permissions,
             user_groups=user_groups,
-            **kwargs,
+            **extra_usergen_kwargs,
         )
 
         # Handle url sanitization.
-- 
GitLab