authentik
authentik copied to clipboard
stages/authenticator_webauthn: Update FIDO MDS3 & Passkey aaguid blobs
stages/authenticator_webauthn: Update FIDO MDS3 & Passkey aaguid blobs
Deploy Preview for authentik-storybook canceled.
| Name | Link |
|---|---|
| Latest commit | 0d2cd206daeaf3aadc0b240e15c620d6c62faac0 |
| Latest deploy log | https://app.netlify.com/sites/authentik-storybook/deploys/66e6411d30cd9000084e95b1 |
Deploy Preview for authentik-docs canceled.
| Name | Link |
|---|---|
| Latest commit | 0d2cd206daeaf3aadc0b240e15c620d6c62faac0 |
| Latest deploy log | https://app.netlify.com/sites/authentik-docs/deploys/66e6411d468e08000806c900 |
:x: 1 Tests Failed:
| Tests completed | Failed | Passed | Skipped |
|---|---|---|---|
| 1531 | 1 | 1530 | 1 |
View the top 1 failed tests by shortest run time
tests.e2e.test_provider_ldap.TestProviderLDAP test_ldap_bind_search_no_permsStack Traces | 36.6s run time
self = <unittest.case._Outcome object at 0x7f071974bd10> test_case = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> subTest = False @contextlib.contextmanager def testPartExecutor(self, test_case, subTest=False): old_success = self.success self.success = True try: > yield .../hostedtoolcache/Python/3.12.5.............../x64/lib/python3.12/unittest/case.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> result = <TestCaseFunction test_ldap_bind_search_no_perms> def run(self, result=None): if result is None: result = self.defaultTestResult() startTestRun = getattr(result, 'startTestRun', None) stopTestRun = getattr(result, 'stopTestRun', None) if startTestRun is not None: startTestRun() else: stopTestRun = None result.startTest(self) try: testMethod = getattr(self, self._testMethodName) if (getattr(self.__class__, "__unittest_skip__", False) or getattr(testMethod, "__unittest_skip__", False)): # If the class or method was skipped. skip_why = (getattr(self.__class__, '__unittest_skip_why__', '') or getattr(testMethod, '__unittest_skip_why__', '')) _addSkip(result, self, skip_why) return result expecting_failure = ( getattr(self, "__unittest_expecting_failure__", False) or getattr(testMethod, "__unittest_expecting_failure__", False) ) outcome = _Outcome(result) start_time = time.perf_counter() try: self._outcome = outcome with outcome.testPartExecutor(self): self._callSetUp() if outcome.success: outcome.expecting_failure = expecting_failure with outcome.testPartExecutor(self): > self._callTestMethod(testMethod) .../hostedtoolcache/Python/3.12.5.............../x64/lib/python3.12/unittest/case.py:634: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> method = <bound method TestProviderLDAP.test_ldap_bind_search_no_perms of <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms>> def _callTestMethod(self, method): > if method() is not None: .../hostedtoolcache/Python/3.12.5.............../x64/lib/python3.12/unittest/case.py:589: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> args = (), kwargs = {} @wraps(func) def wrapper(self: TransactionTestCase, *args, **kwargs): """Run test again if we're below max_retries, including tearDown and setUp. Otherwise raise the error""" nonlocal count try: > return func(self, *args, **kwargs) tests/e2e/utils.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = (<tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms>,) kwargs = {}, file = 'default/flow-default-invalidation-flow.yaml' content = 'version: 1\nmetadata:\n name: Default - Invalidation flow\nentries:\n- attrs:\n designation: invalidation\n na...0\n stage: !KeyOf default-invalidation-logout\n target: !KeyOf flow\n model: authentik_flows.flowstagebinding\n' @wraps(func) def wrapper(*args, **kwargs): for file in files: content = BlueprintInstance(path=file).retrieve() Importer.from_string(content).apply() > return func(*args, **kwargs) .../blueprints/tests/__init__.py:25: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = (<tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms>,) kwargs = {}, config = <AuthentikTenantsConfig: authentik_tenants> @wraps(func) def wrapper(*args, **kwargs): config = apps.get_app_config(app_name) if isinstance(config, ManagedAppConfig): config._on_startup_callback(None) > return func(*args, **kwargs) .../blueprints/tests/__init__.py:43: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = (<tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms>,) kwargs = {}, config = <AuthentikOutpostConfig: authentik_outposts> @wraps(func) def wrapper(*args, **kwargs): config = apps.get_app_config(app_name) if isinstance(config, ManagedAppConfig): config._on_startup_callback(None) > return func(*args, **kwargs) .../blueprints/tests/__init__.py:43: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> @retry() @apply_blueprint( "default/flow-default-authentication-flow.yaml", "default/flow-default-invalidation-flow.yaml", ) @reconcile_app("authentik_tenants") @reconcile_app("authentik_outposts") def test_ldap_bind_search_no_perms(self): """Test simple bind + search""" user = create_test_user() self._prepare() server = Server("ldap://localhost:3389", get_info=ALL) _connection = Connection( server, raise_exceptions=True, user=f"cn={user.username},ou=users,dc=ldap,dc=goauthentik,dc=io", password=user.username, ) _connection.bind() self.assertTrue( Event.objects.filter( action=EventAction.LOGIN, user={ "pk": user.pk, "email": user.email, "username": user.username, }, ) ) _connection.search( "ou=Users,DC=ldaP,dc=goauthentik,dc=io", "(objectClass=user)", search_scope=SUBTREE, attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES], ) response: list = _connection.response # Remove raw_attributes to make checking easier for obj in response: del obj["raw_attributes"] del obj["raw_dn"] obj["attributes"] = dict(obj["attributes"]) expected = [ { "dn": f"cn={user.username},ou=users,dc=ldap,dc=goauthentik,dc=io", "attributes": { "cn": user.username, "sAMAccountName": user.username, "uid": user.uid, "name": user.name, "displayName": user.name, "sn": user.name, "mail": user.email, "objectClass": [ "top", "person", "organizationalPerson", "inetOrgPerson", "user", "posixAccount", "goauthentik.io/ldap/user", ], "uidNumber": 2000 + user.pk, "gidNumber": 2000 + user.pk, "memberOf": [ f"cn={group.name},ou=groups,dc=ldap,dc=goauthentik,dc=io" for group in user.ak_groups.all() ], "homeDirectory": f"/home/{user.username}", "ak-active": True, "ak-superuser": False, }, "type": "searchResEntry", }, ] > self.assert_list_dict_equal(expected, response) tests/e2e/test_provider_ldap.py:410: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> expected = [{'attributes': {'ak-active': True, 'ak-superuser': False, 'cn': 'VULW26U7KvD1jRIJdBzF', 'displayName': 'VULW26U7KvD1jRIJdBzF', ...}, 'dn': 'cn=VULW26U7KvD1jRIJdBzF,ou=users,dc=ldap,dc=goauthentik,dc=io', 'type': 'searchResEntry'}] actual = [{'attributes': {'ak-active': True, 'ak-superuser': True, 'cn': '4iVcEuOdpvTEFNtdYdZ5', 'displayName': '4iVcEuOdpvTEFN...7KvD1jRIJdBzF', ...}, 'dn': 'cn=VULW26U7KvD1jRIJdBzF,ou=users,dc=ldap,dc=goauthentik,dc=io', 'type': 'searchResEntry'}] match_key = 'dn' def assert_list_dict_equal(self, expected: list[dict], actual: list[dict], match_key="dn"): """Assert a list of dictionaries is identical, ignoring the ordering of items""" > self.assertEqual(len(expected), len(actual)) tests/e2e/test_provider_ldap.py:414: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> first = 1, second = 4, msg = None def assertEqual(self, first, second, msg=None): """Fail if the two objects are unequal as determined by the '==' operator. """ assertion_func = self._getAssertEqualityFunc(first, second) > assertion_func(first, second, msg=msg) .../hostedtoolcache/Python/3.12.5.............../x64/lib/python3.12/unittest/case.py:885: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.e2e.test_provider_ldap.TestProviderLDAP testMethod=test_ldap_bind_search_no_perms> first = 1, second = 4, msg = '1 != 4' def _baseAssertEqual(self, first, second, msg=None): """The default assertEqual implementation, not type specific.""" if not first == second: standardMsg = '%s != %s' % _common_shorten_repr(first, second) msg = self._formatMessage(msg, standardMsg) > raise self.failureException(msg) E AssertionError: 1 != 4 .../hostedtoolcache/Python/3.12.5.............../x64/lib/python3.12/unittest/case.py:878: AssertionError
To view individual test run time comparison to the main branch, go to the Test Analytics Dashboard