chore: use isort instead of reoder-python-imports

This commit is contained in:
Éloi Rivard 2024-03-15 19:58:06 +01:00
parent bd57d69765
commit 4edffcaa9f
No known key found for this signature in database
GPG key ID: 7EDA204EA57DD184
70 changed files with 207 additions and 154 deletions

View file

@ -1,7 +1,7 @@
---
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 'v0.3.1'
rev: 'v0.3.3'
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
@ -15,11 +15,12 @@ repos:
- id: end-of-file-fixer
exclude: "\\.svg$|\\.map$|\\.min\\.css$|\\.min\\.js$|\\.po$|\\.pot$"
- id: check-toml
- repo: https://github.com/asottile/reorder_python_imports
rev: v3.12.0
- repo: https://github.com/pycqa/isort
rev: "5.13.2"
hooks:
- id: reorder-python-imports
args: ["--application-directories", "canaille"]
- id: isort
name: isort (python)
args: ["--force-single-line-imports", "--profile", "black"]
- repo: https://github.com/PyCQA/docformatter
rev: v1.7.5
hooks:

View file

@ -6,7 +6,6 @@ from flask import request
from flask import session
from flask_wtf.csrf import CSRFProtect
csrf = CSRFProtect()
@ -107,16 +106,16 @@ def setup_flask(app):
def setup_flask_converters(app):
from canaille.app.flask import model_converter
from canaille.app import models
from canaille.app.flask import model_converter
for model_name, model_class in models.MODELS.items():
app.url_map.converters[model_name.lower()] = model_converter(model_class)
def create_app(config=None, validate=True, backend=None):
from .app.i18n import setup_i18n
from .app.configuration import setup_config
from .app.i18n import setup_i18n
from .app.themes import setup_themer
from .backends import setup_backend

View file

@ -2,10 +2,11 @@ import functools
import sys
import click
from canaille.backends import BaseBackend
from flask import current_app
from flask.cli import with_appcontext
from canaille.backends import BaseBackend
def with_backendcontext(func):
@functools.wraps(func)
@ -41,8 +42,8 @@ def check():
@with_appcontext
def install():
"""Installs canaille elements from the configuration."""
from canaille.app.installation import install
from canaille.app.configuration import ConfigurationException
from canaille.app.installation import install
try:
install(current_app.config)

View file

@ -3,9 +3,10 @@ import smtplib
import socket
from collections.abc import Mapping
from flask import current_app
from canaille.app.mails import DEFAULT_SMTP_HOST
from canaille.app.mails import DEFAULT_SMTP_PORT
from flask import current_app
ROOT = os.path.dirname(os.path.abspath(__file__))

View file

@ -3,9 +3,6 @@ from functools import wraps
from urllib.parse import urlsplit
from urllib.parse import urlunsplit
from canaille.app import models
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import abort
from flask import current_app
from flask import g
@ -13,6 +10,10 @@ from flask import request
from flask import session
from werkzeug.routing import BaseConverter
from canaille.app import models
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
def current_user():
if "user" in g:

View file

@ -3,11 +3,6 @@ import math
import re
import wtforms.validators
from canaille.app import models
from canaille.app.i18n import DEFAULT_LANGUAGE_CODE
from canaille.app.i18n import gettext as _
from canaille.app.i18n import locale_selector
from canaille.app.i18n import timezone_selector
from flask import abort
from flask import current_app
from flask import make_response
@ -15,6 +10,12 @@ from flask import request
from flask_wtf import FlaskForm
from wtforms.meta import DefaultMeta
from canaille.app import models
from canaille.app.i18n import DEFAULT_LANGUAGE_CODE
from canaille.app.i18n import gettext as _
from canaille.app.i18n import locale_selector
from canaille.app.i18n import timezone_selector
from . import validate_uri
from .flask import request_is_htmx

View file

@ -74,8 +74,9 @@ def timezone_selector():
def native_language_name_from_code(code):
try:
import pycountry
from gettext import translation
import pycountry
except ImportError:
return code

