mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-18 12:28:15 +00:00
Some checks failed
Check Documentation Broken Links / Check broken links (push) Has been cancelled
Notify Downstream / notify-downstream (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Build uv cache / build-cache (3.10) (push) Has been cancelled
Build uv cache / build-cache (3.11) (push) Has been cancelled
Build uv cache / build-cache (3.12) (push) Has been cancelled
Build uv cache / build-cache (3.13) (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
139 lines
5.1 KiB
Python
139 lines
5.1 KiB
Python
import pytest
|
|
|
|
from crewai.cli.authentication.main import Oauth2Settings
|
|
from crewai.cli.authentication.providers.keycloak import KeycloakProvider
|
|
|
|
|
|
class TestKeycloakProvider:
|
|
@pytest.fixture(autouse=True)
|
|
def setup_method(self):
|
|
self.valid_settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="keycloak.example.com",
|
|
client_id="test-client-id",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "test-realm"
|
|
}
|
|
)
|
|
self.provider = KeycloakProvider(self.valid_settings)
|
|
|
|
def test_initialization_with_valid_settings(self):
|
|
provider = KeycloakProvider(self.valid_settings)
|
|
assert provider.settings == self.valid_settings
|
|
assert provider.settings.provider == "keycloak"
|
|
assert provider.settings.domain == "keycloak.example.com"
|
|
assert provider.settings.client_id == "test-client-id"
|
|
assert provider.settings.audience == "test-audience"
|
|
assert provider.settings.extra.get("realm") == "test-realm"
|
|
|
|
def test_get_authorize_url(self):
|
|
expected_url = "https://keycloak.example.com/realms/test-realm/protocol/openid-connect/auth/device"
|
|
assert self.provider.get_authorize_url() == expected_url
|
|
|
|
def test_get_authorize_url_with_different_domain(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="auth.company.com",
|
|
client_id="test-client",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "my-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
expected_url = "https://auth.company.com/realms/my-realm/protocol/openid-connect/auth/device"
|
|
assert provider.get_authorize_url() == expected_url
|
|
|
|
def test_get_token_url(self):
|
|
expected_url = "https://keycloak.example.com/realms/test-realm/protocol/openid-connect/token"
|
|
assert self.provider.get_token_url() == expected_url
|
|
|
|
def test_get_token_url_with_different_domain(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="sso.enterprise.com",
|
|
client_id="test-client",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "enterprise-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
expected_url = "https://sso.enterprise.com/realms/enterprise-realm/protocol/openid-connect/token"
|
|
assert provider.get_token_url() == expected_url
|
|
|
|
def test_get_jwks_url(self):
|
|
expected_url = "https://keycloak.example.com/realms/test-realm/protocol/openid-connect/certs"
|
|
assert self.provider.get_jwks_url() == expected_url
|
|
|
|
def test_get_jwks_url_with_different_domain(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="identity.org",
|
|
client_id="test-client",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "org-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
expected_url = "https://identity.org/realms/org-realm/protocol/openid-connect/certs"
|
|
assert provider.get_jwks_url() == expected_url
|
|
|
|
def test_get_issuer(self):
|
|
expected_issuer = "https://keycloak.example.com/realms/test-realm"
|
|
assert self.provider.get_issuer() == expected_issuer
|
|
|
|
def test_get_issuer_with_different_domain(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="login.myapp.io",
|
|
client_id="test-client",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "app-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
expected_issuer = "https://login.myapp.io/realms/app-realm"
|
|
assert provider.get_issuer() == expected_issuer
|
|
|
|
def test_get_audience(self):
|
|
assert self.provider.get_audience() == "test-audience"
|
|
|
|
def test_get_client_id(self):
|
|
assert self.provider.get_client_id() == "test-client-id"
|
|
|
|
def test_get_required_fields(self):
|
|
assert self.provider.get_required_fields() == ["realm"]
|
|
|
|
def test_oauth2_base_url(self):
|
|
assert self.provider._oauth2_base_url() == "https://keycloak.example.com"
|
|
|
|
def test_oauth2_base_url_strips_https_prefix(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="https://keycloak.example.com",
|
|
client_id="test-client-id",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "test-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
assert provider._oauth2_base_url() == "https://keycloak.example.com"
|
|
|
|
def test_oauth2_base_url_strips_http_prefix(self):
|
|
settings = Oauth2Settings(
|
|
provider="keycloak",
|
|
domain="http://keycloak.example.com",
|
|
client_id="test-client-id",
|
|
audience="test-audience",
|
|
extra={
|
|
"realm": "test-realm"
|
|
}
|
|
)
|
|
provider = KeycloakProvider(settings)
|
|
assert provider._oauth2_base_url() == "https://keycloak.example.com"
|