core: bump django-guardian from 2.4.0 to v3.0.0 (#14453)
* core: bump django-guardian from 2.4.0 to v3.0.0 * Use GUARDIAN_MONKEY_PATCH_USER instead of deprecated GUARDIAN_MONKEY_PATCH * ??? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix issue in outpost tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * patch all outpost tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fixup guardian lock Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		 Marcelo Elizeche Landó
					Marcelo Elizeche Landó
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							abaf8d9544
						
					
				
				
					commit
					0be9c60a71
				
			| @ -1,9 +1,11 @@ | |||||||
| """Websocket tests""" | """Websocket tests""" | ||||||
|  |  | ||||||
| from dataclasses import asdict | from dataclasses import asdict | ||||||
|  | from unittest.mock import patch | ||||||
|  |  | ||||||
| from channels.routing import URLRouter | from channels.routing import URLRouter | ||||||
| from channels.testing import WebsocketCommunicator | from channels.testing import WebsocketCommunicator | ||||||
|  | from django.contrib.contenttypes.models import ContentType | ||||||
| from django.test import TransactionTestCase | from django.test import TransactionTestCase | ||||||
|  |  | ||||||
| from authentik import __version__ | from authentik import __version__ | ||||||
| @ -14,6 +16,12 @@ from authentik.providers.proxy.models import ProxyProvider | |||||||
| from authentik.root import websocket | from authentik.root import websocket | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def patched__get_ct_cached(app_label, codename): | ||||||
|  |     """Caches `ContentType` instances like its `QuerySet` does.""" | ||||||
|  |     return ContentType.objects.get(app_label=app_label, permission__codename=codename) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached) | ||||||
| class TestOutpostWS(TransactionTestCase): | class TestOutpostWS(TransactionTestCase): | ||||||
|     """Websocket tests""" |     """Websocket tests""" | ||||||
|  |  | ||||||
| @ -38,6 +46,7 @@ class TestOutpostWS(TransactionTestCase): | |||||||
|         ) |         ) | ||||||
|         connected, _ = await communicator.connect() |         connected, _ = await communicator.connect() | ||||||
|         self.assertFalse(connected) |         self.assertFalse(connected) | ||||||
|  |         await communicator.disconnect() | ||||||
|  |  | ||||||
|     async def test_auth_valid(self): |     async def test_auth_valid(self): | ||||||
|         """Test auth with token""" |         """Test auth with token""" | ||||||
| @ -48,6 +57,7 @@ class TestOutpostWS(TransactionTestCase): | |||||||
|         ) |         ) | ||||||
|         connected, _ = await communicator.connect() |         connected, _ = await communicator.connect() | ||||||
|         self.assertTrue(connected) |         self.assertTrue(connected) | ||||||
|  |         await communicator.disconnect() | ||||||
|  |  | ||||||
|     async def test_send(self): |     async def test_send(self): | ||||||
|         """Test sending of Hello""" |         """Test sending of Hello""" | ||||||
|  | |||||||
| @ -7,10 +7,8 @@ from django.db import migrations | |||||||
|  |  | ||||||
|  |  | ||||||
| def migrate_search_group(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): | def migrate_search_group(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): | ||||||
|     from authentik.core.models import User |  | ||||||
|     from django.apps import apps as real_apps |     from django.apps import apps as real_apps | ||||||
|     from django.contrib.auth.management import create_permissions |     from django.contrib.auth.management import create_permissions | ||||||
|     from guardian.shortcuts import UserObjectPermission |  | ||||||
|  |  | ||||||
|     db_alias = schema_editor.connection.alias |     db_alias = schema_editor.connection.alias | ||||||
|  |  | ||||||
|  | |||||||
| @ -132,7 +132,7 @@ TENANT_CREATION_FAKES_MIGRATIONS = True | |||||||
| TENANT_BASE_SCHEMA = "template" | TENANT_BASE_SCHEMA = "template" | ||||||
| PUBLIC_SCHEMA_NAME = CONFIG.get("postgresql.default_schema") | PUBLIC_SCHEMA_NAME = CONFIG.get("postgresql.default_schema") | ||||||
|  |  | ||||||
| GUARDIAN_MONKEY_PATCH = False | GUARDIAN_MONKEY_PATCH_USER = False | ||||||
|  |  | ||||||
| SPECTACULAR_SETTINGS = { | SPECTACULAR_SETTINGS = { | ||||||
|     "TITLE": "authentik", |     "TITLE": "authentik", | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ dependencies = [ | |||||||
|     "django-countries==7.6.1", |     "django-countries==7.6.1", | ||||||
|     "django-cte==1.3.3", |     "django-cte==1.3.3", | ||||||
|     "django-filter==25.1", |     "django-filter==25.1", | ||||||
|     "django-guardian<3.0.0", |     "django-guardian==3.0.0", | ||||||
|     "django-model-utils==5.0.0", |     "django-model-utils==5.0.0", | ||||||
|     "django-pglock==1.7.2", |     "django-pglock==1.7.2", | ||||||
|     "django-prometheus==2.3.1", |     "django-prometheus==2.3.1", | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
|  |  | ||||||
| from dataclasses import asdict | from dataclasses import asdict | ||||||
| from time import sleep | from time import sleep | ||||||
|  | from unittest.mock import patch | ||||||
|  |  | ||||||
| from guardian.shortcuts import assign_perm | from guardian.shortcuts import assign_perm | ||||||
| from ldap3 import ALL, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, SUBTREE, Connection, Server | from ldap3 import ALL, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, SUBTREE, Connection, Server | ||||||
| @ -15,10 +16,12 @@ from authentik.flows.models import Flow | |||||||
| from authentik.lib.generators import generate_id | from authentik.lib.generators import generate_id | ||||||
| from authentik.outposts.apps import MANAGED_OUTPOST | from authentik.outposts.apps import MANAGED_OUTPOST | ||||||
| from authentik.outposts.models import Outpost, OutpostConfig, OutpostType | from authentik.outposts.models import Outpost, OutpostConfig, OutpostType | ||||||
|  | from authentik.outposts.tests.test_ws import patched__get_ct_cached | ||||||
| from authentik.providers.ldap.models import APIAccessMode, LDAPProvider | from authentik.providers.ldap.models import APIAccessMode, LDAPProvider | ||||||
| from tests.e2e.utils import SeleniumTestCase, retry | from tests.e2e.utils import SeleniumTestCase, retry | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached) | ||||||
| class TestProviderLDAP(SeleniumTestCase): | class TestProviderLDAP(SeleniumTestCase): | ||||||
|     """LDAP and Outpost e2e tests""" |     """LDAP and Outpost e2e tests""" | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,6 +6,7 @@ from json import loads | |||||||
| from sys import platform | from sys import platform | ||||||
| from time import sleep | from time import sleep | ||||||
| from unittest.case import skip, skipUnless | from unittest.case import skip, skipUnless | ||||||
|  | from unittest.mock import patch | ||||||
|  |  | ||||||
| from channels.testing import ChannelsLiveServerTestCase | from channels.testing import ChannelsLiveServerTestCase | ||||||
| from jwt import decode | from jwt import decode | ||||||
| @ -17,10 +18,12 @@ from authentik.flows.models import Flow | |||||||
| from authentik.lib.generators import generate_id | from authentik.lib.generators import generate_id | ||||||
| from authentik.outposts.models import DockerServiceConnection, Outpost, OutpostConfig, OutpostType | from authentik.outposts.models import DockerServiceConnection, Outpost, OutpostConfig, OutpostType | ||||||
| from authentik.outposts.tasks import outpost_connection_discovery | from authentik.outposts.tasks import outpost_connection_discovery | ||||||
|  | from authentik.outposts.tests.test_ws import patched__get_ct_cached | ||||||
| from authentik.providers.proxy.models import ProxyProvider | from authentik.providers.proxy.models import ProxyProvider | ||||||
| from tests.e2e.utils import SeleniumTestCase, retry | from tests.e2e.utils import SeleniumTestCase, retry | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached) | ||||||
| class TestProviderProxy(SeleniumTestCase): | class TestProviderProxy(SeleniumTestCase): | ||||||
|     """Proxy and Outpost e2e tests""" |     """Proxy and Outpost e2e tests""" | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ from json import loads | |||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from time import sleep | from time import sleep | ||||||
| from unittest import skip | from unittest import skip | ||||||
|  | from unittest.mock import patch | ||||||
|  |  | ||||||
| from selenium.webdriver.common.by import By | from selenium.webdriver.common.by import By | ||||||
|  |  | ||||||
| @ -12,10 +13,12 @@ from authentik.core.models import Application | |||||||
| from authentik.flows.models import Flow | from authentik.flows.models import Flow | ||||||
| from authentik.lib.generators import generate_id | from authentik.lib.generators import generate_id | ||||||
| from authentik.outposts.models import Outpost, OutpostType | from authentik.outposts.models import Outpost, OutpostType | ||||||
|  | from authentik.outposts.tests.test_ws import patched__get_ct_cached | ||||||
| from authentik.providers.proxy.models import ProxyMode, ProxyProvider | from authentik.providers.proxy.models import ProxyMode, ProxyProvider | ||||||
| from tests.e2e.utils import SeleniumTestCase, retry | from tests.e2e.utils import SeleniumTestCase, retry | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached) | ||||||
| class TestProviderProxyForward(SeleniumTestCase): | class TestProviderProxyForward(SeleniumTestCase): | ||||||
|     """Proxy and Outpost e2e tests""" |     """Proxy and Outpost e2e tests""" | ||||||
|  |  | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
|  |  | ||||||
| from dataclasses import asdict | from dataclasses import asdict | ||||||
| from time import sleep | from time import sleep | ||||||
|  | from unittest.mock import patch | ||||||
|  |  | ||||||
| from pyrad.client import Client | from pyrad.client import Client | ||||||
| from pyrad.dictionary import Dictionary | from pyrad.dictionary import Dictionary | ||||||
| @ -12,10 +13,12 @@ from authentik.core.models import Application, User | |||||||
| from authentik.flows.models import Flow | from authentik.flows.models import Flow | ||||||
| from authentik.lib.generators import generate_id, generate_key | from authentik.lib.generators import generate_id, generate_key | ||||||
| from authentik.outposts.models import Outpost, OutpostConfig, OutpostType | from authentik.outposts.models import Outpost, OutpostConfig, OutpostType | ||||||
|  | from authentik.outposts.tests.test_ws import patched__get_ct_cached | ||||||
| from authentik.providers.radius.models import RadiusProvider | from authentik.providers.radius.models import RadiusProvider | ||||||
| from tests.e2e.utils import SeleniumTestCase, retry | from tests.e2e.utils import SeleniumTestCase, retry | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @patch("guardian.shortcuts._get_ct_cached", patched__get_ct_cached) | ||||||
| class TestProviderRadius(SeleniumTestCase): | class TestProviderRadius(SeleniumTestCase): | ||||||
|     """Radius Outpost e2e tests""" |     """Radius Outpost e2e tests""" | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								uv.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								uv.lock
									
									
									
										generated
									
									
									
								
							| @ -277,7 +277,7 @@ requires-dist = [ | |||||||
|     { name = "django-countries", specifier = "==7.6.1" }, |     { name = "django-countries", specifier = "==7.6.1" }, | ||||||
|     { name = "django-cte", specifier = "==1.3.3" }, |     { name = "django-cte", specifier = "==1.3.3" }, | ||||||
|     { name = "django-filter", specifier = "==25.1" }, |     { name = "django-filter", specifier = "==25.1" }, | ||||||
|     { name = "django-guardian", specifier = "<3.0.0" }, |     { name = "django-guardian", specifier = "==3.0.0" }, | ||||||
|     { name = "django-model-utils", specifier = "==5.0.0" }, |     { name = "django-model-utils", specifier = "==5.0.0" }, | ||||||
|     { name = "django-pglock", specifier = "==1.7.2" }, |     { name = "django-pglock", specifier = "==1.7.2" }, | ||||||
|     { name = "django-prometheus", specifier = "==2.3.1" }, |     { name = "django-prometheus", specifier = "==2.3.1" }, | ||||||
| @ -1027,14 +1027,14 @@ wheels = [ | |||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "django-guardian" | name = "django-guardian" | ||||||
| version = "2.4.0" | version = "3.0.0" | ||||||
| source = { registry = "https://pypi.org/simple" } | source = { registry = "https://pypi.org/simple" } | ||||||
| dependencies = [ | dependencies = [ | ||||||
|     { name = "django" }, |     { name = "django" }, | ||||||
| ] | ] | ||||||
| sdist = { url = "https://files.pythonhosted.org/packages/6f/4c/d1f6923a0ad7f16c403a54c09e94acb76ac6c3765e02523fb09b2b03e1a8/django-guardian-2.4.0.tar.gz", hash = "sha256:c58a68ae76922d33e6bdc0e69af1892097838de56e93e78a8361090bcd9f89a0", size = 159008, upload-time = "2021-05-23T22:11:26.23Z" } | sdist = { url = "https://files.pythonhosted.org/packages/30/82/2c76cdf77eae3cb0c3df394686daf8f84bcd604c0da7a26fa19f5fe74ed4/django_guardian-3.0.0.tar.gz", hash = "sha256:0c79d55c4af2cfc14fbd19539846a1ebfed2a38198b7697e0f5177b7f654e1cd", size = 79895, upload-time = "2025-05-07T19:33:23.328Z" } | ||||||
| wheels = [ | wheels = [ | ||||||
|     { url = "https://files.pythonhosted.org/packages/a2/25/869df12e544b51f583254aadbba6c1a95e11d2d08edeb9e58dd715112db5/django_guardian-2.4.0-py3-none-any.whl", hash = "sha256:440ca61358427e575323648b25f8384739e54c38b3d655c81d75e0cd0d61b697", size = 106107, upload-time = "2021-05-23T22:11:22.75Z" }, |     { url = "https://files.pythonhosted.org/packages/a5/81/a2f3d3245d1f4cf446d78863526fba0b1b140d60784095a5cc2d4e8ac709/django_guardian-3.0.0-py3-none-any.whl", hash = "sha256:f3ebe3cc7f486e267041b780c3429ad5db72c909df40c2f74adb1b059582a3cd", size = 112672, upload-time = "2025-05-07T19:33:21.719Z" }, | ||||||
| ] | ] | ||||||
|  |  | ||||||
| [[package]] | [[package]] | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user