cloud-dog-idam 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloud_dog_idam-0.5.2/.docs-manifest.yml +6 -0
- cloud_dog_idam-0.5.2/.gitignore +16 -0
- cloud_dog_idam-0.5.2/=2.9 +7 -0
- cloud_dog_idam-0.5.2/AGENT-INSTRUCTION-FIX-IDAM.md +135 -0
- cloud_dog_idam-0.5.2/AGENT-INSTRUCTION-IDAM.md +741 -0
- cloud_dog_idam-0.5.2/ARCHITECTURE.md +578 -0
- cloud_dog_idam-0.5.2/BUILD.md +74 -0
- cloud_dog_idam-0.5.2/CHANGELOG.md +21 -0
- cloud_dog_idam-0.5.2/DATA-MODEL.md +33 -0
- cloud_dog_idam-0.5.2/LICENCE +190 -0
- cloud_dog_idam-0.5.2/LICENSE +176 -0
- cloud_dog_idam-0.5.2/NOTICE +7 -0
- cloud_dog_idam-0.5.2/PKG-INFO +47 -0
- cloud_dog_idam-0.5.2/QUALITY-GATE.md +89 -0
- cloud_dog_idam-0.5.2/README.md +126 -0
- cloud_dog_idam-0.5.2/REQUIREMENTS.md +457 -0
- cloud_dog_idam-0.5.2/TESTS.md +355 -0
- cloud_dog_idam-0.5.2/adoption_test.py +113 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/__init__.py +109 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api/fastapi/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api/fastapi/deps.py +191 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api/fastapi/middleware.py +235 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api/fastapi/router.py +399 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api_keys/__init__.py +21 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api_keys/hashing.py +31 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/api_keys/manager.py +109 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/approval/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/approval/service.py +94 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/audit/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/audit/emitter.py +90 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/audit/models.py +34 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/config/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/config/models.py +83 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/domain/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/domain/enums.py +46 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/domain/errors.py +38 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/domain/models.py +155 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/identity/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/identity/linking.py +117 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/identity/provisioning.py +108 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/identity/service.py +104 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/migration/__init__.py +24 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/migration/api_keys.py +128 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/__init__.py +90 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/api_key.py +50 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/api_key_only.py +100 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/base.py +36 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/browser_automation.py +403 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/ldap.py +197 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/local_password.py +61 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/oidc.py +528 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/os_pam.py +51 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/registry.py +78 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/providers/saml.py +76 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/__init__.py +152 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/cache.py +58 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/engine.py +185 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/flat_roles.py +138 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/grants.py +262 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/guard_registry.py +125 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/mappers.py +99 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/membership.py +118 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/permissions.py +43 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/policy_extensions.py +92 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/resource_registry.py +126 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/role_catalog.py +269 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/rbac/secret_masking.py +113 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/security/__init__.py +20 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/security/mfa.py +82 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/security/password_policy.py +93 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/security/rate_limiter.py +73 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/security/totp.py +151 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/migrations/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/migrations/env.py +66 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/migrations/versions/0001_initial_idam.py +255 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/migrations/versions/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/models.py +285 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/repositories.py +303 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/storage/sqlalchemy/role_store.py +237 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/testing/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/testing/conformance.py +87 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/testing/fixtures.py +67 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/testing/mock_providers.py +92 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/__init__.py +41 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/base.py +46 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/jwt.py +95 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/opaque.py +86 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/refresh.py +73 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/session_extensions.py +96 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/tokens/sessions.py +62 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/traceability_ids.py +66 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/users/__init__.py +15 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/users/cascade.py +159 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/users/groups.py +86 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/users/roles.py +76 -0
- cloud_dog_idam-0.5.2/cloud_dog_idam/users/service.py +130 -0
- cloud_dog_idam-0.5.2/defaults.yaml +86 -0
- cloud_dog_idam-0.5.2/docs/ARCHITECTURE.md +16 -0
- cloud_dog_idam-0.5.2/docs/CONFIGURATION.md +15 -0
- cloud_dog_idam-0.5.2/docs/EXAMPLES.md +16 -0
- cloud_dog_idam-0.5.2/pyproject.toml +46 -0
- cloud_dog_idam-0.5.2/scaffold/cloud_dog_idam/__init__.py +30 -0
- cloud_dog_idam-0.5.2/scaffold/defaults.yaml +86 -0
- cloud_dog_idam-0.5.2/scaffold/pyproject.toml +29 -0
- cloud_dog_idam-0.5.2/scaffold/tests/conftest.py +67 -0
- cloud_dog_idam-0.5.2/tests/__init__.py +13 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.10_ProxyForwardedPrincipal/__init__.py +15 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.10_ProxyForwardedPrincipal/test_forwarded_principal.py +142 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.1_FastAPIAuthMiddleware/test_fastapi_auth.py +79 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.2_RequirePermissionDep/test_require_permission.py +21 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.3_FullLoginToAuthorised/test_full_flow.py +25 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.4_ServiceAccountAPIKey/test_service_account.py +21 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.5_ConformanceSuite/test_conformance.py +21 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.6_MiddlewareAuthEnforcement/test_middleware_auth.py +87 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.7_MiddlewareSkipPaths/test_middleware_skip.py +86 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.8_APIKeyOnlyIntegration/test_api_key_only_app.py +57 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.9_PolicyExtensionIntegration/test_policy_ext_app.py +71 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.W28A_741_BindingWriteAPI/test_binding_write_api.py +157 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.W28A_741_CascadeResolves/test_cascade_resolves.py +315 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.W28A_741_NoUnguardedRoute/test_no_unguarded_route.py +171 -0
- cloud_dog_idam-0.5.2/tests/application/AT1.W28A_741_SecretMasking/test_secret_masking.py +141 -0
- cloud_dog_idam-0.5.2/tests/application/__init__.py +13 -0
- cloud_dog_idam-0.5.2/tests/conftest.py +227 -0
- cloud_dog_idam-0.5.2/tests/env-AT +1 -0
- cloud_dog_idam-0.5.2/tests/env-IT +1 -0
- cloud_dog_idam-0.5.2/tests/env-ST +1 -0
- cloud_dog_idam-0.5.2/tests/env-UT +1 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.10_SAMLSPFlow/test_saml_sp.py +26 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.11_OIDCLogoutKeycloak/test_oidc_logout_keycloak.py +38 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.12_OIDCLogoutAuth0/test_oidc_logout_auth0.py +33 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.13_LinkedIdentityE2E/test_linked_identity_e2e.py +41 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.1_KeycloakOIDCLogin/test_keycloak_oidc.py +168 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.2_KeycloakRoleMapping/test_keycloak_roles.py +50 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.3_LDAPBindAuth/test_ldap_bind.py +45 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.4_LDAPGroupResolution/test_ldap_groups.py +44 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.5_MultiProviderUser/test_multi_provider.py +64 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.6_Auth0OIDCLogin/test_auth0_oidc.py +70 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.7_Auth0M2MAuth/test_auth0_m2m.py +37 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.8_GoogleOAuthLogin/test_google_oauth.py +57 -0
- cloud_dog_idam-0.5.2/tests/integration/IT1.9_OIDCAuthCodePKCE/test_oidc_pkce.py +43 -0
- cloud_dog_idam-0.5.2/tests/integration/__init__.py +13 -0
- cloud_dog_idam-0.5.2/tests/quality/QT_PUBLISH_COMPLIANCE/__init__.py +2 -0
- cloud_dog_idam-0.5.2/tests/quality/QT_PUBLISH_COMPLIANCE/test_publish_compliance.py +58 -0
- cloud_dog_idam-0.5.2/tests/quality/__init__.py +2 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.1_JWTValidation/test_jwt_security.py +24 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.2_RateLimitLockout/test_rate_limit.py +21 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.3_PasswordPolicyEnforcement/test_password_enforcement.py +22 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.4_TokenReplay/test_token_replay.py +24 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.5_SQLInjection/test_sql_injection.py +22 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.6_OIDCStateNonceValidation/test_oidc_state_nonce.py +22 -0
- cloud_dog_idam-0.5.2/tests/security/QT1.7_JWKSRotationHandling/test_jwks_rotation.py +20 -0
- cloud_dog_idam-0.5.2/tests/security/__init__.py +13 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.10_ProvisioningSyncMode/test_provisioning_sync.py +26 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.10_SameDatastorePersistence/test_same_datastore_persistence.py +92 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.11_ApprovalFullWorkflow/test_approval_workflow.py +24 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.11_DefaultDenyAndExpiry/test_default_deny_and_expiry.py +79 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.12_RolePermissionsPersistence/test_role_permissions_persistence.py +157 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.12_SessionFullLifecycle/test_session_lifecycle_full.py +22 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.13_JWTBlacklistRevocation/test_jwt_blacklist.py +27 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.14_MultiTenantIsolation/test_multi_tenant.py +35 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.1_LocalLoginFlow/test_local_login.py +30 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.2_APIKeyFullLifecycle/test_api_key_lifecycle.py +24 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.3_JWTIssueVerifyRevoke/test_jwt_lifecycle.py +26 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.4_RBACEnforcement/test_rbac_enforcement.py +22 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.5_UserGroupCRUD/test_user_group_crud.py +26 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.6_SessionLifecycle/test_session_lifecycle.py +22 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.7_AlembicMigrations/test_migrations.py +49 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.8_AdminBootstrapIdempotent/test_bootstrap_idempotent.py +22 -0
- cloud_dog_idam-0.5.2/tests/system/ST1.9_FullCRUDAllEntities/test_crud_all_entities.py +34 -0
- cloud_dog_idam-0.5.2/tests/system/__init__.py +13 -0
- cloud_dog_idam-0.5.2/tests/test_traceability_ids.py +27 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.10_IdentityLinking/test_identity_linking.py +20 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.11_JITProvisioning/test_jit_provisioning.py +21 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.12_UserService/test_user_service.py +58 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.13_GroupService/test_group_service.py +23 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.14_RoleService/test_role_service.py +23 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.15_PasswordPolicy/test_password_policy.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.16_AccountLockout/test_account_lockout.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.17_TOTPEnrolment/test_totp.py +20 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.18_AuditEmitter/test_audit_emitter.py +39 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.19_AdminBootstrap/test_admin_bootstrap.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.1_LocalPasswordProvider/test_local_password.py +44 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.20_ApprovalWorkflow/test_approval.py +24 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.21_CanonicalUserModel/test_user_model.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.22_ProviderRegistry/test_provider_registry.py +39 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.23_PKCEChallengeGeneration/test_browser_automation.py +172 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.23_PKCEChallengeGeneration/test_pkce.py +29 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.24_PasswordHistory/test_password_history.py +23 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.25_BannedPasswordList/test_banned_passwords.py +23 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.26_MFAEnrolmentFlow/test_mfa_enrolment.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.27_OSPAMProvider/test_os_pam.py +28 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.28_ExternalRBACHybrid/test_rbac_hybrid.py +23 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.29_AuditEmitterJSONL/test_audit_jsonl.py +47 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.2_PasswordHashing/test_password_hashing.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.30_ServiceRepositoryDelegation/test_service_repository.py +145 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.31_ProviderRegistryPriority/test_registry_priority.py +45 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.32_APIKeyMigration/test_api_key_migration.py +63 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.33_SessionMetadataExtensions/test_session_extensions.py +64 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.34_APIKeyOnlyProvider/test_api_key_only.py +63 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.35_PolicyExtensionPoints/test_policy_extensions.py +66 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.36_CascadeDelete/test_cascade_delete.py +88 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.37_TOTPManager/test_totp_manager.py +105 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.38_ResourceRegistry/test_resource_registry.py +44 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.39_RolePermissionRBAC/test_role_rbac.py +85 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.3_APIKeyManager/test_api_key_manager.py +24 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.4_JWTTokenService/test_jwt.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.5_OpaqueTokenService/test_opaque.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.6_RefreshTokens/test_refresh.py +26 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.7_RBACEngine/test_rbac_engine.py +38 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.8_PermissionChecker/test_permission_checker.py +22 -0
- cloud_dog_idam-0.5.2/tests/unit/UT1.9_ExternalRBACMapper/test_rbac_mapper.py +20 -0
- cloud_dog_idam-0.5.2/tests/unit/__init__.py +13 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Defaulting to user installation because normal site-packages is not writeable
|
|
2
|
+
Collecting pyotp
|
|
3
|
+
Downloading pyotp-2.9.0-py3-none-any.whl.metadata (9.8 kB)
|
|
4
|
+
Downloading pyotp-2.9.0-py3-none-any.whl (13 kB)
|
|
5
|
+
WARNING: Error parsing dependencies of devscripts: Invalid version: '2.22.1ubuntu1'
|
|
6
|
+
Installing collected packages: pyotp
|
|
7
|
+
Successfully installed pyotp-2.9.0
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# platform-idam — Agent Instruction (v0.2.0)
|
|
2
|
+
|
|
3
|
+
**Package:** `cloud_dog_idam`
|
|
4
|
+
**Version:** 0.2.0
|
|
5
|
+
**Date:** 2026-02-18 (final re-review with source verification)
|
|
6
|
+
**Scope:** v0.1.0 quality issues (8–11) + v0.2.0 features (FR1.33–FR1.36) + TESTS.md — **ALL DELIVERED AND VERIFIED**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Status: ✅ COMPLETE
|
|
11
|
+
|
|
12
|
+
All 11 issues (7 round-1 + 4 round-2 quality + 5 v0.2.0 features/TESTS.md) have been resolved. This document is retained for reference and future maintenance.
|
|
13
|
+
|
|
14
|
+
**Verified on 2026-02-18 (final re-review):**
|
|
15
|
+
|
|
16
|
+
| Check | Result |
|
|
17
|
+
|-------|--------|
|
|
18
|
+
| **Source files** | ✅ **70 .py files** (was 65 before v0.2.0 features) |
|
|
19
|
+
| **v0.1.0 architectural quality** | ✅ **ALL 4 issues (8–11) RESOLVED** — see below |
|
|
20
|
+
| **v0.2.0 feature files** (5 files) | ✅ **4/4 delivered**: `migration/api_keys.py` (112L), `tokens/session_extensions.py` (81L), `providers/api_key_only.py` (84L), `rbac/policy_extensions.py` (78L) + `migration/__init__.py` (10L) |
|
|
21
|
+
| **Test directories** (78 on disk) | ✅ 6 new v0.2.0 dirs: UT1.32–UT1.35, AT1.8–AT1.9 |
|
|
22
|
+
| **TESTS.md v0.2.0 entries** | ✅ Updated with FR1.33–FR1.36 coverage map and UT1.32–UT1.35, AT1.8–AT1.9 descriptions |
|
|
23
|
+
| **Config delegation** | ✅ Zero violations (`os.environ`/`hvac`/Vault grep clean) |
|
|
24
|
+
| **Lint / format** | ✅ Clean |
|
|
25
|
+
| **Build** | ✅ v0.2.0 wheel + sdist |
|
|
26
|
+
|
|
27
|
+
**Total outstanding: 0.**
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Previously Fixed Issues (ALL RESOLVED — do not re-fix)
|
|
32
|
+
|
|
33
|
+
### Round 1 (2026-02-17 audit) — 7 issues, all fixed
|
|
34
|
+
|
|
35
|
+
| # | Issue | Status |
|
|
36
|
+
|---|-------|--------|
|
|
37
|
+
| 1 | `ruff format` failure on `browser_automation.py` | ✅ RESOLVED |
|
|
38
|
+
| 2 | ARCHITECTURE.md missing `browser_automation.py` | ✅ RESOLVED |
|
|
39
|
+
| 3 | 11 IT tests skipped (Vault creds) | ✅ RESOLVED |
|
|
40
|
+
| 4 | QUALITY-GATE.md inaccurate claims | ✅ RESOLVED |
|
|
41
|
+
| 5 | `testing/conformance.py` stub | ✅ RESOLVED |
|
|
42
|
+
| 6 | `testing/fixtures.py` stub | ✅ RESOLVED |
|
|
43
|
+
| 7 | `testing/mock_providers.py` minimal | ✅ RESOLVED |
|
|
44
|
+
|
|
45
|
+
### Round 2 (2026-02-18 quality audit) — 4 issues, all fixed
|
|
46
|
+
|
|
47
|
+
| # | Issue | Status | Evidence |
|
|
48
|
+
|---|-------|--------|----------|
|
|
49
|
+
| 8 | `middleware.py` was 13-line stub | ✅ RESOLVED | Now **133 lines**: bearer + API-key auth, skip_paths, request.state population, 401 on failure, audit emission. Matches CC1.9 spec. |
|
|
50
|
+
| 9 | `audit/emitter.py` was in-memory only | ✅ RESOLVED | Now **74 lines**: JSONL file output via `log_path`, `also_log_to_memory`, `_redact()`, flush-after-write, graceful OSError handling. Matches CC1.8 / FR1.23. |
|
|
51
|
+
| 10 | Service classes used in-memory dicts only | ✅ RESOLVED | `UserService` (95L), `GroupService` (46L), `RoleService` (45L), `IdentityService` (68L) — all accept optional `Repository` Protocol, delegate when provided, fallback to in-memory. Matches CC1.10 / FR1.31. |
|
|
52
|
+
| 11 | `providers/registry.py` had no priority | ✅ RESOLVED | Now **60 lines**: `_ProviderEntry` with priority + insertion order, sorted dispatch, `deregister()`, `list_providers()`, stderr logging. Matches CC1.2 / FR1.32. |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## RULES
|
|
57
|
+
|
|
58
|
+
1. Read `RULES.md`, `ARCHITECTURE.md`, `REQUIREMENTS.md`, and `TESTS.md` before making any changes.
|
|
59
|
+
2. UK English throughout.
|
|
60
|
+
3. Every source file MUST have a file header comment: `# cloud_dog_idam — <description>`.
|
|
61
|
+
4. No hardcoded secrets, URLs, or credentials.
|
|
62
|
+
5. Run ALL verification commands after EVERY change and confirm they pass before reporting done.
|
|
63
|
+
6. Do NOT delete or weaken any existing passing test. All 72 existing tests MUST continue to pass.
|
|
64
|
+
7. New or modified modules MUST pass `ruff check` and `ruff format --check`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## v0.2.0 Features — Delivery Summary (ALL RESOLVED)
|
|
69
|
+
|
|
70
|
+
### Issue 12 — API Key Migration Helper (FR1.33, CC1.11) ✅ DELIVERED
|
|
71
|
+
|
|
72
|
+
- `cloud_dog_idam/migration/__init__.py` — **10 lines**
|
|
73
|
+
- `cloud_dog_idam/migration/api_keys.py` — **112 lines**
|
|
74
|
+
- Test: `tests/unit/UT1.32_APIKeyMigration/`
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Issue 13 — Session Metadata Extension Hooks (FR1.34, CC1.12) ✅ DELIVERED
|
|
79
|
+
|
|
80
|
+
- `cloud_dog_idam/tokens/session_extensions.py` — **81 lines**
|
|
81
|
+
- Test: `tests/unit/UT1.33_SessionMetadataExtensions/`
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### Issue 14 — Lightweight API-Key-Only Provider (FR1.35, CC1.13) ✅ DELIVERED
|
|
86
|
+
|
|
87
|
+
- `cloud_dog_idam/providers/api_key_only.py` — **84 lines**
|
|
88
|
+
- Tests: `tests/unit/UT1.34_APIKeyOnlyProvider/`, `tests/application/AT1.8_APIKeyOnlyIntegration/`
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Issue 15 — Policy Extension Points (FR1.36, CC1.14) ✅ DELIVERED
|
|
93
|
+
|
|
94
|
+
- `cloud_dog_idam/rbac/policy_extensions.py` — **78 lines**
|
|
95
|
+
- Tests: `tests/unit/UT1.35_PolicyExtensionPoints/`, `tests/application/AT1.9_PolicyExtensionIntegration/`
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Issue 16 — TESTS.md v0.2.0 Entries ✅ DELIVERED
|
|
100
|
+
|
|
101
|
+
- TESTS.md updated with v0.2.0 test directory entries (UT1.32–UT1.35, AT1.8–AT1.9)
|
|
102
|
+
- Coverage map updated with FR1.33–FR1.36 mappings
|
|
103
|
+
- "New Tests (v0.2.0)" section added
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Verification — Full Suite
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
cd /opt/iac/Development/cloud-dog-ai/cloud-dog-ai-platform-standards/packages/backend/platform-idam
|
|
111
|
+
|
|
112
|
+
# 1. Config delegation check — MUST return zero hits
|
|
113
|
+
grep -rn "os.environ\|import hvac\|overlay_secrets\|from cloud_dog_idam.secrets" cloud_dog_idam/ --include="*.py" | grep -v __pycache__
|
|
114
|
+
# → zero results
|
|
115
|
+
|
|
116
|
+
# 2. Lint
|
|
117
|
+
.venv/bin/ruff check cloud_dog_idam tests
|
|
118
|
+
|
|
119
|
+
# 3. Format
|
|
120
|
+
.venv/bin/ruff format --check cloud_dog_idam tests
|
|
121
|
+
|
|
122
|
+
# 4. Tests
|
|
123
|
+
.venv/bin/pytest tests -v \
|
|
124
|
+
--env UT --env ST --env IT --env AT --env QT \
|
|
125
|
+
--env /opt/iac/Development/cloud-dog-ai/env-vault-admin
|
|
126
|
+
|
|
127
|
+
# 5. Build
|
|
128
|
+
.venv/bin/python -m build --no-isolation
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## pyproject.toml version
|
|
132
|
+
|
|
133
|
+
```toml
|
|
134
|
+
version = "0.2.0"
|
|
135
|
+
```
|