"""
Unit-Tests für Package-Imports.

Stellt sicher, dass alle wichtigen Importe funktionieren und alle
erforderlichen Abhängigkeiten verfügbar sind.
"""

from __future__ import annotations

import pytest


@pytest.mark.unit
class TestPackageImports:
    """Tests für grundlegende Package-Imports."""

    def test_main_import(self):
        """Test dass QuestraAuthentication importiert werden kann."""
        from seven2one.questra.authentication import QuestraAuthentication

        assert QuestraAuthentication is not None

    def test_oauth2_authentication_import(self):
        """Test dass OAuth2Authentication importiert werden kann."""
        from seven2one.questra.authentication import OAuth2Authentication

        assert OAuth2Authentication is not None

    def test_credentials_import(self):
        """Test dass Credential-Klassen importiert werden können."""
        from seven2one.questra.authentication import (
            OAuth2InteractiveUserCredential,
            OAuth2ServiceCredential,
        )

        assert OAuth2ServiceCredential is not None
        assert OAuth2InteractiveUserCredential is not None

    def test_oidc_import(self):
        """Test dass OIDC-Komponenten importiert werden können."""
        from seven2one.questra.authentication import OidcConfig, OidcDiscoveryClient

        assert OidcConfig is not None
        assert OidcDiscoveryClient is not None

    def test_client_interface_import(self):
        """Test dass ClientInterface importiert werden kann."""
        from seven2one.questra.authentication import ClientInterface

        assert ClientInterface is not None

    def test_exceptions_import(self):
        """Test dass Exceptions importiert werden können."""
        from seven2one.questra.authentication import (
            AuthenticationError,
            InvalidCredentialsError,
            NotAuthenticatedError,
            OidcDiscoveryError,
            QuestraAuthenticationError,
            SessionNotInitializedError,
            TokenExpiredError,
        )

        assert QuestraAuthenticationError is not None
        assert AuthenticationError is not None
        assert NotAuthenticatedError is not None
        assert SessionNotInitializedError is not None
        assert InvalidCredentialsError is not None
        assert OidcDiscoveryError is not None
        assert TokenExpiredError is not None

    def test_requests_oauthlib_dependency(self):
        """Test dass requests-oauthlib verfügbar ist (kritische Abhängigkeit)."""
        import requests_oauthlib

        assert requests_oauthlib is not None
        # Prüfe dass wichtige Klassen verfügbar sind
        from requests_oauthlib import OAuth2Session

        assert OAuth2Session is not None
