From 6437f17da70f2afdd72ef0c363591a89eb1c50f5 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 21 Sep 2021 12:12:58 +0200 Subject: [PATCH 50/59] misc: fix unused-variable pylint error (#56982) --- src/authentic2/a2_rbac/models.py | 4 +- src/authentic2/a2_rbac/signal_handlers.py | 2 +- src/authentic2/a2_rbac/utils.py | 8 +-- src/authentic2/api_views.py | 2 +- src/authentic2/apps/journal/models.py | 4 +- src/authentic2/authenticators.py | 2 +- src/authentic2/backends/ldap_backend.py | 15 +++--- src/authentic2/backends/models_backend.py | 2 +- src/authentic2/csv_import.py | 4 +- src/authentic2/custom_user/apps.py | 6 +-- .../custom_user/migrations/0001_initial.py | 2 +- src/authentic2/forms/registration.py | 2 +- src/authentic2/hashers.py | 10 ++-- .../management/commands/check-and-repair.py | 6 +-- .../management/commands/sync-ldap-users.py | 2 +- src/authentic2/manager/forms.py | 2 +- src/authentic2/manager/role_views.py | 2 +- src/authentic2/manager/user_views.py | 2 +- .../0031_add_search_vector_to_attributes.py | 2 +- src/authentic2/migrations/__init__.py | 2 +- src/authentic2/models.py | 2 +- .../saml/management/commands/mapping.py | 4 +- .../saml/management/commands/sync-metadata.py | 2 +- src/authentic2/saml/managers.py | 2 +- src/authentic2/utils/misc.py | 4 +- src/authentic2/views.py | 2 +- src/authentic2_idp_oidc/apps.py | 2 +- src/authentic2_idp_oidc/views.py | 2 +- src/django_rbac/backends.py | 2 +- src/django_rbac/utils.py | 2 +- tests/auth_fc/test_auth_fc.py | 4 +- tests/conftest.py | 2 +- tests/idp_oidc/test_misc.py | 8 +-- tests/test_a2_rbac.py | 2 +- tests/test_all.py | 4 +- tests/test_api.py | 52 +++++++++---------- tests/test_attribute_kinds.py | 2 +- tests/test_commands.py | 14 ++--- tests/test_concurrency.py | 2 +- tests/test_crypto.py | 2 +- tests/test_csv_import.py | 2 +- tests/test_data_transfer.py | 16 +++--- tests/test_idp_cas.py | 4 +- tests/test_idp_saml2.py | 2 +- tests/test_import_export_site_cmd.py | 6 +-- tests/test_journal.py | 44 ++++++++-------- tests/test_large_userbase.py | 6 +-- tests/test_ldap.py | 2 +- tests/test_manager.py | 20 +++---- tests/test_role_manager.py | 2 +- tests/test_template.py | 2 +- tests/test_user_manager.py | 2 +- tests/utils.py | 4 +- 53 files changed, 152 insertions(+), 157 deletions(-) diff --git a/src/authentic2/a2_rbac/models.py b/src/authentic2/a2_rbac/models.py index 94af780e..484fd24c 100644 --- a/src/authentic2/a2_rbac/models.py +++ b/src/authentic2/a2_rbac/models.py @@ -296,7 +296,7 @@ class Role(RoleAbstractBase): op = MANAGE_MEMBERS_OP Permission = rbac_utils.get_permission_model() operation = rbac_utils.get_operation(op) - self_perm, created = Permission.objects.get_or_create( + self_perm, dummy = Permission.objects.get_or_create( operation=operation, target_ct=ContentType.objects.get_for_model(self), target_id=self.pk, @@ -310,7 +310,7 @@ class Role(RoleAbstractBase): op = MANAGE_MEMBERS_OP Permission = rbac_utils.get_permission_model() operation = rbac_utils.get_operation(op) - self_perm, created = Permission.objects.get_or_create( + self_perm, dummy = Permission.objects.get_or_create( operation=operation, target_ct=ContentType.objects.get_for_model(self), target_id=self.pk ) self.permissions.through.objects.get_or_create(role=self, permission=self_perm) diff --git a/src/authentic2/a2_rbac/signal_handlers.py b/src/authentic2/a2_rbac/signal_handlers.py index fa4c02d0..4dca1be5 100644 --- a/src/authentic2/a2_rbac/signal_handlers.py +++ b/src/authentic2/a2_rbac/signal_handlers.py @@ -34,7 +34,7 @@ def create_default_ou(app_config, verbosity=2, interactive=True, using=DEFAULT_D if OrganizationalUnit.objects.exists(): return # Create a default OU if none exists currently - default_ou, created = OrganizationalUnit.objects.get_or_create( + default_ou, dummy = OrganizationalUnit.objects.get_or_create( slug='default', defaults={ 'default': True, diff --git a/src/authentic2/a2_rbac/utils.py b/src/authentic2/a2_rbac/utils.py index 1a4cf78a..c5bea373 100644 --- a/src/authentic2/a2_rbac/utils.py +++ b/src/authentic2/a2_rbac/utils.py @@ -33,7 +33,7 @@ def get_default_ou(): def get_view_user_perm(ou=None): User = get_user_model() Permission = rbac_utils.get_permission_model() - view_user_perm, created = Permission.objects.get_or_create( + view_user_perm, dummy = Permission.objects.get_or_create( operation=rbac_utils.get_operation(VIEW_OP), target_ct=ContentType.objects.get_for_model(ContentType), target_id=ContentType.objects.get_for_model(User).pk, @@ -46,7 +46,7 @@ def get_view_user_perm(ou=None): def get_search_ou_perm(ou=None): if ou: Permission = rbac_utils.get_permission_model() - view_ou_perm, created = Permission.objects.get_or_create( + view_ou_perm, dummy = Permission.objects.get_or_create( operation=rbac_utils.get_operation(SEARCH_OP), target_ct=ContentType.objects.get_for_model(ou), target_id=ou.pk, @@ -55,7 +55,7 @@ def get_search_ou_perm(ou=None): else: OU = rbac_utils.get_ou_model() Permission = rbac_utils.get_permission_model() - view_ou_perm, created = Permission.objects.get_or_create( + view_ou_perm, dummy = Permission.objects.get_or_create( operation=rbac_utils.get_operation(SEARCH_OP), target_ct=ContentType.objects.get_for_model(ContentType), target_id=ContentType.objects.get_for_model(OU).pk, @@ -67,7 +67,7 @@ def get_search_ou_perm(ou=None): def get_manage_authorizations_user_perm(ou=None): User = get_user_model() Permission = rbac_utils.get_permission_model() - manage_authorizations_user_perm, created = Permission.objects.get_or_create( + manage_authorizations_user_perm, dummy = Permission.objects.get_or_create( operation=rbac_utils.get_operation(models.MANAGE_AUTHORIZATIONS_OP), target_ct=ContentType.objects.get_for_model(ContentType), target_id=ContentType.objects.get_for_model(User).pk, diff --git a/src/authentic2/api_views.py b/src/authentic2/api_views.py index 35a34504..1005d5ce 100644 --- a/src/authentic2/api_views.py +++ b/src/authentic2/api_views.py @@ -1079,7 +1079,7 @@ class CheckPasswordAPI(BaseRpcView): for authenticator in self.get_authenticators(): if hasattr(authenticator, 'authenticate_credentials'): try: - user, oidc_client = authenticator.authenticate_credentials( + user, dummy_oidc_client = authenticator.authenticate_credentials( username, password, request=request ) result['result'] = 1 diff --git a/src/authentic2/apps/journal/models.py b/src/authentic2/apps/journal/models.py index fe1754d3..3349154b 100644 --- a/src/authentic2/apps/journal/models.py +++ b/src/authentic2/apps/journal/models.py @@ -166,7 +166,7 @@ class EventTypeDefinition(metaclass=EventTypeDefinitionMeta): @GlobalCache def event_type_cache(name): - event_type, created = EventType.objects.get_or_create(name=name) + event_type, dummy = EventType.objects.get_or_create(name=name) return event_type @@ -419,7 +419,7 @@ class Event(models.Model): else: yield None count += 1 - for i in range(len(reference_types) - count): + for dummy in range(len(reference_types) - count): yield None class Meta: diff --git a/src/authentic2/authenticators.py b/src/authentic2/authenticators.py index bb61d091..daf08618 100644 --- a/src/authentic2/authenticators.py +++ b/src/authentic2/authenticators.py @@ -80,7 +80,7 @@ class LoginPasswordAuthenticator(BaseAuthenticator): .annotate(count=Count('ou')) .order_by('-count') ) - for ou_id, count in qs: + for ou_id, dummy_count in qs: if not ou_id: continue service_ou_ids.append(ou_id) diff --git a/src/authentic2/backends/ldap_backend.py b/src/authentic2/backends/ldap_backend.py index 1b3a2599..e5632e83 100644 --- a/src/authentic2/backends/ldap_backend.py +++ b/src/authentic2/backends/ldap_backend.py @@ -691,7 +691,7 @@ class LDAPBackend: return for conn in cls.get_connections(block): existing_groups = cls.get_groups_dns(conn, block) - for group_dn, role_slugs in group_to_role_mapping: + for group_dn, dummy_role_slugs in group_to_role_mapping: if group_dn in existing_groups: continue log.warning('ldap: unknown group "%s" mapped to a role', group_dn) @@ -828,7 +828,8 @@ class LDAPBackend: else: log.warning( 'could not rebind after a bind failure, unable to attach the error to the' - ' user' + ' user (error %s)', + error, ) user_login_failure(authz_id) else: @@ -1043,7 +1044,7 @@ class LDAPBackend: if create is None: create = block['create_group'] if create: - group, created = Group.objects.get_or_create(name=group_name) + group, dummy = Group.objects.get_or_create(name=group_name) return group else: try: @@ -1176,7 +1177,7 @@ class LDAPBackend: attributes.add(block[field]) for external_id_tuple in map_text(block['external_id_tuples']): attributes.update(cls.attribute_name_from_external_id_tuple(external_id_tuple)) - for from_at, to_at in map_text(block['attribute_mappings']): + for dummy_from_at, to_at in map_text(block['attribute_mappings']): attributes.add(to_at) for mapping in block['user_attributes']: from_ldap = mapping.get('from_ldap') @@ -1467,7 +1468,7 @@ class LDAPBackend: user._changed = False external_id = self.build_external_id(map_text(block['external_id_tuples'][0]), attributes) if external_id: - new, created = UserExternalId.objects.get_or_create( + new, dummy = UserExternalId.objects.get_or_create( user=user, external_id=external_id, source=force_text(block['realm']) ) if block['clean_external_id_on_update']: @@ -1538,7 +1539,7 @@ class LDAPBackend: while first_pass or pg_ctrl.cookie: first_pass = False msgid = conn.search_ext(*args, serverctrls=[pg_ctrl], **kwargs) - result_type, data, msgid, serverctrls = conn.result3(msgid) + dummy_result_type, data, msgid, serverctrls = conn.result3(msgid) pg_ctrl.cookie = serverctrls[0].cookie yield from cls.normalize_ldap_results(data) @@ -1785,7 +1786,7 @@ class LDAPBackend: context = ssl.create_default_context() try: with socket.create_connection((hostname, port), timeout=2) as sock: - with context.wrap_socket(sock, server_hostname=hostname) as ssock: + with context.wrap_socket(sock, server_hostname=hostname): pass except (socket.herror, socket.gaierror) as e: return False, 'socket address error on host %s: %s' % (hostname, e) diff --git a/src/authentic2/backends/models_backend.py b/src/authentic2/backends/models_backend.py index f545d096..ea8532b1 100644 --- a/src/authentic2/backends/models_backend.py +++ b/src/authentic2/backends/models_backend.py @@ -54,7 +54,7 @@ class ModelBackend(BaseModelBackend): queries.append(models.Q(**{username_field: username})) if '@' not in username: if app_settings.REALMS: - for realm, desc in app_settings.REALMS: + for realm, dummy in app_settings.REALMS: queries.append(models.Q(**{username_field: upn(username, realm)})) else: queries.append(models.Q(**{username_field: upn(username, realm)})) diff --git a/src/authentic2/csv_import.py b/src/authentic2/csv_import.py index 6894333a..230856c4 100644 --- a/src/authentic2/csv_import.py +++ b/src/authentic2/csv_import.py @@ -268,7 +268,7 @@ class ImportUserForm(BaseUserForm): def clean_password_hash(self): password_hash = self.cleaned_data['password_hash'] try: - hasher = identify_hasher(password_hash) + identify_hasher(password_hash) except ValueError: raise ValidationError(_('Invalid password format or unknown hashing algorithm.')) return password_hash @@ -485,7 +485,7 @@ class UserCsvImporter: pass if not header.field: try: - attribute = Attribute.objects.get(name=header.name) # NOQA: F841 + Attribute.objects.get(name=header.name) header.attribute = True except Attribute.DoesNotExist: pass diff --git a/src/authentic2/custom_user/apps.py b/src/authentic2/custom_user/apps.py index e025c4da..ab80d6de 100644 --- a/src/authentic2/custom_user/apps.py +++ b/src/authentic2/custom_user/apps.py @@ -50,7 +50,7 @@ class CustomUserConfig(AppConfig): content_type = ContentType.objects.get_for_model(User) attrs = {} - attrs['first_name'], created = Attribute.objects.get_or_create( + attrs['first_name'], dummy = Attribute.objects.get_or_create( name='first_name', defaults={ 'kind': 'string', @@ -61,7 +61,7 @@ class CustomUserConfig(AppConfig): 'user_visible': True, }, ) - attrs['last_name'], created = Attribute.objects.get_or_create( + attrs['last_name'], dummy = Attribute.objects.get_or_create( name='last_name', defaults={ 'kind': 'string', @@ -76,7 +76,7 @@ class CustomUserConfig(AppConfig): serialize = get_kind('string').get('serialize') for user in User.objects.all(): for attr_name, value in attrs.items(): - av, created = AttributeValue.objects.get_or_create( + AttributeValue.objects.get_or_create( content_type=content_type, object_id=user.id, attribute=value, diff --git a/src/authentic2/custom_user/migrations/0001_initial.py b/src/authentic2/custom_user/migrations/0001_initial.py index e18a06a2..6c76dcc9 100644 --- a/src/authentic2/custom_user/migrations/0001_initial.py +++ b/src/authentic2/custom_user/migrations/0001_initial.py @@ -43,7 +43,7 @@ def copy_old_users_to_custom_user_model(apps, schema_editor): assert old_user.id == new_user.id for group in old_user.groups.all(): new_groups.append(GroupThrough(user_id=new_user.id, group_id=group.id)) - for permission in old_user.user_permissions.all(): + for dummy in old_user.user_permissions.all(): new_permissions.append(PermissionThrough(user_id=new_user.id, group_id=group.id)) # mass create group and permission relations GroupThrough.objects.bulk_create(new_groups) diff --git a/src/authentic2/forms/registration.py b/src/authentic2/forms/registration.py index 2e298595..b4738186 100644 --- a/src/authentic2/forms/registration.py +++ b/src/authentic2/forms/registration.py @@ -144,7 +144,7 @@ class RegistrationCompletionFormNoPassword(profile_forms.BaseUserForm): if commit and app_settings.A2_REGISTRATION_GROUPS: groups = [] for name in app_settings.A2_REGISTRATION_GROUPS: - group, created = Group.objects.get_or_create(name=name) + group, dummy = Group.objects.get_or_create(name=name) groups.append(group) user.groups = groups return user diff --git a/src/authentic2/hashers.py b/src/authentic2/hashers.py index 65cf8ed8..15beb45c 100644 --- a/src/authentic2/hashers.py +++ b/src/authentic2/hashers.py @@ -74,7 +74,7 @@ class Drupal7PasswordHasher(hashers.BasePasswordHasher): return '%s$%s$%s$%s' % (self.algorithm, count, salt, h) def to_drupal(self, encoded): - algo, count, salt, h = encoded.split('$', 3) + dummy_algo, count, salt, h = encoded.split('$', 3) count = self.i64toa(math.ceil(math.log(int(count), 2))) return '$S$%s%s%s' % (count, salt, h) @@ -83,12 +83,12 @@ class Drupal7PasswordHasher(hashers.BasePasswordHasher): assert salt and '$' not in salt h = salt.encode() password = password.encode() - for i in range(iterations + 1): + for dummy in range(iterations + 1): h = self.digest(h + password).digest() return "%s$%d$%s$%s" % (self.algorithm, iterations, salt, self.b64encode(h)[:43]) def verify(self, password, encoded): - algorithm, iterations, salt, hash = encoded.split('$', 3) + algorithm, iterations, salt, dummy = encoded.split('$', 3) assert algorithm == self.algorithm encoded_2 = self.encode(password, salt, int(iterations)) return constant_time_compare(encoded, encoded_2) @@ -121,7 +121,7 @@ class CommonPasswordHasher(hashers.BasePasswordHasher): return "%s$%s$%s" % (self.algorithm, salt, hash) def verify(self, password, encoded): - algorithm, salt, hash = encoded.split('$', 2) + algorithm, salt, dummy_hash = encoded.split('$', 2) assert algorithm == self.algorithm encoded_2 = self.encode(password, salt) return constant_time_compare(encoded, encoded_2) @@ -227,7 +227,7 @@ class JoomlaPasswordHasher(CommonPasswordHasher): return "%s$md5$%s$%s" % (self.algorithm, salt, hash) def verify(self, password, encoded): - algorithm, subalgo, salt, hash = encoded.split('$', 3) + algorithm, dummy_subalgo, salt, dummy_hash = encoded.split('$', 3) salt = unhexlify(salt) if algorithm != self.algorithm: raise ValueError('not a joomla encoded password') diff --git a/src/authentic2/management/commands/check-and-repair.py b/src/authentic2/management/commands/check-and-repair.py index 15f42c93..45770e13 100644 --- a/src/authentic2/management/commands/check-and-repair.py +++ b/src/authentic2/management/commands/check-and-repair.py @@ -121,7 +121,7 @@ class Command(BaseCommand): with tenant_context(tenant): self.tenant_shown = False self.output = False - with fake_atomic(faked=self.fake) as faked: + with fake_atomic(faked=self.fake): self.check_and_repair(options) if self.fake and self.output: self.success('Faked!') @@ -233,7 +233,7 @@ class Command(BaseCommand): if targets_with_duplicates: self.warning('Found %d manage members permissions with duplicates', len(targets_with_duplicates)) if self.repair: - for operation_id, target_ct_id, target_id in targets_with_duplicates: + for dummy_operation_id, target_ct_id, target_id in targets_with_duplicates: qs = Permission.objects.filter(target_ct_id=target_ct_id, target_id=target_id) for perm in qs: linked_admin_role = Role.objects.get( @@ -245,7 +245,7 @@ class Command(BaseCommand): self.notice(' - %s: [%s]', target, '; '.join(map(str, qs))) if self.do_repair(): self.notice('Deleting duplicate manage members permissions...', ending=' ') - for operation_id, target_ct_id, target_id in targets_with_duplicates: + for dummy_operation_id, target_ct_id, target_id in targets_with_duplicates: qs = Permission.objects.filter(target_ct_id=target_ct_id, target_id=target_id).order_by( 'id' ) diff --git a/src/authentic2/management/commands/sync-ldap-users.py b/src/authentic2/management/commands/sync-ldap-users.py index 37ddc937..5b4410c3 100644 --- a/src/authentic2/management/commands/sync-ldap-users.py +++ b/src/authentic2/management/commands/sync-ldap-users.py @@ -55,5 +55,5 @@ class Command(BaseCommand): elif verbosity == 3: ldap_logger.setLevel(logging.DEBUG) - for user in LDAPBackend.get_users(): + for dummy in LDAPBackend.get_users(): continue diff --git a/src/authentic2/manager/forms.py b/src/authentic2/manager/forms.py index 3036563d..ea8d5378 100644 --- a/src/authentic2/manager/forms.py +++ b/src/authentic2/manager/forms.py @@ -97,7 +97,7 @@ class LimitQuerysetFormMixin(FormWithRequest): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if self.request and not self.request.user.is_anonymous: - for name, field in self.fields.items(): + for field in self.fields.values(): qs = getattr(field, 'queryset', None) if not qs: continue diff --git a/src/authentic2/manager/role_views.py b/src/authentic2/manager/role_views.py index bb30f44b..f0beb15f 100644 --- a/src/authentic2/manager/role_views.py +++ b/src/authentic2/manager/role_views.py @@ -323,7 +323,7 @@ class RolePermissionsView(RoleViewMixin, views.BaseSubTableView): action = form.cleaned_data.get('action') Permission = get_permission_model() if action == 'add' and operation and target: - perm, created = Permission.objects.get_or_create( + perm, dummy = Permission.objects.get_or_create( operation=operation, ou=ou, target_ct=ContentType.objects.get_for_model(target), diff --git a/src/authentic2/manager/user_views.py b/src/authentic2/manager/user_views.py index ab26fea9..5e364981 100644 --- a/src/authentic2/manager/user_views.py +++ b/src/authentic2/manager/user_views.py @@ -966,7 +966,7 @@ class UserAuthorizationsView( qs = OIDCAuthorization.objects.filter(user=self.get_object()) qs = qs.filter(id=auth_id.pk) oidc_authorization = qs.first() - count, cascade = qs.delete() + count, dummy = qs.delete() if count: self.request.journal.record( 'manager.user.sso.authorization.deletion', diff --git a/src/authentic2/migrations/0031_add_search_vector_to_attributes.py b/src/authentic2/migrations/0031_add_search_vector_to_attributes.py index 6f1ce1bc..8b1c0ab2 100644 --- a/src/authentic2/migrations/0031_add_search_vector_to_attributes.py +++ b/src/authentic2/migrations/0031_add_search_vector_to_attributes.py @@ -6,7 +6,7 @@ from django.db import migrations def create_trigger(apps, schema_editor): with schema_editor.connection.cursor() as cursor: cursor.execute('SHOW default_text_search_config') - (default_text_search_config,) = cursor.fetchone() + assert cursor.fetchone() cursor.execute( '''CREATE OR REPLACE FUNCTION authentic2_update_atv_search_vector() RETURNS TRIGGER AS $$ BEGIN diff --git a/src/authentic2/migrations/__init__.py b/src/authentic2/migrations/__init__.py index cada7b5e..039b3638 100644 --- a/src/authentic2/migrations/__init__.py +++ b/src/authentic2/migrations/__init__.py @@ -82,7 +82,7 @@ class CreatePartialIndexes(Operation): def database_backwards(self, app_label, schema_editor, from_state, to_state): if not self.allowed(app_label, schema_editor, to_state): return - for i, (null_columns, non_null_columns) in enumerate(self.indexes()): + for i in range(self.indexes()): schema_editor.execute('DROP INDEX IF EXISTS "%s_%s"' % (self.index_name, i)) def describe(self): diff --git a/src/authentic2/models.py b/src/authentic2/models.py index e9aefaf8..24ab0738 100644 --- a/src/authentic2/models.py +++ b/src/authentic2/models.py @@ -421,7 +421,7 @@ class Service(models.Model): raise ServiceAccessDenied(service=self) def add_authorized_role(self, role): - authorization, created = AuthorizedRole.objects.get_or_create(service=self, role=role) + authorization, dummy = AuthorizedRole.objects.get_or_create(service=self, role=role) return authorization def remove_authorized_role(self, role): diff --git a/src/authentic2/saml/management/commands/mapping.py b/src/authentic2/saml/management/commands/mapping.py index 4a8317bd..73340c1f 100644 --- a/src/authentic2/saml/management/commands/mapping.py +++ b/src/authentic2/saml/management/commands/mapping.py @@ -43,7 +43,7 @@ def get_def_name_from_oid(oid): def get_definition_from_oid(oid): - for key, value in ATTRIBUTE_MAPPING.items(): + for value in ATTRIBUTE_MAPPING.values(): if value['oid'] == oid: return value @@ -55,7 +55,7 @@ def get_full_definition(name): def get_definition_from_alias(alias): - for key, value in ATTRIBUTE_MAPPING.items(): + for value in ATTRIBUTE_MAPPING.values(): if 'alias' in value and alias in value['alias']: return value diff --git a/src/authentic2/saml/management/commands/sync-metadata.py b/src/authentic2/saml/management/commands/sync-metadata.py index 5114bc9b..cfaa5951 100644 --- a/src/authentic2/saml/management/commands/sync-metadata.py +++ b/src/authentic2/saml/management/commands/sync-metadata.py @@ -126,7 +126,7 @@ def load_acs(tree, provider, pks, verbosity): is_required = ra.get(IS_REQUIRED, 'false') == 'true' if name_format != lasso.SAML2_ATTRIBUTE_NAME_FORMAT_URI: continue - def_name, defn = resolve_urn_oid(oid) + def_name, dummy = resolve_urn_oid(oid) if def_name is None: warnings.warn( 'attribute %s/%s unsupported on service provider %s' diff --git a/src/authentic2/saml/managers.py b/src/authentic2/saml/managers.py index 1b213395..e6137f21 100644 --- a/src/authentic2/saml/managers.py +++ b/src/authentic2/saml/managers.py @@ -49,7 +49,7 @@ class LibertyFederationManager(models.Manager): def cleanup(self): for federation in self.filter(user__isnull=True): results = federation_delete.send_robust(sender=federation) - for callback, result in results: + for dummy_callback, result in results: if not result: return federation.delete() diff --git a/src/authentic2/utils/misc.py b/src/authentic2/utils/misc.py index 52d34625..2d791fb9 100644 --- a/src/authentic2/utils/misc.py +++ b/src/authentic2/utils/misc.py @@ -526,7 +526,7 @@ def generate_password(): composition = ((2, '23456789'), (6, 'ABCDEFGHJKLMNPQRSTUVWXYZ'), (1, '%$/\\#@!')) parts = [] for cnt, alphabet in composition: - for i in range(cnt): + for dummy in range(cnt): parts.append(random.SystemRandom().choice(alphabet)) random.shuffle(parts, random.SystemRandom().random) return ''.join(parts) @@ -1293,7 +1293,7 @@ def get_remember_cookie(request, name, count=5): return [] values = [] - for i, v in zip(range(count), parsed): + for dummy, v in zip(range(count), parsed): try: values.append(int(v)) except ValueError: diff --git a/src/authentic2/views.py b/src/authentic2/views.py index 8194b41e..b7699a41 100644 --- a/src/authentic2/views.py +++ b/src/authentic2/views.py @@ -85,7 +85,7 @@ class EditProfile(cbv.HookMixin, cbv.TemplateNamesMixin, UpdateView): @classmethod def can_edit_profile(cls): - fields, labels = cls.get_fields() + fields, dummy_labels = cls.get_fields() return bool(fields) and app_settings.A2_PROFILE_CAN_EDIT_PROFILE @classmethod diff --git a/src/authentic2_idp_oidc/apps.py b/src/authentic2_idp_oidc/apps.py index 2390f72e..cf79882f 100644 --- a/src/authentic2_idp_oidc/apps.py +++ b/src/authentic2_idp_oidc/apps.py @@ -27,7 +27,7 @@ class Plugin: fragments = [] oidc_sessions = get_oidc_sessions(request) - for key, value in oidc_sessions.items(): + for value in oidc_sessions.values(): if 'frontchannel_logout_uri' not in value: continue ctx = { diff --git a/src/authentic2_idp_oidc/views.py b/src/authentic2_idp_oidc/views.py index 992b2c4b..2b396b57 100644 --- a/src/authentic2_idp_oidc/views.py +++ b/src/authentic2_idp_oidc/views.py @@ -824,5 +824,5 @@ def logout(request): if state: post_logout_redirect_uri = make_url(post_logout_redirect_uri, params={'state': state}) # FIXME: do something with id_token_hint - id_token_hint = request.GET.get('id_token_hint') + request.GET.get('id_token_hint') return a2_logout(request, next_url=post_logout_redirect_uri, do_local=False, check_referer=False) diff --git a/src/django_rbac/backends.py b/src/django_rbac/backends.py index e5a78bdf..53e20afd 100644 --- a/src/django_rbac/backends.py +++ b/src/django_rbac/backends.py @@ -194,7 +194,7 @@ class DjangoRBACBackend: q.append(Q(ou_id=int(key[3:]))) continue elif perm_or_perms & value: - ct_id, fk = key.split('.') + dummy_ct_id, fk = key.split('.') q.append(Q(pk=int(fk))) if q: return functools.reduce(Q.__or__, q) diff --git a/src/django_rbac/utils.py b/src/django_rbac/utils.py index 2d5309dc..451131fe 100644 --- a/src/django_rbac/utils.py +++ b/src/django_rbac/utils.py @@ -79,7 +79,7 @@ def get_permission_model(): def get_operation(operation_tpl): from . import models - operation, created = models.Operation.objects.get_or_create(slug=operation_tpl.slug) + operation, dummy = models.Operation.objects.get_or_create(slug=operation_tpl.slug) return operation diff --git a/tests/auth_fc/test_auth_fc.py b/tests/auth_fc/test_auth_fc.py index 4f142f43..0f8659dd 100644 --- a/tests/auth_fc/test_auth_fc.py +++ b/tests/auth_fc/test_auth_fc.py @@ -541,8 +541,8 @@ def test_authorization_error(app, franceconnect): def test_registration_page(settings, app, franceconnect, hooks): assert User.objects.count() == 0 - response = app.get('/accounts/register/?service=portail&next=/idp/') - response = franceconnect.login_with_fc_fixed_params(app) + assert app.get('/accounts/register/?service=portail&next=/idp/') + franceconnect.login_with_fc_fixed_params(app) # a new user has been created assert User.objects.count() == 1 diff --git a/tests/conftest.py b/tests/conftest.py index cb15f0d8..1e2e0a1e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -121,7 +121,7 @@ def ou_rando(db): def create_user(**kwargs): User = get_user_model() password = kwargs.pop('password', None) or kwargs['username'] - user, created = User.objects.get_or_create(**kwargs) + user, dummy = User.objects.get_or_create(**kwargs) if password: user.clear_password = password user.set_password(password) diff --git a/tests/idp_oidc/test_misc.py b/tests/idp_oidc/test_misc.py index 366fbfd5..6cc2a728 100644 --- a/tests/idp_oidc/test_misc.py +++ b/tests/idp_oidc/test_misc.py @@ -1290,7 +1290,7 @@ def test_credentials_grant(app, oidc_client, admin, simple_user): response = app.post(token_url, params=params) assert 'id_token' in response.json token = response.json['id_token'] - header, payload, signature = token.split('.') + assert len(token.split('.')) == 3 jwt = JWT() # jwt deserialization implicitly checks the token signature: jwt.deserialize(token, key=jwk) @@ -1305,7 +1305,7 @@ def test_credentials_grant(app, oidc_client, admin, simple_user): response = app.post(token_url, params=params, headers=client_authentication_headers(oidc_client)) assert 'id_token' in response.json token = response.json['id_token'] - header, payload, signature = token.split('.') + assert len(token.split('.')) == 3 jwt = JWT() # jwt deserialization implicitly checks the token signature: jwt.deserialize(token, key=jwk) @@ -1329,7 +1329,7 @@ def test_credentials_grant_ratelimitation_invalid_client( 'username': simple_user.username, 'password': simple_user.username, } - for i in range(int(oidc_settings.A2_IDP_OIDC_PASSWORD_GRANT_RATELIMIT.split('/')[0])): + for _ in range(int(oidc_settings.A2_IDP_OIDC_PASSWORD_GRANT_RATELIMIT.split('/')[0])): response = app.post(token_url, params=params, status=400) assert response.json['error'] == 'invalid_client' assert 'Wrong client secret' in response.json['error_description'] @@ -1353,7 +1353,7 @@ def test_credentials_grant_ratelimitation_valid_client( 'username': simple_user.username, 'password': simple_user.username, } - for i in range(int(oidc_settings.A2_IDP_OIDC_PASSWORD_GRANT_RATELIMIT.split('/')[0])): + for _ in range(int(oidc_settings.A2_IDP_OIDC_PASSWORD_GRANT_RATELIMIT.split('/')[0])): app.post(token_url, params=params) response = app.post(token_url, params=params, status=400) assert response.json['error'] == 'invalid_client' diff --git a/tests/test_a2_rbac.py b/tests/test_a2_rbac.py index 07bc0e07..5948cb23 100644 --- a/tests/test_a2_rbac.py +++ b/tests/test_a2_rbac.py @@ -527,7 +527,7 @@ def test_update_content_types_roles(transactional_db, simple_user): def test_update_self_admin_perm_migration(migration, new_perm_exists): old_apps = migration.before([('a2_rbac', '0022_auto_20200402_1101')]) Role = old_apps.get_model('a2_rbac', 'Role') - OrganizationalUnit = old_apps.get_model('a2_rbac', 'OrganizationalUnit') + old_apps.get_model('a2_rbac', 'OrganizationalUnit') Permission = old_apps.get_model('a2_rbac', 'Permission') Operation = old_apps.get_model('django_rbac', 'Operation') ContentType = old_apps.get_model('contenttypes', 'ContentType') diff --git a/tests/test_all.py b/tests/test_all.py index c7451cb5..8569ad83 100644 --- a/tests/test_all.py +++ b/tests/test_all.py @@ -305,13 +305,13 @@ class CacheTests(TestCase): # with cache the same value will come back g = GlobalCache(f, hostname_vary=False) values = set() - for x in range(10): + for _ in range(10): values.add(g()) self.assertEqual(len(values), 1) # with and hostname vary 10 values will come back g = GlobalCache(f, hostname_vary=True) values = set() - for x in range(10): + for _ in range(10): values.add(g()) self.assertEqual(len(values), 10) # null timeout, no cache diff --git a/tests/test_api.py b/tests/test_api.py index 9b67cbd3..38cfe183 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -300,10 +300,10 @@ def test_api_users_update_with_same_unique_email(settings, app, admin, simple_us 'last_name': 'Doeny', } headers = basic_authorization_header(admin) - resp = app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) - user = User.objects.get(id=simple_user.id) + app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) + User.objects.get(id=simple_user.id) - resp = app.patch_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) + app.patch_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) def test_api_users_create_with_email_verified(settings, app, admin): @@ -344,13 +344,13 @@ def test_api_email_unset_verification(settings, app, admin, simple_user): 'email': 'john.doe@nowhere.null', } headers = basic_authorization_header(admin) - resp = app.post_json(f'/api/users/{simple_user.uuid}/email/', params=payload, headers=headers, status=200) + app.post_json(f'/api/users/{simple_user.uuid}/email/', params=payload, headers=headers, status=200) user = User.objects.get(id=simple_user.id) assert not user.email_verified def test_api_users_boolean_attribute(app, superuser): - at = Attribute.objects.create(kind='boolean', name='boolean', label='boolean', required=True) + Attribute.objects.create(kind='boolean', name='boolean', label='boolean', required=True) superuser.attributes.boolean = True app.authorization = ('Basic', (superuser.username, superuser.username)) resp = app.get('/api/users/%s/' % superuser.uuid) @@ -358,7 +358,7 @@ def test_api_users_boolean_attribute(app, superuser): def test_api_users_boolean_attribute_optional(app, superuser): - at = Attribute.objects.create(kind='boolean', name='boolean', label='boolean', required=False) + Attribute.objects.create(kind='boolean', name='boolean', label='boolean', required=False) superuser.attributes.boolean = True app.authorization = ('Basic', (superuser.username, superuser.username)) resp = app.get('/api/users/%s/' % superuser.uuid) @@ -370,7 +370,7 @@ def test_api_users_list_by_authorized_service(app, superuser): user1 = User.objects.create(username='user1') user2 = User.objects.create(username='user2') - user3 = User.objects.create(username='user3') + User.objects.create(username='user3') role1 = Role.objects.create(name='role1') role2 = Role.objects.create(name='role2') @@ -381,7 +381,7 @@ def test_api_users_list_by_authorized_service(app, superuser): service1 = Service.objects.create(ou=get_default_ou(), name='service1', slug='service1') service1.add_authorized_role(role1) - service2 = Service.objects.create(ou=get_default_ou(), name='service2', slug='service2') + Service.objects.create(ou=get_default_ou(), name='service2', slug='service2') resp = app.get('/api/users/') assert len(resp.json['results']) == 4 @@ -411,7 +411,7 @@ def test_api_member_users_list_by_authorized_service(app, superuser, simple_role service1 = Service.objects.create(ou=get_default_ou(), name='service1', slug='service1') service1.add_authorized_role(role1) - service2 = Service.objects.create(ou=get_default_ou(), name='service2', slug='service2') + Service.objects.create(ou=get_default_ou(), name='service2', slug='service2') for user in superuser, user1, user2, user3: simple_role.members.add(user) @@ -958,7 +958,7 @@ def test_api_role_set_empty_members(app, api_user): if not api_user.has_perm('a2_rbac.manage_members_role', role): status = 403 - resp = app.put_json(f'/api/roles/{role.uuid}/relationships/members/', params={'data': []}, status=status) + app.put_json(f'/api/roles/{role.uuid}/relationships/members/', params={'data': []}, status=status) if api_user.has_perm('a2_rbac.manage_members_role', role): assert len(role.members.all()) == 0 else: @@ -1128,7 +1128,7 @@ def test_register_ou_no_email_validation(settings, app, admin, django_user_model def test_user_synchronization(app, simple_user): headers = basic_authorization_header(simple_user) uuids = [] - for i in range(100): + for _ in range(100): user = User.objects.create(first_name='ben', last_name='dauve') uuids.append(user.uuid) unknown_uuids = [uuid.uuid4().hex for i in range(100)] @@ -1532,7 +1532,7 @@ def test_api_get_role_member_list(app, admin_ou1, user_ou1, role_ou1, role_rando def test_no_opened_session_cookie_on_api(app, user, settings): settings.A2_OPENED_SESSION_COOKIE_DOMAIN = 'testserver.local' app.authorization = ('Basic', (user.username, user.username)) - resp = app.get('/api/users/') + app.get('/api/users/') assert 'A2_OPENED_SESSION' not in app.cookies @@ -1904,8 +1904,8 @@ def test_api_users_optional_date_attributes(settings, app, admin, simple_user): 'last_name': 'Doe', } headers = basic_authorization_header(admin) - resp = app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) - resp = app.get(f'/api/users/{simple_user.uuid}/', headers=headers, status=200) + app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) + app.get(f'/api/users/{simple_user.uuid}/', headers=headers, status=200) payload['prefered_color'] = None payload['date'] = None payload['birthdate'] = None @@ -1913,8 +1913,8 @@ def test_api_users_optional_date_attributes(settings, app, admin, simple_user): payload['prefered_color'] = '' payload['date'] = '' payload['birthdate'] = '' - resp = app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) - resp = app.get(f'/api/users/{simple_user.uuid}/', headers=headers, status=200) + app.put_json(f'/api/users/{simple_user.uuid}/', params=payload, headers=headers, status=200) + app.get(f'/api/users/{simple_user.uuid}/', headers=headers, status=200) payload['prefered_color'] = None payload['date'] = None payload['birthdate'] = None @@ -2104,7 +2104,7 @@ def test_find_duplicates_ou(app, admin, settings, ou1): app.authorization = ('Basic', (admin.username, admin.username)) user = User.objects.create(first_name='Jean', last_name='Dupont', ou=get_default_ou()) - homonym = User.objects.create(first_name='Jean', last_name='Dupont', ou=ou1) + User.objects.create(first_name='Jean', last_name='Dupont', ou=ou1) params = { 'first_name': 'Jeanne', @@ -2293,15 +2293,15 @@ def test_api_password_change_user_delete(app, settings, admin, ou1): 'new_password': 'password2', } url = reverse('a2-api-password-change') - response = app.post_json(url, params=payload, status=400) + app.post_json(url, params=payload, status=400) user2.delete() - response = app.post_json(url, params=payload) + app.post_json(url, params=payload) assert User.objects.get(username='john.doe').check_password('password2') def test_api_users_delete(settings, app, admin, simple_user): headers = basic_authorization_header(admin) - resp = app.delete_json(f'/api/users/{simple_user.uuid}/', headers=headers) + app.delete_json(f'/api/users/{simple_user.uuid}/', headers=headers) assert not User.objects.filter(pk=simple_user.pk).exists() assert_event('manager.user.deletion', user=admin, api=True) @@ -2382,7 +2382,7 @@ def test_api_statistics_list(app, admin): assert login_stats in resp.json['data'] # same goes with users - user = User.objects.create(username='john.doe', email='john.doe@example.com', ou=ou) + User.objects.create(username='john.doe', email='john.doe@example.com', ou=ou) login_stats['filters'].append( { 'id': 'users_ou', @@ -2419,12 +2419,12 @@ def test_api_statistics(app, admin, freezer, event_type_name, event_name): event_type = EventType.objects.get_for_name(event_type_name) freezer.move_to('2020-02-03 12:00') - event = Event.objects.create(type=event_type, references=[portal], data=method) - event = Event.objects.create(type=event_type, references=[agendas, user], user=user, data=method) + Event.objects.create(type=event_type, references=[portal], data=method) + Event.objects.create(type=event_type, references=[agendas, user], user=user, data=method) freezer.move_to('2020-03-04 13:00') - event = Event.objects.create(type=event_type, references=[agendas], data=method) - event = Event.objects.create(type=event_type, references=[portal], data=method2) + Event.objects.create(type=event_type, references=[agendas], data=method) + Event.objects.create(type=event_type, references=[portal], data=method2) resp = app.get('/api/statistics/%s/?time_interval=month' % event_name, headers=headers) data = resp.json['data'] @@ -2531,7 +2531,7 @@ def test_api_statistics(app, admin, freezer, event_type_name, event_name): def test_api_statistics_no_crash_older_drf(app, admin): headers = basic_authorization_header(admin) expected_status = 200 if drf_version > '3.9' else 404 - resp = app.get('/api/statistics/login/?time_interval=month', headers=headers, status=expected_status) + app.get('/api/statistics/login/?time_interval=month', headers=headers, status=expected_status) def test_find_duplicates_put(app, admin, settings): diff --git a/tests/test_attribute_kinds.py b/tests/test_attribute_kinds.py index ad59f2f6..b46eb3a3 100644 --- a/tests/test_attribute_kinds.py +++ b/tests/test_attribute_kinds.py @@ -473,7 +473,7 @@ def test_birthdate_api(db, app, admin, mailoutbox, freezer): 'last_name': 'Doe', 'birthdate': '2017-12-31', } - response = app.post_json('/api/users/', params=payload) + app.post_json('/api/users/', params=payload) assert qs.get().attributes.birthdate == datetime.date(2017, 12, 31) qs.delete() diff --git a/tests/test_commands.py b/tests/test_commands.py index a8f29d74..4b2a7761 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -285,7 +285,7 @@ def test_check_and_repair_managers_of_roles(db, capsys): default_ou = get_default_ou() admin_op = get_operation(ADMIN_OP) - ou1 = get_ou_model().objects.create(name='Orgunit1', slug='orgunit1') + get_ou_model().objects.create(name='Orgunit1', slug='orgunit1') role1 = Role.objects.create(name='Role 1', slug='role-1', ou=default_ou) perm1 = Permission.objects.create( operation=admin_op, @@ -362,15 +362,9 @@ def test_check_identifiers_uniqueness(db, capsys, settings): ou.email_is_unique = True ou.save() - user1 = User.objects.create( - username='foo', email='foo@example.net', first_name='Toto', last_name='Foo', ou=ou - ) - user2 = User.objects.create( - username='foo', email='bar@example.net', first_name='Bar', last_name='Foo', ou=ou - ) - user3 = User.objects.create( - username='bar', email='bar@example.net', first_name='Tutu', last_name='Bar', ou=ou - ) + User.objects.create(username='foo', email='foo@example.net', first_name='Toto', last_name='Foo', ou=ou) + User.objects.create(username='foo', email='bar@example.net', first_name='Bar', last_name='Foo', ou=ou) + User.objects.create(username='bar', email='bar@example.net', first_name='Tutu', last_name='Bar', ou=ou) settings.A2_EMAIL_IS_UNIQUE = True settings.A2_USERNAME_IS_UNIQUE = True diff --git a/tests/test_concurrency.py b/tests/test_concurrency.py index dfbf0746..110aab38 100644 --- a/tests/test_concurrency.py +++ b/tests/test_concurrency.py @@ -37,7 +37,7 @@ def test_attribute_value_uniqueness(transactional_db, simple_user, concurrency, AttributeValue.objects.all().delete() - for i in range(10): + for _ in range(10): def map_threads(f, l): threads = [] diff --git a/tests/test_crypto.py b/tests/test_crypto.py index 081a9c90..6f87b862 100644 --- a/tests/test_crypto.py +++ b/tests/test_crypto.py @@ -26,7 +26,7 @@ key = b'1234' def test_idempotency(): - for i in range(10): + for _ in range(10): s = force_bytes(str(random.getrandbits(1024))) assert crypto.aes_base64_decrypt(key, crypto.aes_base64_encrypt(key, s)) == s diff --git a/tests/test_csv_import.py b/tests/test_csv_import.py index dac1be32..8576afe3 100644 --- a/tests/test_csv_import.py +++ b/tests/test_csv_import.py @@ -523,7 +523,7 @@ def test_user_roles_csv(profile, user_csv_importer_factory): thomas.roles.remove(role) content_only_key = '''email key,_role_name tnoel@entrouvert.com,test_name''' - importer = user_csv_importer_factory(content_slug_add) + importer = user_csv_importer_factory(content_only_key) assert importer.run() thomas.refresh_from_db() assert thomas in role.members.all() diff --git a/tests/test_data_transfer.py b/tests/test_data_transfer.py index 82ac40aa..08057b7b 100644 --- a/tests/test_data_transfer.py +++ b/tests/test_data_transfer.py @@ -168,7 +168,7 @@ def test_role_deserializer_with_ou(db): }, ImportContext(), ) - role, status = rd.deserialize() + role, dummy = rd.deserialize() assert role.ou == ou @@ -198,7 +198,7 @@ def test_role_deserializer_update_ou(db): {'uuid': uuid, 'name': 'some-role', 'slug': 'some-role', 'ou': {'slug': 'ou-2'}, 'service': None}, ImportContext(), ) - role, status = rd.deserialize() + assert rd.deserialize() existing_role.refresh_from_db() assert existing_role.ou == ou2 assert Role.objects.exclude(slug__startswith='_').count() == 1 @@ -212,7 +212,7 @@ def test_role_deserializer_update_fields(db): {'uuid': uuid, 'slug': 'some-role', 'name': 'some role changed', 'ou': None, 'service': None}, ImportContext(), ) - role, status = rd.deserialize() + role, dummy = rd.deserialize() existing_role.refresh_from_db() assert role == existing_role assert existing_role.name == 'some role changed' @@ -238,7 +238,7 @@ def test_role_deserializer_with_attributes(db): ImportContext(), ) role, status = rd.deserialize() - created, deleted = rd.attributes() + created, dummy = rd.attributes() assert status == 'created' assert role.attributes.count() == 2 assert len(created) == 2 @@ -284,7 +284,7 @@ def test_role_deserializer_parenting_existing_parent(db): rd = RoleDeserializer(child_role_dict, ImportContext()) child_role, status = rd.deserialize() - created, deleted = rd.parentings() + created, dummy = rd.parentings() assert status == 'created' assert len(created) == 1 @@ -395,7 +395,7 @@ def test_permission_on_role(db): import_context = ImportContext() rd = RoleDeserializer(some_role_dict, import_context) rd.deserialize() - perm_created, perm_deleted = rd.permissions() + perm_created, dummy = rd.permissions() assert len(perm_created) == 1 perm = perm_created[0] assert perm.target == perm_role @@ -418,7 +418,7 @@ def test_permission_on_contentype(db): import_context = ImportContext() rd = RoleDeserializer(some_role_dict, import_context) rd.deserialize() - perm_created, perm_deleted = rd.permissions() + perm_created, dummy = rd.permissions() assert len(perm_created) == 1 perm = perm_created[0] assert perm.target.app_label == 'admin' @@ -534,7 +534,7 @@ def test_import_roles_role_delete_orphans(db): def test_roles_import_no_slug(db): roles = [{'name': 'some role', 'description': 'some role description', 'ou': None}] - res = import_site({'roles': roles}, ImportContext()) + import_site({'roles': roles}, ImportContext()) role = Role.objects.get(name='some role') assert role.slug == 'some-role' diff --git a/tests/test_idp_cas.py b/tests/test_idp_cas.py index bba39cc7..0c825adb 100644 --- a/tests/test_idp_cas.py +++ b/tests/test_idp_cas.py @@ -130,7 +130,7 @@ class CasTests(Authentic2TestCase): response = client.get('/idp/cas/login', {constants.SERVICE_PARAM: self.URL}) location = response['Location'] query = urllib.parse.parse_qs(location.split('?')[1]) - next_url, next_url_query = query['next'][0].split('?') + dummy_next_url, next_url_query = query['next'][0].split('?') next_url_query = urllib.parse.parse_qs(next_url_query) response = client.get(location) response = client.post( @@ -150,7 +150,7 @@ class CasTests(Authentic2TestCase): response = client.get('/idp/cas/login', {constants.SERVICE_PARAM: self.URL}) location = response['Location'] query = urllib.parse.parse_qs(location.split('?')[1]) - next_url, next_url_query = query['next'][0].split('?') + dummy_next_url, next_url_query = query['next'][0].split('?') next_url_query = urllib.parse.parse_qs(next_url_query) response = client.get(location) response = client.post( diff --git a/tests/test_idp_saml2.py b/tests/test_idp_saml2.py index 37f8771b..c31e30d6 100644 --- a/tests/test_idp_saml2.py +++ b/tests/test_idp_saml2.py @@ -968,7 +968,7 @@ Mx3n8844pJwgxhTB7Gjuboptlz9Hri8JRdXiVT9OS9Wt69ubcNoM6zuKASmtm48U uGnhj8v6XwvbjKZrL9kA+xf8ziazZfvvw/VGTm+IVFYB7d1x457jY5zjjXJvNyso owIDAQAB -----END PUBLIC KEY-----''' - response = app.get('/idp/saml2/metadata') + app.get('/idp/saml2/metadata') def test_null_character_nonce(app, db): diff --git a/tests/test_import_export_site_cmd.py b/tests/test_import_export_site_cmd.py index c0e88e58..649c2d84 100644 --- a/tests/test_import_export_site_cmd.py +++ b/tests/test_import_export_site_cmd.py @@ -49,7 +49,7 @@ def test_export_role_cmd_stdout(db, capsys, monkeypatch): monkeypatch.setattr(authentic2.management.commands.export_site, 'export_site', dummy_export_site) management.call_command('export_site') - out, err = capsys.readouterr() + out, dummy = capsys.readouterr() assert json.loads(out) == dummy_export_site() @@ -82,7 +82,7 @@ def test_import_site_cmd_infos_on_stdout(db, monkeypatch, capsys, json_fixture): management.call_command('import_site', json_fixture(content)) - out, err = capsys.readouterr() + out, dummy = capsys.readouterr() assert "Real run" in out assert "1 roles created" in out assert "0 roles updated" in out @@ -175,7 +175,7 @@ def test_import_site_confirm_prompt_yes(db, monkeypatch, json_fixture): def test_import_site_update_roles(db, json_fixture): r1 = Role.objects.create(name='Role1', slug='role1') - r2 = Role.objects.create(name='Role2', slug='role2') + Role.objects.create(name='Role2', slug='role2') content = { 'roles': [ diff --git a/tests/test_journal.py b/tests/test_journal.py index 9ebbdb35..41d30bbb 100644 --- a/tests/test_journal.py +++ b/tests/test_journal.py @@ -169,7 +169,7 @@ def test_event_types(clean_event_types_definition_registry): assert EventTypeDefinition.get_for_name('user.sso') is SSO with pytest.raises(AssertionError, match='already registered'): - + # pylint: disable=unused-variable class SSO2(UserEventTypes): name = 'user.sso' label = 'Single Sign On' @@ -209,7 +209,7 @@ def random_events(db): for name in 'abcdef': event_types.append(EventType.objects.create(name=name)) - for i in range(count): + for _ in range(count): events.append( Event( type=random.choice(event_types), @@ -371,7 +371,7 @@ def user_events(db, some_event_types): journal.record('user.registration', how='fc') journal.record('user.logout') - for i in range(count): + for _ in range(count): journal.record('user.login', how='fc') journal.record('user.logout') @@ -480,18 +480,18 @@ def test_statistics(db, event_type_name, freezer): assert stats == {'series': [], 'x_labels': []} freezer.move_to('2020-02-03 12:00') - event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) - event = Event.objects.create(type=event_type, references=[user2, portal], user=user2, data=method) + Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) + Event.objects.create(type=event_type, references=[user2, portal], user=user2, data=method) freezer.move_to('2020-02-03 13:00') - event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method2) - event = Event.objects.create(type=event_type, references=[user2, portal], user=user2, data=method2) + Event.objects.create(type=event_type, references=[user, portal], user=user, data=method2) + Event.objects.create(type=event_type, references=[user2, portal], user=user2, data=method2) freezer.move_to('2020-03-03 12:00') - event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) - event = Event.objects.create(type=event_type, references=[user, agendas], user=user, data=method) - event = Event.objects.create(type=event_type, references=[user, forms], user=user, data=method) - event = Event.objects.create(type=event_type, user=user) + Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) + Event.objects.create(type=event_type, references=[user, agendas], user=user, data=method) + Event.objects.create(type=event_type, references=[user, forms], user=user, data=method) + Event.objects.create(type=event_type, user=user) stats = event_type_definition.get_method_statistics('timestamp') stats['series'].sort(key=lambda x: x['label']) @@ -597,14 +597,14 @@ def test_statistics(db, event_type_name, freezer): def test_statistics_fill_date_gaps(db, freezer): - user = User.objects.create(username='john.doe', email='john.doe@example.com') + User.objects.create(username='john.doe', email='john.doe@example.com') method = {'how': 'password-on-https'} event_type = EventType.objects.get_for_name('user.login') freezer.move_to('2020-12-29 12:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) freezer.move_to('2021-01-02 13:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) event_type_definition = event_type.definition @@ -616,9 +616,9 @@ def test_statistics_fill_date_gaps(db, freezer): Event.objects.all().delete() freezer.move_to('2020-11-29 12:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) freezer.move_to('2022-02-02 13:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) stats = event_type_definition.get_method_statistics('month') assert stats == { 'x_labels': ['2020-11', '2020-12'] + ['2021-%02d' % i for i in range(1, 13)] + ['2022-01', '2022-02'], @@ -627,9 +627,9 @@ def test_statistics_fill_date_gaps(db, freezer): Event.objects.all().delete() freezer.move_to('2020-11-29 12:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) freezer.move_to('2025-02-02 13:00') - event = Event.objects.create(type=event_type, data=method) + Event.objects.create(type=event_type, data=method) stats = event_type_definition.get_method_statistics('year') assert stats == { 'x_labels': ['2020', '2021', '2022', '2023', '2024', '2025'], @@ -647,8 +647,8 @@ def test_statistics_deleted_service(db, freezer): event_type_definition = event_type.definition freezer.move_to('2020-02-03 12:00') - event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) - event = Event.objects.create(type=event_type, references=[user], user=user, data=method) + Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) + Event.objects.create(type=event_type, references=[user], user=user, data=method) stats = event_type_definition.get_service_statistics('month') stats['series'].sort(key=lambda x: x['label']) @@ -671,7 +671,7 @@ def test_statistics_ou_with_no_service(db, freezer): event_type = EventType.objects.get_for_name('user.login') event_type_definition = event_type.definition - event = Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) + Event.objects.create(type=event_type, references=[user, portal], user=user, data=method) ou_with_no_service = OU.objects.create(name='Second OU') stats = event_type_definition.get_method_statistics('month', services_ou=ou_with_no_service) @@ -680,7 +680,7 @@ def test_statistics_ou_with_no_service(db, freezer): def test_prefetcher(db): event_type = EventType.objects.get_for_name('user.login') - for i in range(10): + for _ in range(10): user = User.objects.create() Event.objects.create(type=event_type, user=user, references=[user]) Event.objects.create(type=event_type, user=user, references=[user]) diff --git a/tests/test_large_userbase.py b/tests/test_large_userbase.py index ebf04ad4..908a66c4 100644 --- a/tests/test_large_userbase.py +++ b/tests/test_large_userbase.py @@ -38,7 +38,7 @@ def large_userbase(db, freezer): fake = faker.Faker(locale='fr_FR') faker.Faker.seed(0) - for i in range(100): + for _ in range(100): User.objects.bulk_create( User( first_name=fake.first_name() + ' ' + fake.first_name(), @@ -73,7 +73,7 @@ def test_large_userbase_find_duplicates(large_userbase, app, admin): 'last_name': user.last_name, } - for i in range(100): + for _ in range(100): resp = app.get('/api/users/find_duplicates/', params=params) assert len(resp.json['data']) >= 1 @@ -88,6 +88,6 @@ def test_large_userbase_find_duplicates_with_birthdate(large_userbase, app, admi 'birthdate': str(user.attributes.birthdate), } - for i in range(100): + for _ in range(100): resp = app.get('/api/users/find_duplicates/', params=params) assert len(resp.json['data']) >= 1 diff --git a/tests/test_ldap.py b/tests/test_ldap.py index 2ace7971..26d9c4dd 100644 --- a/tests/test_ldap.py +++ b/tests/test_ldap.py @@ -1808,7 +1808,7 @@ def test_alert_on_wrong_user_filter(slapd, settings, client, db, caplog): } ] with utils.check_log(caplog, "account name authentication filter doesn't contain '%s'"): - response = client.post( + client.post( '/login/', {'login-password-submit': '1', 'username': USERNAME, 'password': PASS}, follow=True ) diff --git a/tests/test_manager.py b/tests/test_manager.py index a8655618..5eaf8ede 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -178,7 +178,7 @@ def test_manager_stress_create_user(superuser_or_admin, app, mailoutbox): assert len(mailoutbox) == 0 assert User.objects.filter(ou_id=new_ou.id).count() == 0 - for i in range(100): + for _ in range(100): ou_add = login(app, superuser_or_admin, url) form = ou_add.form form.set('first_name', 'John') @@ -426,7 +426,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 field = response.form['search-ou'] options = field.options assert len(options) == 4 - for key, checked, label in options: + for key, checked, _ in options: assert not checked or key == 'all' assert 'all' in [o[0] for o in options] assert 'none' in [o[0] for o in options] @@ -441,7 +441,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 field = response.form['search-ou'] options = field.options assert len(options) == 4 - for key, checked, label in options: + for key, checked, dummy in options: assert not checked or key == str(get_default_ou().pk) q = response.pyquery.remove_namespaces() assert len(q('table tbody tr')) == 1 @@ -487,7 +487,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 field = response.form['search-ou'] options = field.options assert len(options) == 4 - for key, checked, label in options: + for key, checked, _ in options: if key == 'all': assert checked else: @@ -536,7 +536,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 options = field.options assert len(options) == 1 # ou1 is selected - key, checked, label = options[0] + key, checked, _ = options[0] assert checked assert key == str(ou1.pk) # verify table shown @@ -551,7 +551,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 field = response.form['search-ou'] options = field.options assert len(options) == 1 - key, checked, label = options[0] + key, checked, dummy = options[0] assert checked assert key == str(ou1.pk) q = response.pyquery.remove_namespaces() @@ -572,7 +572,7 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 field = response.form['search-ou'] options = field.options assert len(options) == 1 - key, checked, label = options[0] + key, checked, _ = options[0] assert checked assert key == str(ou1.pk) q = response.pyquery.remove_namespaces() @@ -604,7 +604,7 @@ def test_manager_many_ou_auto_admin_role(app, ou1, admin, user_with_auto_admin_r field = response.form['search-ou'] options = field.options assert len(options) == 1 - key, checked, label = options[0] + key, checked, _ = options[0] assert checked assert key == str(ou1.pk) q = response.pyquery.remove_namespaces() @@ -625,7 +625,7 @@ def test_manager_many_ou_auto_admin_role(app, ou1, admin, user_with_auto_admin_r field = response.form['search-ou'] options = field.options assert len(options) == 1 - key, checked, label = options[0] + key, checked, dummy = options[0] assert checked assert key == str(ou1.pk) q = response.pyquery.remove_namespaces() @@ -1128,7 +1128,7 @@ def test_manager_role_inheritance_list(app, admin, simple_role, ou1, relation): def test_manager_role_inheritance_list_search_permission(app, admin, simple_user, simple_role, ou1): visible_role = Role.objects.create(name='visible_role', ou=simple_user.ou) visible_role_2 = Role.objects.create(name='visible_role_2', ou=ou1) - invisible_role = Role.objects.create(name='invisible_role', ou=simple_user.ou) + Role.objects.create(name='invisible_role', ou=simple_user.ou) admin_of_simple_role = simple_role.get_admin_role() admin_of_simple_role.members.add(simple_user) diff --git a/tests/test_role_manager.py b/tests/test_role_manager.py index aa735f11..45330182 100644 --- a/tests/test_role_manager.py +++ b/tests/test_role_manager.py @@ -151,7 +151,7 @@ def test_manager_role_import(app, admin, ou1, role_ou1, ou2, role_ou2): assert Role.objects.filter(name=role_ou2.name, ou=get_default_ou()).exists() response.form.set('search-text', 'role_ou1') - search_response = response.form.submit() + response.form.submit() export_response = response.click('Export') new_export = export_response.json diff --git a/tests/test_template.py b/tests/test_template.py index bad278da..e341bf58 100644 --- a/tests/test_template.py +++ b/tests/test_template.py @@ -121,7 +121,7 @@ def test_service_in_template(app, simple_user, service): resp.form.set('username', simple_user.username) resp.form.set('password', simple_user.username) - response = resp.form.submit(name='login-password-submit') + resp.form.submit(name='login-password-submit') resp = app.get(reverse('account_management')) assert resp.pyquery('body').attr('data-service-slug') == service.slug diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index 68063ed7..1527c268 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -361,7 +361,7 @@ def test_export_csv_search(settings, app, superuser): users = [User(username='user%s' % i) for i in range(10)] User.objects.bulk_create(users) - response = login(app, superuser) + login(app, superuser) resp = app.get('/manage/users/?search-text=user1') resp = resp.click('CSV').follow() resp = resp.click('Download CSV') diff --git a/tests/utils.py b/tests/utils.py index 0eebc2bf..7d03c348 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -116,7 +116,7 @@ def assert_equals_url(url1, url2, **kwargs): def assert_redirects_complex(response, expected_url, **kwargs): assert response.status_code == 302, 'code should be 302' - scheme, netloc, path, query, fragment = urllib.parse.urlsplit(response.url) + scheme, netloc, _, _, _ = urllib.parse.urlsplit(response.url) e_scheme, e_netloc, e_path, e_query, e_fragment = urllib.parse.urlsplit(expected_url) e_scheme = e_scheme if e_scheme else scheme e_netloc = e_netloc if e_netloc else netloc @@ -249,7 +249,7 @@ def run_on_commit_hooks(): current_run_on_commit = connection.run_on_commit connection.run_on_commit = [] while current_run_on_commit: - sids, func = current_run_on_commit.pop(0) + _, func = current_run_on_commit.pop(0) func() -- 2.30.2