View file

@ -4,11 +4,12 @@ import smtplib
import urllib.request
from email.utils import make_msgid
from canaille.app import get_current_domain
from canaille.app import get_current_mail_domain
from flask import current_app
from flask import request
from canaille.app import get_current_domain
from canaille.app import get_current_mail_domain
DEFAULT_SMTP_HOST = "localhost"
DEFAULT_SMTP_PORT = 25
DEFAULT_SMTP_TLS = False

View file

@ -5,11 +5,12 @@ from contextlib import contextmanager
import ldap.modlist
import ldif
from flask import current_app
from canaille.app import models
from canaille.app.configuration import ConfigurationException
from canaille.app.i18n import gettext as _
from canaille.backends import BaseBackend
from flask import current_app
from .utils import listify
@ -188,9 +189,10 @@ class Backend(BaseBackend):
def setup_ldap_models(config):
from .ldapobject import LDAPObject
from canaille.app import models
from .ldapobject import LDAPObject
LDAPObject.root_dn = config["BACKENDS"]["LDAP"]["ROOT_DN"]
user_base = config["BACKENDS"]["LDAP"]["USER_BASE"].replace(

View file

@ -3,6 +3,7 @@ from collections.abc import Iterable
import ldap.dn
import ldap.filter
from canaille.backends.models import Model
from .backend import Backend

View file

@ -1,11 +1,12 @@
import canaille.core.models
import canaille.oidc.models
import ldap.filter
from flask import current_app
from ldap.controls import DecodeControlTuples
from ldap.controls.ppolicy import PasswordPolicyControl
from ldap.controls.ppolicy import PasswordPolicyError
import canaille.core.models
import canaille.oidc.models
from .backend import Backend
from .ldapobject import LDAPObject

View file

@ -2,11 +2,12 @@ import copy
import datetime
import uuid
from flask import current_app
import canaille.core.models
import canaille.oidc.models
from canaille.app import models
from canaille.backends.models import Model
from flask import current_app
def listify(value):

View file

@ -1,8 +1,8 @@
from canaille.backends import BaseBackend
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import Session
from sqlalchemy.orm import declarative_base
from canaille.backends import BaseBackend
Base = declarative_base()

View file

@ -2,27 +2,28 @@ import datetime
import uuid
from typing import List
import canaille.core.models
import canaille.oidc.models
from canaille.app import models
from canaille.backends.models import Model
from flask import current_app
from sqlalchemy import Boolean
from sqlalchemy import Column
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
from sqlalchemy import LargeBinary
from sqlalchemy import or_
from sqlalchemy import select
from sqlalchemy import String
from sqlalchemy import Table
from sqlalchemy import or_
from sqlalchemy import select
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.orm import reconstructor
from sqlalchemy.orm import relationship
from sqlalchemy_json import MutableJson
from sqlalchemy_utils import force_auto_coercion
from sqlalchemy_utils import PasswordType
from sqlalchemy_utils import force_auto_coercion
import canaille.core.models
import canaille.oidc.models
from canaille.app import models
from canaille.backends.models import Model
from .backend import Backend
from .backend import Base

View file

@ -1,9 +1,10 @@
import click
from flask.cli import FlaskGroup
import canaille.app.commands
import canaille.core.commands
import canaille.oidc.commands
import click
from canaille import create_app
from flask.cli import FlaskGroup
@click.group(cls=FlaskGroup, create_app=create_app)

View file

@ -1,7 +1,8 @@
import click
from canaille.app.commands import with_backendcontext
from flask.cli import with_appcontext
from canaille.app.commands import with_backendcontext
try:
HAS_FAKER = True
except ImportError:

View file

@ -7,6 +7,19 @@ from importlib import metadata
from typing import List
import wtforms
from flask import Blueprint
from flask import abort
from flask import current_app
from flask import flash
from flask import g
from flask import redirect
from flask import request
from flask import send_file
from flask import session
from flask import url_for
from werkzeug.datastructures import CombinedMultiDict
from werkzeug.datastructures import FileStorage
from canaille.app import b64_to_obj
from canaille.app import build_hash
from canaille.app import default_fields
@ -21,38 +34,25 @@ from canaille.app.flask import request_is_htmx
from canaille.app.flask import smtp_needed
from canaille.app.flask import user_needed
from canaille.app.forms import IDToModel
from canaille.app.forms import TableForm
from canaille.app.forms import is_readonly
from canaille.app.forms import set_readonly
from canaille.app.forms import set_writable
from canaille.app.forms import TableForm
from canaille.app.i18n import gettext as _
from canaille.app.i18n import reload_translations
from canaille.app.themes import render_template
from canaille.backends import BaseBackend
from flask import abort
from flask import Blueprint
from flask import current_app
from flask import flash
from flask import g
from flask import redirect
from flask import request
from flask import send_file
from flask import session
from flask import url_for
from werkzeug.datastructures import CombinedMultiDict
from werkzeug.datastructures import FileStorage
from ..mails import send_confirmation_email
from ..mails import send_invitation_mail
from ..mails import send_password_initialization_mail
from ..mails import send_password_reset_mail
from ..mails import send_registration_mail
from .forms import build_profile_form
from .forms import MINIMUM_PASSWORD_LENGTH
from .forms import EmailConfirmationForm
from .forms import InvitationForm
from .forms import JoinForm
from .forms import MINIMUM_PASSWORD_LENGTH
from .forms import build_profile_form
bp = Blueprint("account", __name__)

View file

@ -1,11 +1,3 @@
from canaille.app import obj_to_b64
from canaille.app.flask import permissions_needed
from canaille.app.forms import email_validator
from canaille.app.forms import Form
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from canaille.core.mails import build_hash
from canaille.core.mails import send_test_mail
from flask import Blueprint
from flask import current_app
from flask import flash
@ -14,6 +6,14 @@ from flask import url_for
from wtforms import StringField
from wtforms.validators import DataRequired
from canaille.app import obj_to_b64
from canaille.app.flask import permissions_needed
from canaille.app.forms import Form
from canaille.app.forms import email_validator
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from canaille.core.mails import build_hash
from canaille.core.mails import send_test_mail
bp = Blueprint("admin", __name__, url_prefix="/admin")

View file

@ -1,3 +1,12 @@
from flask import Blueprint
from flask import abort
from flask import current_app
from flask import flash
from flask import redirect
from flask import request
from flask import session
from flask import url_for
from canaille.app import build_hash
from canaille.app import models
from canaille.app.flask import current_user
@ -7,14 +16,6 @@ from canaille.app.flask import smtp_needed
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from canaille.backends import BaseBackend
from flask import abort
from flask import Blueprint
from flask import current_app
from flask import flash
from flask import redirect
from flask import request
from flask import session
from flask import url_for
from ..mails import send_password_initialization_mail
from ..mails import send_password_reset_mail

View file

@ -1,22 +1,22 @@
import wtforms.form
import wtforms.validators
from flask import current_app
from flask import g
from flask_wtf.file import FileAllowed
from flask_wtf.file import FileField
from canaille.app import models
from canaille.app.forms import BaseForm
from canaille.app.forms import DateTimeUTCField
from canaille.app.forms import email_validator
from canaille.app.forms import Form
from canaille.app.forms import IDToModel
from canaille.app.forms import email_validator
from canaille.app.forms import is_uri
from canaille.app.forms import phone_number
from canaille.app.forms import set_readonly
from canaille.app.forms import unique_values
from canaille.app.i18n import lazy_gettext as _
from canaille.app.i18n import native_language_name_from_code
from flask import current_app
from flask import g
from flask_wtf.file import FileAllowed
from flask_wtf.file import FileField
MINIMUM_PASSWORD_LENGTH = 8

View file

@ -1,15 +1,16 @@
from flask import Blueprint
from flask import abort
from flask import flash
from flask import redirect
from flask import request
from flask import url_for
from canaille.app import models
from canaille.app.flask import permissions_needed
from canaille.app.flask import render_htmx_template
from canaille.app.forms import TableForm
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import abort
from flask import Blueprint
from flask import flash
from flask import redirect
from flask import request
from flask import url_for
from .forms import CreateGroupForm
from .forms import EditGroupForm

View file

@ -1,10 +1,11 @@
from flask import current_app
from flask import url_for
from canaille.app import build_hash
from canaille.app.i18n import gettext as _
from canaille.app.mails import logo
from canaille.app.mails import send_email
from canaille.app.themes import render_template
from flask import current_app
from flask import url_for
def send_test_mail(email):

View file

@ -1,9 +1,10 @@
import random
import faker
from faker.config import AVAILABLE_LOCALES
from canaille.app import models
from canaille.app.i18n import available_language_codes
from faker.config import AVAILABLE_LOCALES
def faker_generator(locales=None):

View file

@ -1,7 +1,8 @@
import click
from flask.cli import with_appcontext
from canaille.app import models
from canaille.app.commands import with_backendcontext
from flask.cli import with_appcontext
@click.command()

View file

@ -1,12 +1,12 @@
from flask import Blueprint
from flask import abort
from flask import request
from canaille.app import models
from canaille.app.flask import permissions_needed
from canaille.app.flask import render_htmx_template
from canaille.app.forms import TableForm
from canaille.app.themes import render_template
from flask import abort
from flask import Blueprint
from flask import request
bp = Blueprint("authorizations", __name__, url_prefix="/admin/authorization")

View file

@ -1,22 +1,22 @@
import datetime
from flask import Blueprint
from flask import abort
from flask import flash
from flask import redirect
from flask import request
from flask import url_for
from werkzeug.security import gen_salt
from canaille.app import models
from canaille.app.flask import permissions_needed
from canaille.app.flask import render_htmx_template
from canaille.app.forms import TableForm
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import abort
from flask import Blueprint
from flask import flash
from flask import redirect
from flask import request
from flask import url_for
from werkzeug.security import gen_salt
from .forms import ClientAddForm
bp = Blueprint("clients", __name__, url_prefix="/admin/client")

View file

@ -1,17 +1,17 @@
import datetime
import uuid
from canaille.app import models
from canaille.app.flask import user_needed
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import Blueprint
from flask import flash
from flask import redirect
from flask import url_for
from ..utils import SCOPE_DETAILS
from canaille.app import models
from canaille.app.flask import user_needed
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from ..utils import SCOPE_DETAILS
bp = Blueprint("consents", __name__, url_prefix="/consent")

View file

@ -1,8 +1,9 @@
import wtforms
from canaille.app import models
from canaille.app.forms import email_validator
from canaille.app.forms import Form
from canaille.app.forms import IDToModel
from canaille.app.forms import email_validator
from canaille.app.forms import is_uri
from canaille.app.forms import unique_values
from canaille.app.i18n import lazy_gettext as _

View file

@ -5,15 +5,8 @@ from authlib.integrations.flask_oauth2 import current_token
from authlib.jose import jwt
from authlib.jose.errors import JoseError
from authlib.oauth2 import OAuth2Error
from canaille import csrf
from canaille.app import models
from canaille.app.flask import current_user
from canaille.app.flask import logout_user
from canaille.app.flask import set_parameter_in_url_query
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import abort
from flask import Blueprint
from flask import abort
from flask import current_app
from flask import flash
from flask import jsonify
@ -23,21 +16,28 @@ from flask import session
from flask import url_for
from werkzeug.datastructures import CombinedMultiDict
from ..oauth import authorization
from canaille import csrf
from canaille.app import models
from canaille.app.flask import current_user
from canaille.app.flask import logout_user
from canaille.app.flask import set_parameter_in_url_query
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from ..oauth import ClientConfigurationEndpoint
from ..oauth import ClientRegistrationEndpoint
from ..oauth import IntrospectionEndpoint
from ..oauth import RevocationEndpoint
from ..oauth import authorization
from ..oauth import generate_user_info
from ..oauth import get_issuer
from ..oauth import get_jwks
from ..oauth import IntrospectionEndpoint
from ..oauth import require_oauth
from ..oauth import RevocationEndpoint
from ..utils import SCOPE_DETAILS
from .forms import AuthorizeForm
from .forms import LogoutForm
from .well_known import openid_configuration
bp = Blueprint("endpoints", __name__, url_prefix="/oauth")

View file

@ -1,15 +1,16 @@
import datetime
from flask import Blueprint
from flask import abort
from flask import flash
from flask import request
from canaille.app import models
from canaille.app.flask import permissions_needed
from canaille.app.flask import render_htmx_template
from canaille.app.forms import TableForm
from canaille.app.i18n import gettext as _
from canaille.app.themes import render_template
from flask import abort
from flask import Blueprint
from flask import flash
from flask import request
from .forms import TokenRevokationForm

View file

@ -5,7 +5,6 @@ from flask import request
from ..oauth import oauth_authorization_server
from ..oauth import openid_configuration
bp = Blueprint("home", __name__, url_prefix="/.well-known")

View file

@ -4,6 +4,7 @@ from authlib.oauth2.rfc6749 import AuthorizationCodeMixin
from authlib.oauth2.rfc6749 import ClientMixin
from authlib.oauth2.rfc6749 import TokenMixin
from authlib.oauth2.rfc6749 import util
from canaille.app import models
from .basemodels import AuthorizationCode as BaseAuthorizationCode

View file

@ -27,13 +27,13 @@ from authlib.oidc.core.grants import OpenIDCode as _OpenIDCode
from authlib.oidc.core.grants import OpenIDHybridGrant as _OpenIDHybridGrant
from authlib.oidc.core.grants import OpenIDImplicitGrant as _OpenIDImplicitGrant
from authlib.oidc.core.grants.util import generate_id_token
from canaille.app import models
from flask import current_app
from flask import g
from flask import request
from flask import url_for
from werkzeug.security import gen_salt
from canaille.app import models
DEFAULT_JWT_KTY = "RSA"
DEFAULT_JWT_ALG = "RS256"

View file

@ -4,15 +4,14 @@ from urllib.parse import urlunsplit
from authlib.common.errors import AuthlibBaseError
from authlib.integrations.flask_client import OAuth
from authlib.oidc.discovery import get_well_known_url
from flask import Flask
from flask import current_app
from flask import flash
from flask import Flask
from flask import redirect
from flask import render_template
from flask import session
from flask import url_for
oauth = OAuth()

View file

@ -2,7 +2,6 @@ import datetime
import os
import sys
if os.path.exists("../canaille"):
sys.path.append("../canaille")

View file

@ -170,7 +170,7 @@ exclude_lines = [
"if app.debug",
]
[tool.ruff]
[tool.ruff.lint]
ignore = ["E501", "E722"]
[tool.tox]

View file

@ -1,10 +1,11 @@
import os
import pytest
from flask_webtest import TestApp
from canaille import create_app
from canaille.app.configuration import ConfigurationException
from canaille.app.configuration import validate
from flask_webtest import TestApp
def test_configuration_file_suffix(tmp_path, backend, configuration):

View file

@ -2,9 +2,10 @@ import os
import pytest
import toml
from flask_webtest import TestApp
from canaille import create_app
from canaille.app.flask import set_parameter_in_url_query
from flask_webtest import TestApp
def test_set_parameter_in_url_query():

View file

@ -3,11 +3,12 @@ import datetime
import pytest
import wtforms
from babel.dates import LOCALTZ
from canaille.app.forms import DateTimeUTCField
from canaille.app.forms import phone_number
from flask import current_app
from werkzeug.datastructures import ImmutableMultiDict
from canaille.app.forms import DateTimeUTCField
from canaille.app.forms import phone_number
def test_datetime_utc_field_no_timezone_is_local_timezone(testclient):
del current_app.config["TIMEZONE"]

View file

@ -3,9 +3,10 @@ import warnings
from unittest import mock
import pytest
from canaille import create_app
from flask_webtest import TestApp
from canaille import create_app
@pytest.fixture
def configuration(configuration, httpserver):

View file

@ -1,4 +1,5 @@
import pytest
from canaille.backends.ldap.backend import Backend
from tests.backends.ldap import CustomSlapdObject

View file

@ -1,7 +1,8 @@
import pytest
from canaille import create_app
from flask_webtest import TestApp
from canaille import create_app
@pytest.fixture
def configuration(slapd_server, ldap_configuration):

View file

@ -1,10 +1,11 @@
import pytest
from flask_webtest import TestApp
from canaille import create_app
from canaille.app.installation import InstallationException
from canaille.backends.ldap.backend import Backend
from canaille.backends.ldap.ldapobject import LDAPObject
from canaille.commands import cli
from flask_webtest import TestApp
from . import CustomSlapdObject

View file

@ -3,15 +3,16 @@ from unittest import mock
import ldap.dn
import pytest
from canaille.app import models
from canaille.app.configuration import ConfigurationException
from canaille.app.configuration import validate
from canaille.backends.ldap.backend import setup_ldap_models
from canaille.backends.ldap.ldapobject import LDAPObject
from canaille.backends.ldap.ldapobject import python_attrs_to_ldap
from canaille.backends.ldap.utils import Syntax
from canaille.backends.ldap.utils import ldap_to_python
from canaille.backends.ldap.utils import python_to_ldap
from canaille.backends.ldap.utils import Syntax
# TODO: tester le changement de cardinalité des attributs

View file

@ -1,4 +1,5 @@
import pytest
from canaille.backends.memory.backend import Backend

View file

@ -1,4 +1,5 @@
import pytest
from canaille.backends.sql.backend import Backend

View file

@ -1,4 +1,5 @@
import pytest
from canaille.backends import BaseBackend

View file

@ -1,4 +1,5 @@
import pytest
from canaille.app import models
from canaille.backends.models import Model

View file

@ -2,14 +2,15 @@ import os
import pytest
from babel.messages.frontend import compile_catalog
from canaille import create_app
from canaille.app import models
from canaille.backends import available_backends
from flask_webtest import TestApp
from jinja2 import StrictUndefined
from pytest_lazyfixture import lazy_fixture
from werkzeug.security import gen_salt
from canaille import create_app
from canaille.app import models
from canaille.backends import available_backends
@pytest.fixture(autouse=True, scope="session")
def babel_catalogs():

View file

@ -1,9 +1,10 @@
import datetime
from unittest import mock
from canaille.app import models
from flask import g
from canaille.app import models
def test_index(testclient, user):
res = testclient.get("/", status=302)

View file

@ -2,9 +2,10 @@ import datetime
from unittest import mock
import freezegun
from flask import url_for
from canaille.core.endpoints.account import EmailConfirmationPayload
from canaille.core.endpoints.account import RegistrationPayload
from flask import url_for
def test_confirmation_disabled_email_editable(testclient, backend, logged_user):

View file

@ -1,8 +1,9 @@
import datetime
from flask import g
from canaille.app import models
from canaille.core.endpoints.account import RegistrationPayload
from flask import g
def test_invitation(testclient, logged_admin, foo_group, smtpd):

View file

@ -1,4 +1,5 @@
import pytest
from canaille.app import models
from canaille.core.models import Group
from canaille.core.models import User

View file

@ -1,8 +1,9 @@
import pytest
from canaille.core.populate import fake_users
from flask import g
from webtest import Upload
from canaille.core.populate import fake_users
@pytest.fixture
def configuration(configuration):

View file

@ -1,8 +1,9 @@
import datetime
from canaille.app import models
from webtest import Upload
from canaille.app import models
def test_photo(testclient, user, jpeg_photo):
user.photo = jpeg_photo

View file

@ -1,9 +1,10 @@
import datetime
from unittest import mock
from canaille.app import models
from flask import g
from canaille.app import models
def test_edition(
testclient,

View file

@ -1,9 +1,10 @@
from unittest import mock
import freezegun
from flask import url_for
from canaille.app import models
from canaille.core.endpoints.account import RegistrationPayload
from flask import url_for
def test_registration_without_email_validation(testclient, backend, foo_group):

View file

@ -1,8 +1,9 @@
import datetime
from werkzeug.security import gen_salt
from canaille.app import models
from canaille.commands import cli
from werkzeug.security import gen_salt
def test_clean_command(testclient, backend, client, user):

View file

@ -4,11 +4,12 @@ import uuid
import pytest
from authlib.oidc.core.grants.util import generate_id_token
from werkzeug.security import gen_salt
from canaille.app import models
from canaille.oidc.installation import generate_keypair
from canaille.oidc.oauth import generate_user_info
from canaille.oidc.oauth import get_jwt_config
from werkzeug.security import gen_salt
@pytest.fixture

View file

@ -4,11 +4,12 @@ from urllib.parse import urlsplit
import freezegun
from authlib.jose import jwt
from authlib.oauth2.rfc7636 import create_s256_code_challenge
from canaille.app import models
from canaille.oidc.oauth import setup_oauth
from flask import g
from werkzeug.security import gen_salt
from canaille.app import models
from canaille.oidc.oauth import setup_oauth
from . import client_credentials

View file

@ -2,14 +2,16 @@
https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint
"""
import datetime
import uuid
from urllib.parse import parse_qs
from urllib.parse import urlsplit
from flask import url_for
from canaille.app import models
from canaille.core.endpoints.account import RegistrationPayload
from flask import url_for
def test_prompt_none(testclient, logged_user, client):

View file

@ -1,8 +1,9 @@
import datetime
from canaille.app import models
from werkzeug.security import gen_salt
from canaille.app import models
def test_no_logged_no_access(testclient):
testclient.get("/admin/client", status=403)

View file

@ -1,6 +1,7 @@
from canaille.app import models
from werkzeug.security import gen_salt
from canaille.app import models
def test_no_logged_no_access(testclient):
testclient.get("/admin/authorization", status=403)

View file

@ -1,6 +1,7 @@
import warnings
import pytest
from canaille.app.configuration import ConfigurationException
from canaille.app.configuration import validate
from canaille.oidc.oauth import get_issuer

View file

@ -1,6 +1,7 @@
from unittest import mock
from authlib.jose import jwt
from canaille.app import models

View file

@ -1,4 +1,5 @@
from authlib.oidc.core.grants.util import generate_id_token
from canaille.oidc.oauth import generate_user_info
from canaille.oidc.oauth import get_jwt_config

View file

@ -2,6 +2,7 @@ from urllib.parse import parse_qs
from urllib.parse import urlsplit
from authlib.jose import jwt
from canaille.app import models

View file

@ -2,6 +2,7 @@ from urllib.parse import parse_qs
from urllib.parse import urlsplit
from authlib.jose import jwt
from canaille.app import models

View file

@ -1,8 +1,9 @@
import datetime
from canaille.app import models
from werkzeug.security import gen_salt
from canaille.app import models
def test_no_logged_no_access(testclient):
testclient.get("/admin/token", status=403)

View file

@ -1,5 +1,5 @@
from canaille.oidc.oauth import claims_from_scope
from canaille.oidc.oauth import DEFAULT_JWT_MAPPING
from canaille.oidc.oauth import claims_from_scope
from canaille.oidc.oauth import generate_user_claims