orionis 0.253.0__py3-none-any.whl → 0.266.0__py3-none-any.whl
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.
- orionis/application.py +6 -0
- orionis/framework.py +1 -1
- orionis/luminate/{application.py → _application.py} +21 -19
- orionis/luminate/{container → _container}/container.py +4 -4
- orionis/luminate/{container → _container}/container_integrity.py +2 -2
- orionis/luminate/{container → _container}/resolve.py +2 -2
- orionis/luminate/{contracts → _contracts}/application.py +2 -2
- orionis/luminate/{contracts → _contracts}/console/task_manager.py +1 -1
- orionis/luminate/{contracts → _contracts}/facades/commands/scheduler_facade.py +1 -1
- orionis/luminate/{contracts → _contracts}/facades/facade.py +4 -3
- orionis/luminate/{contracts → _contracts}/foundation/providers/service_providers_bootstrapper.py +2 -2
- orionis/luminate/{contracts → _contracts}/providers/service_provider.py +1 -1
- orionis/luminate/{facades → _facades}/app_facade.py +2 -2
- orionis/luminate/{facades → _facades}/commands/commands_facade.py +3 -3
- orionis/luminate/{facades → _facades}/commands/scheduler_facade.py +3 -3
- orionis/luminate/{facades → _facades}/config/config_facade.py +3 -3
- orionis/luminate/{facades → _facades}/environment/environment_facade.py +3 -3
- orionis/luminate/{facades → _facades}/files/path_facade.py +4 -4
- orionis/luminate/{facades → _facades}/log/log_facade.py +2 -2
- orionis/luminate/{foundation → _foundation}/console/command_bootstrapper.py +2 -2
- orionis/luminate/{foundation → _foundation}/environment/environment_bootstrapper.py +3 -3
- orionis/luminate/{foundation → _foundation/foundation}/config/config_bootstrapper.py +3 -3
- orionis/luminate/{foundation → _foundation}/providers/service_providers_bootstrapper.py +4 -4
- orionis/luminate/{providers → _providers}/commands/reactor_commands_service_provider.py +7 -7
- orionis/luminate/{providers → _providers}/commands/scheduler_provider.py +3 -3
- orionis/luminate/{providers → _providers}/config/config_service_provider.py +3 -3
- orionis/luminate/{providers → _providers}/environment/environment__service_provider.py +4 -4
- orionis/luminate/_providers/files/paths_provider.py +21 -0
- orionis/luminate/{providers → _providers}/log/log_service_provider.py +5 -5
- orionis/luminate/{providers → _providers}/service_provider.py +2 -2
- orionis/luminate/{services_ → _services}/commands/reactor_commands_service.py +3 -3
- orionis/luminate/{services_ → _services}/commands/scheduler_service.py +1 -1
- orionis/luminate/{services_ → _services}/config/config_service.py +1 -1
- orionis/luminate/{services_ → _services}/log/log_service.py +1 -1
- orionis/luminate/app.py +19 -0
- orionis/luminate/console/base/command.py +1 -1
- orionis/luminate/console/command_filter.py +1 -1
- orionis/luminate/console/commands/help.py +1 -1
- orionis/luminate/console/commands/schedule_work.py +2 -2
- orionis/luminate/console/dumper/dump_die.py +1 -1
- orionis/luminate/console/kernel.py +1 -1
- orionis/luminate/console/output/console.py +3 -3
- orionis/luminate/console/output/executor.py +1 -1
- orionis/luminate/console/output/progress_bar.py +1 -1
- orionis/luminate/console/parser.py +1 -1
- orionis/luminate/{config → foundation/config}/app/entities/app.py +44 -43
- orionis/luminate/{config → foundation/config}/auth/entities/auth.py +9 -1
- orionis/luminate/foundation/config/cache/entities/cache.py +74 -0
- orionis/luminate/foundation/config/cache/entities/file.py +46 -0
- orionis/luminate/foundation/config/cache/entities/stores.py +46 -0
- orionis/luminate/{contracts/config → foundation/config/contracts}/config.py +8 -12
- orionis/luminate/foundation/config/cors/entities/cors.py +129 -0
- orionis/luminate/foundation/config/database/entities/connections.py +89 -0
- orionis/luminate/foundation/config/database/entities/database.py +62 -0
- orionis/luminate/foundation/config/database/entities/mysql.py +270 -0
- orionis/luminate/foundation/config/database/entities/oracle.py +227 -0
- orionis/luminate/foundation/config/database/entities/pgsql.py +189 -0
- orionis/luminate/foundation/config/database/entities/sqlite.py +178 -0
- orionis/luminate/foundation/config/database/enums/mysql_charsets.py +92 -0
- orionis/luminate/foundation/config/database/enums/mysql_collations.py +53 -0
- orionis/luminate/foundation/config/database/enums/mysql_engine.py +18 -0
- orionis/luminate/foundation/config/database/enums/oracle_encoding.py +44 -0
- orionis/luminate/foundation/config/database/enums/oracle_nencoding.py +31 -0
- orionis/luminate/foundation/config/database/enums/pgsql_charsets.py +90 -0
- orionis/luminate/foundation/config/database/enums/pgsql_collations.py +26 -0
- orionis/luminate/foundation/config/database/enums/pgsql_mode.py +24 -0
- orionis/luminate/foundation/config/database/enums/sqlite_foreign_key.py +12 -0
- orionis/luminate/foundation/config/database/enums/sqlite_journal.py +22 -0
- orionis/luminate/foundation/config/database/enums/sqlite_synchronous.py +16 -0
- orionis/luminate/foundation/config/filesystems/entitites/aws.py +134 -0
- orionis/luminate/foundation/config/filesystems/entitites/disks.py +68 -0
- orionis/luminate/foundation/config/filesystems/entitites/filesystems.py +53 -0
- orionis/luminate/foundation/config/filesystems/entitites/local.py +39 -0
- orionis/luminate/foundation/config/filesystems/entitites/public.py +52 -0
- orionis/luminate/foundation/config/logging/entities/channels.py +115 -0
- orionis/luminate/foundation/config/logging/entities/chunked.py +128 -0
- orionis/luminate/foundation/config/logging/entities/daily.py +113 -0
- orionis/luminate/foundation/config/logging/entities/hourly.py +100 -0
- orionis/luminate/foundation/config/logging/entities/logging.py +51 -0
- orionis/luminate/foundation/config/logging/entities/monthly.py +100 -0
- orionis/luminate/foundation/config/logging/entities/stack.py +74 -0
- orionis/luminate/foundation/config/logging/entities/weekly.py +102 -0
- orionis/luminate/foundation/config/logging/enums/levels.py +21 -0
- orionis/luminate/foundation/config/mail/entities/file.py +41 -0
- orionis/luminate/foundation/config/mail/entities/mail.py +56 -0
- orionis/luminate/foundation/config/mail/entities/mailers.py +54 -0
- orionis/luminate/foundation/config/mail/entities/smtp.py +104 -0
- orionis/luminate/foundation/config/queue/entities/brokers.py +55 -0
- orionis/luminate/foundation/config/queue/entities/database.py +107 -0
- orionis/luminate/foundation/config/queue/entities/queue.py +47 -0
- orionis/luminate/foundation/config/queue/enums/strategy.py +15 -0
- orionis/luminate/foundation/config/roots/paths.py +446 -0
- orionis/luminate/foundation/config/session/entities/session.py +147 -0
- orionis/luminate/foundation/config/session/enums/same_site_policy.py +14 -0
- orionis/luminate/foundation/config/session/helpers/secret_key.py +16 -0
- orionis/luminate/foundation/config/startup.py +203 -0
- orionis/luminate/foundation/config/testing/entities/__init__.py +0 -0
- orionis/luminate/{config → foundation/config/testing}/entities/testing.py +36 -20
- orionis/luminate/foundation/config/testing/enums/__init__.py +0 -0
- orionis/luminate/foundation/config/testing/enums/test_mode.py +12 -0
- orionis/luminate/patterns/__init__.py +0 -4
- orionis/luminate/patterns/singleton/__init__.py +0 -10
- orionis/luminate/services/asynchrony/__init__.py +0 -0
- orionis/luminate/services/asynchrony/async_io.py +31 -0
- orionis/luminate/services/environment/__init__.py +0 -10
- orionis/luminate/services/environment/contracts/__init__.py +0 -5
- orionis/luminate/services/environment/contracts/env.py +0 -11
- orionis/luminate/services/environment/dot_env.py +87 -163
- orionis/luminate/services/environment/env.py +0 -11
- orionis/luminate/services/introspection/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/entities/__init__.py +0 -0
- orionis/luminate/services/introspection/abstracts/entities/abstract_class_attributes.py +37 -0
- orionis/luminate/{support → services}/introspection/abstracts/reflect_abstract.py +1 -1
- orionis/luminate/services/introspection/dependencies/__init__.py +0 -0
- orionis/luminate/services/introspection/dependencies/contracts/__init__.py +0 -0
- orionis/luminate/{support → services}/introspection/dependencies/contracts/reflect_dependencies.py +2 -2
- orionis/luminate/services/introspection/dependencies/entities/__init__.py +0 -0
- orionis/luminate/services/introspection/dependencies/entities/class_dependencies.py +41 -0
- orionis/luminate/services/introspection/dependencies/entities/method_dependencies.py +42 -0
- orionis/luminate/services/introspection/dependencies/entities/resolved_dependencies.py +49 -0
- orionis/luminate/{support → services}/introspection/dependencies/reflect_dependencies.py +4 -4
- orionis/luminate/services/parsers/__init__.py +0 -0
- orionis/luminate/services/parsers/contracts/__init__.py +0 -0
- orionis/luminate/{support/parsers/exception_parser.py → services/parsers/exception.py} +1 -1
- orionis/luminate/services/parsers/serializer.py +15 -0
- orionis/luminate/services/paths/__init__.py +0 -9
- orionis/luminate/services/paths/resolver.py +1 -1
- orionis/luminate/services/standard/__init__.py +0 -0
- orionis/luminate/services/standard/contracts/__init__.py +0 -0
- orionis/luminate/{support → services}/standard/std.py +1 -1
- orionis/luminate/services/system/__init__.py +0 -0
- orionis/luminate/services/system/contracts/__init__.py +0 -0
- orionis/luminate/services/system/contracts/imports.py +31 -0
- orionis/luminate/services/system/contracts/workers.py +18 -0
- orionis/luminate/services/system/imports.py +124 -0
- orionis/luminate/services/system/runtime_imports.py +70 -0
- orionis/luminate/services/{workers/maximum_workers.py → system/workers.py} +2 -1
- orionis/luminate/services/wrapper/__init__.py +0 -0
- orionis/luminate/services/wrapper/dicts/__init__.py +0 -0
- orionis/luminate/services/wrapper/dicts/dot_dict.py +115 -0
- orionis/luminate/support/introspection/__init__.py +0 -5
- orionis/luminate/support/introspection/container_integrity.py +2 -2
- orionis/luminate/support/introspection/instances/__init__.py +0 -5
- orionis/luminate/support/introspection/reflection.py +1 -1
- orionis/luminate/test/__init__.py +0 -23
- orionis/luminate/test/cases/test_async.py +41 -9
- orionis/luminate/test/cases/test_case.py +27 -13
- orionis/luminate/test/cases/test_sync.py +28 -6
- orionis/luminate/test/output/contracts/{test_std_out.py → dumper.py} +2 -1
- orionis/luminate/test/output/{test_std_out.py → dumper.py} +7 -4
- orionis/luminate/test/suites/__init__.py +0 -0
- orionis/luminate/test/suites/contracts/__init__.py +0 -0
- orionis/luminate/test/suites/contracts/test_suite.py +23 -0
- orionis/luminate/test/suites/test_suite.py +101 -0
- orionis/luminate/test/{core → suites}/test_unit.py +16 -8
- orionis/unittesting.py +43 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/METADATA +19 -3
- orionis-0.266.0.dist-info/RECORD +440 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/WHEEL +1 -1
- orionis-0.266.0.dist-info/entry_points.txt +2 -0
- orionis-0.266.0.dist-info/zip-safe +1 -0
- tests/example/test_example.py +1 -1
- tests/foundation/__init__.py +0 -0
- tests/foundation/config/__init__.py +0 -0
- tests/foundation/config/app/__init__.py +0 -0
- tests/foundation/config/app/test_app.py +140 -0
- tests/foundation/config/auth/__init__.py +0 -0
- tests/{config → foundation/config/auth}/test_auth.py +6 -3
- tests/foundation/config/cache/__init__.py +0 -0
- tests/foundation/config/cache/test_cache.py +98 -0
- tests/foundation/config/cache/test_cache_file.py +78 -0
- tests/foundation/config/cache/test_cache_stores.py +88 -0
- tests/foundation/config/cors/__init__.py +0 -0
- tests/foundation/config/cors/test_cors.py +121 -0
- tests/foundation/config/database/__init__.py +0 -0
- tests/foundation/config/database/test_database.py +108 -0
- tests/foundation/config/database/test_database_connections.py +129 -0
- tests/foundation/config/database/test_database_mysql.py +231 -0
- tests/foundation/config/database/test_database_oracle.py +204 -0
- tests/foundation/config/database/test_database_pgsql.py +187 -0
- tests/foundation/config/database/test_database_sqlite.py +153 -0
- tests/foundation/config/exceptions/__init__.py +0 -0
- tests/foundation/config/exceptions/test_exceptions_integrity.py +83 -0
- tests/foundation/config/filesystems/__init__.py +0 -0
- tests/foundation/config/filesystems/test_filesystems.py +110 -0
- tests/foundation/config/filesystems/test_filesystems_aws.py +133 -0
- tests/foundation/config/filesystems/test_filesystems_disks.py +114 -0
- tests/foundation/config/filesystems/test_filesystems_local.py +95 -0
- tests/foundation/config/filesystems/test_filesystems_public.py +120 -0
- tests/foundation/config/logging/__init__.py +0 -0
- tests/foundation/config/logging/test_logging.py +48 -0
- tests/foundation/config/logging/test_logging_channels.py +157 -0
- tests/foundation/config/logging/test_logging_chunked.py +166 -0
- tests/foundation/config/logging/test_logging_daily.py +153 -0
- tests/foundation/config/logging/test_logging_hourly.py +131 -0
- tests/foundation/config/logging/test_logging_monthly.py +133 -0
- tests/foundation/config/logging/test_logging_stack.py +124 -0
- tests/foundation/config/logging/test_logging_weekly.py +133 -0
- tests/foundation/config/mail/__init__.py +0 -0
- tests/foundation/config/mail/test_mail.py +73 -0
- tests/foundation/config/mail/test_mail_file.py +61 -0
- tests/foundation/config/mail/test_mail_mailers.py +58 -0
- tests/foundation/config/mail/test_mail_smtp.py +102 -0
- tests/foundation/config/queue/__init__.py +0 -0
- tests/foundation/config/queue/test_queue.py +58 -0
- tests/foundation/config/queue/test_queue_brokers.py +67 -0
- tests/foundation/config/queue/test_queue_database.py +95 -0
- tests/foundation/config/root/__init__.py +0 -0
- tests/foundation/config/root/test_root_paths.py +134 -0
- tests/foundation/config/session/__init__.py +0 -0
- tests/foundation/config/session/test_session.py +138 -0
- tests/foundation/config/startup/__init__.py +0 -0
- tests/foundation/config/startup/test_config_startup.py +134 -0
- tests/foundation/config/testing/__init__.py +0 -0
- tests/foundation/config/testing/test_testing.py +167 -0
- tests/patterns/singleton/test_singleton.py +2 -2
- tests/services/asynchrony/__init__.py +0 -0
- tests/{support/async_io/test_async_coroutine.py → services/asynchrony/test_async_io.py} +6 -5
- tests/services/environment/test_env.py +155 -33
- tests/services/inspection/__init__.py +0 -0
- tests/services/inspection/dependencies/__init__.py +0 -0
- tests/services/inspection/dependencies/mocks/__init__.py +0 -0
- tests/services/inspection/dependencies/mocks/mock_user.py +30 -0
- tests/services/inspection/dependencies/mocks/mock_user_controller.py +27 -0
- tests/services/inspection/dependencies/mocks/mock_users_permissions.py +41 -0
- tests/services/inspection/dependencies/test_reflect_dependencies.py +94 -0
- tests/services/parsers/__init__.py +0 -0
- tests/services/parsers/mocks/__init__.py +0 -0
- tests/services/parsers/mocks/mock_custom_error.py +15 -0
- tests/{support → services}/parsers/test_exception_parser.py +8 -8
- tests/services/path/__init__.py +0 -0
- tests/services/path/test_resolver.py +73 -0
- tests/services/standard/__init__.py +0 -0
- tests/services/standard/test_std.py +127 -0
- tests/services/wrapper/__init__.py +0 -0
- tests/services/wrapper/test_wrapper_doc_dict.py +129 -0
- tests/testing/__init__.py +0 -0
- tests/testing/test_testing_result.py +92 -0
- tests/testing/test_testing_unit.py +138 -0
- orionis/luminate/config/app/__init__.py +0 -10
- orionis/luminate/config/auth/__init__.py +0 -7
- orionis/luminate/config/cache/__init__.py +0 -9
- orionis/luminate/config/cache/entities/cache.py +0 -58
- orionis/luminate/config/cache/entities/file.py +0 -29
- orionis/luminate/config/cache/entities/stores.py +0 -35
- orionis/luminate/config/entities/cors.py +0 -58
- orionis/luminate/config/entities/database.py +0 -204
- orionis/luminate/config/entities/filesystems.py +0 -98
- orionis/luminate/config/entities/logging.py +0 -157
- orionis/luminate/config/entities/mail.py +0 -76
- orionis/luminate/config/entities/queue.py +0 -62
- orionis/luminate/config/entities/session.py +0 -58
- orionis/luminate/providers/files/paths_provider.py +0 -20
- orionis/luminate/services/workers/__init__.py +0 -10
- orionis/luminate/support/adapters/dot_dict.py +0 -29
- orionis/luminate/support/asynchrony/async_io.py +0 -40
- orionis/luminate/support/asynchrony/contracts/async_coroutine.py +0 -26
- orionis/luminate/support/introspection/abstracts/entities/abstract_class_attributes.py +0 -11
- orionis/luminate/support/introspection/dependencies/__init__.py +0 -5
- orionis/luminate/support/introspection/dependencies/entities/class_dependencies.py +0 -11
- orionis/luminate/support/introspection/dependencies/entities/method_dependencies.py +0 -11
- orionis/luminate/support/introspection/dependencies/entities/resolved_dependencies.py +0 -12
- orionis/luminate/support/paths/contracts/resolver.py +0 -67
- orionis/luminate/support/paths/resolver.py +0 -83
- orionis/luminate/test/core/contracts/test_suite.py +0 -30
- orionis/luminate/test/core/test_suite.py +0 -93
- orionis-0.253.0.dist-info/RECORD +0 -318
- orionis-0.253.0.dist-info/entry_points.txt +0 -2
- tests/config/test_app.py +0 -122
- tests/config/test_cache.py +0 -20
- tests/support/adapters/fakes/fake_dict.py +0 -15
- tests/support/adapters/test_doct_dict.py +0 -21
- tests/support/inspection/fakes/fake_reflect_dependencies.py +0 -25
- tests/support/inspection/test_reflect_dependencies.py +0 -67
- tests/support/parsers/fakes/fake_custom_error.py +0 -27
- tests/support/path/test_resolver.py +0 -33
- tests/support/standard/test_std.py +0 -62
- /orionis/{console.py → clinstall.py} +0 -0
- /orionis/luminate/{config → _container}/__init__.py +0 -0
- /orionis/luminate/{container → _container}/exception.py +0 -0
- /orionis/luminate/{container → _container}/lifetimes.py +0 -0
- /orionis/luminate/{config/app/entities → _contracts}/__init__.py +0 -0
- /orionis/luminate/{config/app/enums → _contracts/config}/__init__.py +0 -0
- /orionis/luminate/{config/contracts → _contracts/config}/config.py +0 -0
- /orionis/luminate/{config/auth/entities → _contracts/console}/__init__.py +0 -0
- /orionis/luminate/{config/cache/entities → _contracts/console/base}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/base/command.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/command_filter.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/kernel.py +0 -0
- /orionis/luminate/{config/cache/enums → _contracts/console/output}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/console.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/executor.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/output/progress_bar.py +0 -0
- /orionis/luminate/{contracts → _contracts}/console/parser.py +0 -0
- /orionis/luminate/{contracts → _contracts}/container/container.py +0 -0
- /orionis/luminate/{contracts → _contracts}/container/container_integrity.py +0 -0
- /orionis/luminate/{config/contracts → _contracts/facades}/__init__.py +0 -0
- /orionis/luminate/{config/exceptions → _contracts/facades/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/commands/commands_facade.py +0 -0
- /orionis/luminate/{container → _contracts/facades/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/config/config_facade.py +0 -0
- /orionis/luminate/{contracts → _contracts/facades/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/environment/environment_facade.py +0 -0
- /orionis/luminate/{contracts/config → _contracts/facades/files}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/files/path_facade.py +0 -0
- /orionis/luminate/{contracts/console → _contracts/facades/log}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/log/log_facade.py +0 -0
- /orionis/luminate/{contracts/console/base → _contracts/facades/tests}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/facades/tests/tests_facade.py +0 -0
- /orionis/luminate/{contracts/console/output → _contracts/foundation}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/bootstraper.py +0 -0
- /orionis/luminate/{contracts/facades → _contracts/foundation/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/config/config_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/commands → _contracts/foundation/console}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/console/command_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/config → _contracts/foundation/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/foundation/environment/environment_bootstrapper.py +0 -0
- /orionis/luminate/{contracts/facades/environment → _contracts/foundation/providers}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/files → _contracts/providers}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/log → _contracts/services}/__init__.py +0 -0
- /orionis/luminate/{contracts/facades/tests → _contracts/services/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/commands/reactor_commands_service.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/commands/schedule_service.py +0 -0
- /orionis/luminate/{contracts/foundation → _contracts/services/config}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/config/config_service.py +0 -0
- /orionis/luminate/{contracts/foundation/config → _contracts/services/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/environment/environment_service.py +0 -0
- /orionis/luminate/{contracts/foundation/console → _contracts/services/files}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/files/path_resolver_service.py +0 -0
- /orionis/luminate/{contracts/foundation/environment → _contracts/services/log}/__init__.py +0 -0
- /orionis/luminate/{contracts → _contracts}/services/log/log_service.py +0 -0
- /orionis/luminate/{contracts → _contracts}/support/exception_parse.py +0 -0
- /orionis/luminate/{contracts → _contracts}/support/reflection.py +0 -0
- /orionis/luminate/{contracts/foundation/providers → _facades}/__init__.py +0 -0
- /orionis/luminate/{contracts/providers → _facades/commands}/__init__.py +0 -0
- /orionis/luminate/{contracts/services → _facades/config}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/commands → _facades/environment}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/config → _facades/files}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/environment → _facades/log}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/files → _foundation}/__init__.py +0 -0
- /orionis/luminate/{contracts/services/log → _foundation/console}/__init__.py +0 -0
- /orionis/luminate/{facades → _foundation/environment}/__init__.py +0 -0
- /orionis/luminate/{facades/commands → _foundation/exceptions}/__init__.py +0 -0
- /orionis/luminate/{foundation → _foundation}/exceptions/exception_bootstrapper.py +0 -0
- /orionis/luminate/{foundation → _foundation}/exceptions/exception_providers.py +0 -0
- /orionis/luminate/{facades → _foundation/foundation}/config/__init__.py +0 -0
- /orionis/luminate/{facades/environment → _foundation/providers}/__init__.py +0 -0
- /orionis/luminate/{facades/files → _providers}/__init__.py +0 -0
- /orionis/luminate/{facades/log → _providers/commands}/__init__.py +0 -0
- /orionis/luminate/{foundation/console → _providers/config}/__init__.py +0 -0
- /orionis/luminate/{foundation → _providers}/environment/__init__.py +0 -0
- /orionis/luminate/{foundation/exceptions → _providers/files}/__init__.py +0 -0
- /orionis/luminate/{foundation/providers → _providers/log}/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/commands/__init__.py +0 -0
- /orionis/luminate/{providers → _services}/config/__init__.py +0 -0
- /orionis/luminate/{providers/environment → _services/log}/__init__.py +0 -0
- /orionis/luminate/{providers/files → foundation/config/app}/__init__.py +0 -0
- /orionis/luminate/{providers/log → foundation/config/app/entities}/__init__.py +0 -0
- /orionis/luminate/{services_ → foundation/config/app/enums}/__init__.py +0 -0
- /orionis/luminate/{config → foundation/config}/app/enums/ciphers.py +0 -0
- /orionis/luminate/{config → foundation/config}/app/enums/environments.py +0 -0
- /orionis/luminate/{services_/commands → foundation/config/auth}/__init__.py +0 -0
- /orionis/luminate/{services_/config → foundation/config/auth/entities}/__init__.py +0 -0
- /orionis/luminate/{services_/log → foundation/config/cache}/__init__.py +0 -0
- /orionis/luminate/{support/adapters → foundation/config/cache/entities}/__init__.py +0 -0
- /orionis/luminate/{support/asynchrony → foundation/config/cache/enums}/__init__.py +0 -0
- /orionis/luminate/{config → foundation/config}/cache/enums/drivers.py +0 -0
- /orionis/luminate/{support/asynchrony → foundation/config}/contracts/__init__.py +0 -0
- /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/__init__.py +0 -0
- /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/entities/__init__.py +0 -0
- /orionis/luminate/{support/introspection/dependencies/contracts → foundation/config/database}/__init__.py +0 -0
- /orionis/luminate/{support/introspection/dependencies → foundation/config/database}/entities/__init__.py +0 -0
- /orionis/luminate/{support/parsers → foundation/config/database/enums}/__init__.py +0 -0
- /orionis/luminate/{support/parsers/contracts → foundation/config/exceptions}/__init__.py +0 -0
- /orionis/luminate/{config/exceptions/integrity_exception.py → foundation/config/exceptions/integrity.py} +0 -0
- /orionis/luminate/{support/paths → foundation/config/filesystems}/__init__.py +0 -0
- /orionis/luminate/{support/paths/contracts → foundation/config/filesystems/entitites}/__init__.py +0 -0
- /orionis/luminate/{support/standard → foundation/config/logging}/__init__.py +0 -0
- /orionis/luminate/{support/standard/contracts → foundation/config/logging/entities}/__init__.py +0 -0
- /orionis/luminate/{test/core → foundation/config/logging/enums}/__init__.py +0 -0
- /orionis/luminate/{test/core/contracts → foundation/config/mail}/__init__.py +0 -0
- {tests/config → orionis/luminate/foundation/config/mail/entities}/__init__.py +0 -0
- {tests/support/adapters → orionis/luminate/foundation/config/queue}/__init__.py +0 -0
- {tests/support/adapters/fakes → orionis/luminate/foundation/config/queue/entities}/__init__.py +0 -0
- {tests/support/async_io → orionis/luminate/foundation/config/roots}/__init__.py +0 -0
- {tests/support/parsers → orionis/luminate/foundation/config/session}/__init__.py +0 -0
- {tests/support/parsers/fakes → orionis/luminate/foundation/config/session/entities}/__init__.py +0 -0
- {tests/support/path → orionis/luminate/foundation/config/session/enums}/__init__.py +0 -0
- {tests/support/standard → orionis/luminate/foundation/config/testing}/__init__.py +0 -0
- /orionis/luminate/{support → services}/parsers/contracts/exception_parser.py +0 -0
- /orionis/luminate/{support → services}/standard/contracts/std.py +0 -0
- /orionis/luminate/test/exceptions/{test_exception.py → test_failure_exception.py} +0 -0
- /orionis/luminate/test/{core → suites}/contracts/test_unit.py +0 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info/licenses}/LICENCE +0 -0
- {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,187 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.pgsql import PGSQL
|
2
|
+
from orionis.luminate.foundation.config.database.enums.pgsql_charsets import PGSQLCharset
|
3
|
+
from orionis.luminate.foundation.config.database.enums.pgsql_mode import PGSQLSSLMode
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
|
+
from orionis.unittesting import TestCase
|
6
|
+
|
7
|
+
class TestConfigPGSQL(TestCase):
|
8
|
+
"""
|
9
|
+
Test cases for the PGSQL database configuration class.
|
10
|
+
"""
|
11
|
+
|
12
|
+
async def testDefaultValues(self):
|
13
|
+
"""
|
14
|
+
Test that PGSQL instance is created with correct default values.
|
15
|
+
Verifies all default values match expected defaults from class definition.
|
16
|
+
"""
|
17
|
+
pgsql = PGSQL()
|
18
|
+
self.assertEqual(pgsql.driver, 'pgsql')
|
19
|
+
self.assertEqual(pgsql.host, '127.0.0.1')
|
20
|
+
self.assertEqual(pgsql.port, '5432')
|
21
|
+
self.assertEqual(pgsql.database, 'orionis')
|
22
|
+
self.assertEqual(pgsql.username, 'root')
|
23
|
+
self.assertEqual(pgsql.password, '')
|
24
|
+
self.assertEqual(pgsql.charset, PGSQLCharset.UTF8.value)
|
25
|
+
self.assertEqual(pgsql.prefix, '')
|
26
|
+
self.assertTrue(pgsql.prefix_indexes)
|
27
|
+
self.assertEqual(pgsql.search_path, 'public')
|
28
|
+
self.assertEqual(pgsql.sslmode, PGSQLSSLMode.PREFER.value)
|
29
|
+
|
30
|
+
async def testDriverValidation(self):
|
31
|
+
"""
|
32
|
+
Test driver attribute validation.
|
33
|
+
Verifies that empty or non-string drivers raise exceptions.
|
34
|
+
"""
|
35
|
+
with self.assertRaises(OrionisIntegrityException):
|
36
|
+
PGSQL(driver='')
|
37
|
+
with self.assertRaises(OrionisIntegrityException):
|
38
|
+
PGSQL(driver=123)
|
39
|
+
|
40
|
+
async def testHostValidation(self):
|
41
|
+
"""
|
42
|
+
Test host attribute validation.
|
43
|
+
Verifies that empty or non-string hosts raise exceptions.
|
44
|
+
"""
|
45
|
+
with self.assertRaises(OrionisIntegrityException):
|
46
|
+
PGSQL(host='')
|
47
|
+
with self.assertRaises(OrionisIntegrityException):
|
48
|
+
PGSQL(host=123)
|
49
|
+
|
50
|
+
async def testPortValidation(self):
|
51
|
+
"""
|
52
|
+
Test port attribute validation.
|
53
|
+
Verifies that non-numeric string ports raise exceptions.
|
54
|
+
"""
|
55
|
+
with self.assertRaises(OrionisIntegrityException):
|
56
|
+
PGSQL(port='abc')
|
57
|
+
with self.assertRaises(OrionisIntegrityException):
|
58
|
+
PGSQL(port=5432) # Should be string
|
59
|
+
|
60
|
+
async def testDatabaseValidation(self):
|
61
|
+
"""
|
62
|
+
Test database attribute validation.
|
63
|
+
Verifies that empty or non-string database names raise exceptions.
|
64
|
+
"""
|
65
|
+
with self.assertRaises(OrionisIntegrityException):
|
66
|
+
PGSQL(database='')
|
67
|
+
with self.assertRaises(OrionisIntegrityException):
|
68
|
+
PGSQL(database=123)
|
69
|
+
|
70
|
+
async def testUsernameValidation(self):
|
71
|
+
"""
|
72
|
+
Test username attribute validation.
|
73
|
+
Verifies that empty or non-string usernames raise exceptions.
|
74
|
+
"""
|
75
|
+
with self.assertRaises(OrionisIntegrityException):
|
76
|
+
PGSQL(username='')
|
77
|
+
with self.assertRaises(OrionisIntegrityException):
|
78
|
+
PGSQL(username=123)
|
79
|
+
|
80
|
+
async def testPasswordValidation(self):
|
81
|
+
"""
|
82
|
+
Test password attribute validation.
|
83
|
+
Verifies that non-string passwords raise exceptions.
|
84
|
+
"""
|
85
|
+
with self.assertRaises(OrionisIntegrityException):
|
86
|
+
PGSQL(password=123)
|
87
|
+
|
88
|
+
async def testCharsetValidation(self):
|
89
|
+
"""
|
90
|
+
Test charset attribute validation.
|
91
|
+
Verifies enum conversion and invalid value handling.
|
92
|
+
"""
|
93
|
+
# Test string conversion
|
94
|
+
pgsql = PGSQL(charset='UTF8')
|
95
|
+
self.assertEqual(pgsql.charset, PGSQLCharset.UTF8.value)
|
96
|
+
|
97
|
+
# Test enum assignment
|
98
|
+
pgsql = PGSQL(charset=PGSQLCharset.LATIN1)
|
99
|
+
self.assertEqual(pgsql.charset, PGSQLCharset.LATIN1.value)
|
100
|
+
|
101
|
+
# Test invalid value
|
102
|
+
with self.assertRaises(OrionisIntegrityException):
|
103
|
+
PGSQL(charset='INVALID')
|
104
|
+
|
105
|
+
async def testPrefixIndexesValidation(self):
|
106
|
+
"""
|
107
|
+
Test prefix_indexes attribute validation.
|
108
|
+
Verifies that non-boolean values raise exceptions.
|
109
|
+
"""
|
110
|
+
with self.assertRaises(OrionisIntegrityException):
|
111
|
+
PGSQL(prefix_indexes='true')
|
112
|
+
with self.assertRaises(OrionisIntegrityException):
|
113
|
+
PGSQL(prefix_indexes=1)
|
114
|
+
|
115
|
+
async def testSearchPathValidation(self):
|
116
|
+
"""
|
117
|
+
Test search_path attribute validation.
|
118
|
+
Verifies that empty or non-string search paths raise exceptions.
|
119
|
+
"""
|
120
|
+
with self.assertRaises(OrionisIntegrityException):
|
121
|
+
PGSQL(search_path='')
|
122
|
+
with self.assertRaises(OrionisIntegrityException):
|
123
|
+
PGSQL(search_path=123)
|
124
|
+
|
125
|
+
async def testSSLModeValidation(self):
|
126
|
+
"""
|
127
|
+
Test sslmode attribute validation.
|
128
|
+
Verifies enum conversion and invalid value handling.
|
129
|
+
"""
|
130
|
+
# Test string conversion
|
131
|
+
pgsql = PGSQL(sslmode='REQUIRE')
|
132
|
+
self.assertEqual(pgsql.sslmode, PGSQLSSLMode.REQUIRE.value)
|
133
|
+
|
134
|
+
# Test enum assignment
|
135
|
+
pgsql = PGSQL(sslmode=PGSQLSSLMode.DISABLE)
|
136
|
+
self.assertEqual(pgsql.sslmode, PGSQLSSLMode.DISABLE.value)
|
137
|
+
|
138
|
+
# Test invalid value
|
139
|
+
with self.assertRaises(OrionisIntegrityException):
|
140
|
+
PGSQL(sslmode='INVALID')
|
141
|
+
|
142
|
+
async def testToDictMethod(self):
|
143
|
+
"""
|
144
|
+
Test that toDict returns proper dictionary representation.
|
145
|
+
Verifies all attributes are correctly included in dictionary.
|
146
|
+
"""
|
147
|
+
pgsql = PGSQL()
|
148
|
+
pgsql_dict = pgsql.toDict()
|
149
|
+
self.assertEqual(pgsql_dict['driver'], 'pgsql')
|
150
|
+
self.assertEqual(pgsql_dict['host'], '127.0.0.1')
|
151
|
+
self.assertEqual(pgsql_dict['port'], '5432')
|
152
|
+
self.assertEqual(pgsql_dict['database'], 'orionis')
|
153
|
+
self.assertEqual(pgsql_dict['username'], 'root')
|
154
|
+
self.assertEqual(pgsql_dict['password'], '')
|
155
|
+
self.assertEqual(pgsql_dict['charset'], PGSQLCharset.UTF8.value)
|
156
|
+
self.assertEqual(pgsql_dict['prefix'], '')
|
157
|
+
self.assertTrue(pgsql_dict['prefix_indexes'])
|
158
|
+
self.assertEqual(pgsql_dict['search_path'], 'public')
|
159
|
+
self.assertEqual(pgsql_dict['sslmode'], PGSQLSSLMode.PREFER.value)
|
160
|
+
|
161
|
+
async def testCustomValues(self):
|
162
|
+
"""
|
163
|
+
Test that custom values are properly stored and validated.
|
164
|
+
Verifies custom configuration values are correctly handled.
|
165
|
+
"""
|
166
|
+
custom_pgsql = PGSQL(
|
167
|
+
host='db.example.com',
|
168
|
+
port='6432',
|
169
|
+
database='custom_db',
|
170
|
+
username='admin',
|
171
|
+
password='secure123',
|
172
|
+
charset='LATIN1',
|
173
|
+
prefix='app_',
|
174
|
+
prefix_indexes=False,
|
175
|
+
search_path='app_schema',
|
176
|
+
sslmode='VERIFY_FULL'
|
177
|
+
)
|
178
|
+
self.assertEqual(custom_pgsql.host, 'db.example.com')
|
179
|
+
self.assertEqual(custom_pgsql.port, '6432')
|
180
|
+
self.assertEqual(custom_pgsql.database, 'custom_db')
|
181
|
+
self.assertEqual(custom_pgsql.username, 'admin')
|
182
|
+
self.assertEqual(custom_pgsql.password, 'secure123')
|
183
|
+
self.assertEqual(custom_pgsql.charset, PGSQLCharset.LATIN1.value)
|
184
|
+
self.assertEqual(custom_pgsql.prefix, 'app_')
|
185
|
+
self.assertFalse(custom_pgsql.prefix_indexes)
|
186
|
+
self.assertEqual(custom_pgsql.search_path, 'app_schema')
|
187
|
+
self.assertEqual(custom_pgsql.sslmode, PGSQLSSLMode.VERIFY_FULL.value)
|
@@ -0,0 +1,153 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.sqlite import SQLite
|
2
|
+
from orionis.luminate.foundation.config.database.enums.sqlite_foreign_key import SQLiteForeignKey
|
3
|
+
from orionis.luminate.foundation.config.database.enums.sqlite_journal import SQLiteJournalMode
|
4
|
+
from orionis.luminate.foundation.config.database.enums.sqlite_synchronous import SQLiteSynchronous
|
5
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
6
|
+
from orionis.unittesting import TestCase
|
7
|
+
|
8
|
+
class TestConfigSQLite(TestCase):
|
9
|
+
"""
|
10
|
+
Test cases for the SQLite database configuration class.
|
11
|
+
"""
|
12
|
+
|
13
|
+
async def testDefaultValues(self):
|
14
|
+
"""
|
15
|
+
Test that SQLite instance is created with correct default values.
|
16
|
+
Verifies all default values match expected defaults from class definition.
|
17
|
+
"""
|
18
|
+
sqlite = SQLite()
|
19
|
+
self.assertEqual(sqlite.driver, 'sqlite')
|
20
|
+
self.assertTrue(sqlite.url.startswith('sqlite:///'))
|
21
|
+
self.assertEqual(sqlite.database, 'database.sqlite')
|
22
|
+
self.assertEqual(sqlite.prefix, '')
|
23
|
+
self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.OFF.value)
|
24
|
+
self.assertEqual(sqlite.busy_timeout, 5000)
|
25
|
+
self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.DELETE.value)
|
26
|
+
self.assertEqual(sqlite.synchronous, SQLiteSynchronous.NORMAL.value)
|
27
|
+
|
28
|
+
async def testDriverValidation(self):
|
29
|
+
"""
|
30
|
+
Test driver attribute validation.
|
31
|
+
Verifies that empty or non-string drivers raise exceptions.
|
32
|
+
"""
|
33
|
+
with self.assertRaises(OrionisIntegrityException):
|
34
|
+
SQLite(driver='')
|
35
|
+
with self.assertRaises(OrionisIntegrityException):
|
36
|
+
SQLite(driver=123)
|
37
|
+
|
38
|
+
async def testUrlValidation(self):
|
39
|
+
"""
|
40
|
+
Test URL attribute validation.
|
41
|
+
Verifies that empty or non-string URLs raise exceptions.
|
42
|
+
"""
|
43
|
+
with self.assertRaises(OrionisIntegrityException):
|
44
|
+
SQLite(url='')
|
45
|
+
with self.assertRaises(OrionisIntegrityException):
|
46
|
+
SQLite(url=123)
|
47
|
+
|
48
|
+
async def testDatabaseValidation(self):
|
49
|
+
"""
|
50
|
+
Test database attribute validation.
|
51
|
+
Verifies that empty or non-string database paths raise exceptions.
|
52
|
+
"""
|
53
|
+
with self.assertRaises(OrionisIntegrityException):
|
54
|
+
SQLite(database='')
|
55
|
+
with self.assertRaises(OrionisIntegrityException):
|
56
|
+
SQLite(database=123)
|
57
|
+
|
58
|
+
async def testForeignKeyConstraintsValidation(self):
|
59
|
+
"""
|
60
|
+
Test foreign_key_constraints attribute validation.
|
61
|
+
Verifies enum conversion and invalid value handling.
|
62
|
+
"""
|
63
|
+
# Test string conversion
|
64
|
+
sqlite = SQLite(foreign_key_constraints='ON')
|
65
|
+
self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.ON.value)
|
66
|
+
|
67
|
+
# Test enum assignment
|
68
|
+
sqlite = SQLite(foreign_key_constraints=SQLiteForeignKey.OFF)
|
69
|
+
self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.OFF.value)
|
70
|
+
|
71
|
+
# Test invalid value
|
72
|
+
with self.assertRaises(OrionisIntegrityException):
|
73
|
+
SQLite(foreign_key_constraints='INVALID')
|
74
|
+
|
75
|
+
async def testBusyTimeoutValidation(self):
|
76
|
+
"""
|
77
|
+
Test busy_timeout attribute validation.
|
78
|
+
Verifies non-negative integer requirement.
|
79
|
+
"""
|
80
|
+
with self.assertRaises(OrionisIntegrityException):
|
81
|
+
SQLite(busy_timeout=-1)
|
82
|
+
with self.assertRaises(OrionisIntegrityException):
|
83
|
+
SQLite(busy_timeout='invalid')
|
84
|
+
|
85
|
+
async def testJournalModeValidation(self):
|
86
|
+
"""
|
87
|
+
Test journal_mode attribute validation.
|
88
|
+
Verifies enum conversion and invalid value handling.
|
89
|
+
"""
|
90
|
+
# Test string conversion
|
91
|
+
sqlite = SQLite(journal_mode='WAL')
|
92
|
+
self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.WAL.value)
|
93
|
+
|
94
|
+
# Test enum assignment
|
95
|
+
sqlite = SQLite(journal_mode=SQLiteJournalMode.TRUNCATE)
|
96
|
+
self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.TRUNCATE.value)
|
97
|
+
|
98
|
+
# Test invalid value
|
99
|
+
with self.assertRaises(OrionisIntegrityException):
|
100
|
+
SQLite(journal_mode='INVALID')
|
101
|
+
|
102
|
+
async def testSynchronousValidation(self):
|
103
|
+
"""
|
104
|
+
Test synchronous attribute validation.
|
105
|
+
Verifies enum conversion and invalid value handling.
|
106
|
+
"""
|
107
|
+
# Test string conversion
|
108
|
+
sqlite = SQLite(synchronous='FULL')
|
109
|
+
self.assertEqual(sqlite.synchronous, SQLiteSynchronous.FULL.value)
|
110
|
+
|
111
|
+
# Test enum assignment
|
112
|
+
sqlite = SQLite(synchronous=SQLiteSynchronous.OFF)
|
113
|
+
self.assertEqual(sqlite.synchronous, SQLiteSynchronous.OFF.value)
|
114
|
+
|
115
|
+
# Test invalid value
|
116
|
+
with self.assertRaises(OrionisIntegrityException):
|
117
|
+
SQLite(synchronous='INVALID')
|
118
|
+
|
119
|
+
async def testToDictMethod(self):
|
120
|
+
"""
|
121
|
+
Test that toDict returns proper dictionary representation.
|
122
|
+
Verifies all attributes are correctly included in dictionary.
|
123
|
+
"""
|
124
|
+
sqlite = SQLite()
|
125
|
+
sqlite_dict = sqlite.toDict()
|
126
|
+
self.assertEqual(sqlite_dict['driver'], 'sqlite')
|
127
|
+
self.assertTrue(sqlite_dict['url'].startswith('sqlite:///'))
|
128
|
+
self.assertEqual(sqlite_dict['database'], 'database.sqlite')
|
129
|
+
self.assertEqual(sqlite_dict['prefix'], '')
|
130
|
+
self.assertEqual(sqlite_dict['foreign_key_constraints'], SQLiteForeignKey.OFF.value)
|
131
|
+
self.assertEqual(sqlite_dict['busy_timeout'], 5000)
|
132
|
+
self.assertEqual(sqlite_dict['journal_mode'], SQLiteJournalMode.DELETE.value)
|
133
|
+
self.assertEqual(sqlite_dict['synchronous'], SQLiteSynchronous.NORMAL.value)
|
134
|
+
|
135
|
+
async def testCustomValues(self):
|
136
|
+
"""
|
137
|
+
Test that custom values are properly stored and validated.
|
138
|
+
Verifies custom configuration values are correctly handled.
|
139
|
+
"""
|
140
|
+
custom_sqlite = SQLite(
|
141
|
+
database='custom.db',
|
142
|
+
prefix='app_',
|
143
|
+
foreign_key_constraints='ON',
|
144
|
+
busy_timeout=10000,
|
145
|
+
journal_mode='MEMORY',
|
146
|
+
synchronous='OFF'
|
147
|
+
)
|
148
|
+
self.assertEqual(custom_sqlite.database, 'custom.db')
|
149
|
+
self.assertEqual(custom_sqlite.prefix, 'app_')
|
150
|
+
self.assertEqual(custom_sqlite.foreign_key_constraints, SQLiteForeignKey.ON.value)
|
151
|
+
self.assertEqual(custom_sqlite.busy_timeout, 10000)
|
152
|
+
self.assertEqual(custom_sqlite.journal_mode, SQLiteJournalMode.MEMORY.value)
|
153
|
+
self.assertEqual(custom_sqlite.synchronous, SQLiteSynchronous.OFF.value)
|
File without changes
|
@@ -0,0 +1,83 @@
|
|
1
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
2
|
+
from orionis.unittesting import TestCase
|
3
|
+
|
4
|
+
class TestOrionisIntegrityException(TestCase):
|
5
|
+
"""
|
6
|
+
Test cases for the OrionisIntegrityException class.
|
7
|
+
"""
|
8
|
+
|
9
|
+
async def testExceptionInitialization(self):
|
10
|
+
"""
|
11
|
+
Test that OrionisIntegrityException is properly initialized with a message.
|
12
|
+
Verifies that the exception stores and returns the provided message correctly.
|
13
|
+
"""
|
14
|
+
test_msg = "Test integrity violation message"
|
15
|
+
exception = OrionisIntegrityException(test_msg)
|
16
|
+
self.assertEqual(str(exception), f"OrionisIntegrityException: {test_msg}")
|
17
|
+
self.assertEqual(exception.args[0], test_msg)
|
18
|
+
|
19
|
+
async def testExceptionInheritance(self):
|
20
|
+
"""
|
21
|
+
Test that OrionisIntegrityException properly inherits from Exception.
|
22
|
+
Verifies the exception hierarchy is correctly implemented.
|
23
|
+
"""
|
24
|
+
exception = OrionisIntegrityException("Test")
|
25
|
+
self.assertIsInstance(exception, Exception)
|
26
|
+
self.assertTrue(issubclass(OrionisIntegrityException, Exception))
|
27
|
+
|
28
|
+
async def testExceptionStringRepresentation(self):
|
29
|
+
"""
|
30
|
+
Test the string representation of OrionisIntegrityException.
|
31
|
+
Verifies the __str__ method returns the expected format.
|
32
|
+
"""
|
33
|
+
test_msg = "Configuration validation failed"
|
34
|
+
exception = OrionisIntegrityException(test_msg)
|
35
|
+
self.assertEqual(str(exception), f"OrionisIntegrityException: {test_msg}")
|
36
|
+
|
37
|
+
async def testExceptionWithEmptyMessage(self):
|
38
|
+
"""
|
39
|
+
Test OrionisIntegrityException with an empty message.
|
40
|
+
Verifies the exception handles empty messages correctly.
|
41
|
+
"""
|
42
|
+
exception = OrionisIntegrityException("")
|
43
|
+
self.assertEqual(str(exception), "OrionisIntegrityException: ")
|
44
|
+
|
45
|
+
async def testExceptionWithNonStringMessage(self):
|
46
|
+
"""
|
47
|
+
Test OrionisIntegrityException with non-string message types.
|
48
|
+
Verifies the exception converts non-string messages to strings.
|
49
|
+
"""
|
50
|
+
# Test with integer
|
51
|
+
exception = OrionisIntegrityException(123)
|
52
|
+
self.assertEqual(str(exception), "OrionisIntegrityException: 123")
|
53
|
+
|
54
|
+
# Test with list
|
55
|
+
exception = OrionisIntegrityException(["error1", "error2"])
|
56
|
+
self.assertEqual(str(exception), "OrionisIntegrityException: ['error1', 'error2']")
|
57
|
+
|
58
|
+
async def testExceptionRaiseAndCatch(self):
|
59
|
+
"""
|
60
|
+
Test raising and catching OrionisIntegrityException.
|
61
|
+
Verifies the exception can be properly raised and caught.
|
62
|
+
"""
|
63
|
+
test_msg = "Test exception handling"
|
64
|
+
try:
|
65
|
+
raise OrionisIntegrityException(test_msg)
|
66
|
+
except OrionisIntegrityException as e:
|
67
|
+
self.assertEqual(str(e), f"OrionisIntegrityException: {test_msg}")
|
68
|
+
except Exception:
|
69
|
+
self.fail("OrionisIntegrityException should be caught by its specific handler")
|
70
|
+
|
71
|
+
async def testExceptionChaining(self):
|
72
|
+
"""
|
73
|
+
Test exception chaining with OrionisIntegrityException.
|
74
|
+
Verifies the exception works correctly in chained exception scenarios.
|
75
|
+
"""
|
76
|
+
try:
|
77
|
+
try:
|
78
|
+
raise ValueError("Original error")
|
79
|
+
except ValueError as ve:
|
80
|
+
raise OrionisIntegrityException("Wrapper error") from ve
|
81
|
+
except OrionisIntegrityException as oe:
|
82
|
+
self.assertIsInstance(oe.__cause__, ValueError)
|
83
|
+
self.assertEqual(str(oe.__cause__), "Original error")
|
File without changes
|
@@ -0,0 +1,110 @@
|
|
1
|
+
from orionis.luminate.foundation.config.filesystems.entitites.disks import Disks
|
2
|
+
from orionis.luminate.foundation.config.filesystems.entitites.filesystems import Filesystems
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.unittesting import TestCase
|
5
|
+
|
6
|
+
class TestConfigFilesystems(TestCase):
|
7
|
+
"""
|
8
|
+
Test cases for the Filesystems configuration class.
|
9
|
+
"""
|
10
|
+
|
11
|
+
async def testDefaultValues(self):
|
12
|
+
"""
|
13
|
+
Test that Filesystems instance is created with correct default values.
|
14
|
+
Verifies default disk is 'local' and disks object is properly initialized.
|
15
|
+
"""
|
16
|
+
fs = Filesystems()
|
17
|
+
self.assertEqual(fs.default, "local")
|
18
|
+
self.assertIsInstance(fs.disks, Disks)
|
19
|
+
|
20
|
+
async def testDefaultDiskValidation(self):
|
21
|
+
"""
|
22
|
+
Test default disk attribute validation.
|
23
|
+
Verifies that only valid disk types are accepted as default.
|
24
|
+
"""
|
25
|
+
# Test valid disk types
|
26
|
+
valid_disks = ["local", "public", "aws"]
|
27
|
+
for disk in valid_disks:
|
28
|
+
try:
|
29
|
+
Filesystems(default=disk)
|
30
|
+
except OrionisIntegrityException:
|
31
|
+
self.fail(f"Valid disk type '{disk}' should not raise exception")
|
32
|
+
|
33
|
+
# Test invalid disk type
|
34
|
+
with self.assertRaises(OrionisIntegrityException):
|
35
|
+
Filesystems(default="invalid_disk")
|
36
|
+
|
37
|
+
# Test empty default
|
38
|
+
with self.assertRaises(OrionisIntegrityException):
|
39
|
+
Filesystems(default="")
|
40
|
+
|
41
|
+
# Test non-string default
|
42
|
+
with self.assertRaises(OrionisIntegrityException):
|
43
|
+
Filesystems(default=123)
|
44
|
+
|
45
|
+
async def testDisksValidation(self):
|
46
|
+
"""
|
47
|
+
Test disks attribute validation.
|
48
|
+
Verifies that only Disks instances are accepted.
|
49
|
+
"""
|
50
|
+
# Test invalid disks type
|
51
|
+
with self.assertRaises(OrionisIntegrityException):
|
52
|
+
Filesystems(disks="not_a_disks_instance")
|
53
|
+
|
54
|
+
# Test None disks
|
55
|
+
with self.assertRaises(OrionisIntegrityException):
|
56
|
+
Filesystems(disks=None)
|
57
|
+
|
58
|
+
# Test valid disks
|
59
|
+
try:
|
60
|
+
Filesystems(disks=Disks())
|
61
|
+
except OrionisIntegrityException:
|
62
|
+
self.fail("Valid Disks instance should not raise exception")
|
63
|
+
|
64
|
+
async def testToDictMethod(self):
|
65
|
+
"""
|
66
|
+
Test that toDict returns proper dictionary representation.
|
67
|
+
Verifies all attributes are correctly included in dictionary.
|
68
|
+
"""
|
69
|
+
fs = Filesystems()
|
70
|
+
fs_dict = fs.toDict()
|
71
|
+
|
72
|
+
self.assertIsInstance(fs_dict, dict)
|
73
|
+
self.assertEqual(fs_dict['default'], "local")
|
74
|
+
self.assertIsInstance(fs_dict['disks'], dict)
|
75
|
+
|
76
|
+
async def testCustomValues(self):
|
77
|
+
"""
|
78
|
+
Test that custom values are properly stored and validated.
|
79
|
+
Verifies custom configurations are correctly handled.
|
80
|
+
"""
|
81
|
+
custom_disks = Disks()
|
82
|
+
custom_fs = Filesystems(
|
83
|
+
default="aws",
|
84
|
+
disks=custom_disks
|
85
|
+
)
|
86
|
+
self.assertEqual(custom_fs.default, "aws")
|
87
|
+
self.assertIs(custom_fs.disks, custom_disks)
|
88
|
+
|
89
|
+
async def testHashability(self):
|
90
|
+
"""
|
91
|
+
Test that Filesystems maintains hashability due to unsafe_hash=True.
|
92
|
+
Verifies that Filesystems instances can be used in sets and as dictionary keys.
|
93
|
+
"""
|
94
|
+
fs1 = Filesystems()
|
95
|
+
fs2 = Filesystems()
|
96
|
+
fs_set = {fs1, fs2}
|
97
|
+
|
98
|
+
self.assertEqual(len(fs_set), 1)
|
99
|
+
|
100
|
+
custom_fs = Filesystems(default="public")
|
101
|
+
fs_set.add(custom_fs)
|
102
|
+
self.assertEqual(len(fs_set), 2)
|
103
|
+
|
104
|
+
async def testKwOnlyInitialization(self):
|
105
|
+
"""
|
106
|
+
Test that Filesystems enforces keyword-only initialization.
|
107
|
+
Verifies that positional arguments are not allowed for initialization.
|
108
|
+
"""
|
109
|
+
with self.assertRaises(TypeError):
|
110
|
+
Filesystems("local", Disks())
|
@@ -0,0 +1,133 @@
|
|
1
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
2
|
+
from orionis.luminate.foundation.config.filesystems.entitites.aws import S3
|
3
|
+
from orionis.unittesting import TestCase
|
4
|
+
|
5
|
+
class TestConfigS3(TestCase):
|
6
|
+
"""
|
7
|
+
Test cases for the S3 storage configuration class.
|
8
|
+
"""
|
9
|
+
|
10
|
+
async def testDefaultValues(self):
|
11
|
+
"""
|
12
|
+
Test that S3 instance is created with correct default values.
|
13
|
+
Verifies all default values match expected defaults from class definition.
|
14
|
+
"""
|
15
|
+
s3 = S3()
|
16
|
+
self.assertEqual(s3.key, "")
|
17
|
+
self.assertEqual(s3.secret, "")
|
18
|
+
self.assertEqual(s3.region, "us-east-1")
|
19
|
+
self.assertEqual(s3.bucket, "")
|
20
|
+
self.assertIsNone(s3.url)
|
21
|
+
self.assertIsNone(s3.endpoint)
|
22
|
+
self.assertFalse(s3.use_path_style_endpoint)
|
23
|
+
self.assertFalse(s3.throw)
|
24
|
+
|
25
|
+
async def testRequiredFieldValidation(self):
|
26
|
+
"""
|
27
|
+
Test validation of required fields.
|
28
|
+
Verifies that region must be a non-empty string.
|
29
|
+
"""
|
30
|
+
# Test empty region
|
31
|
+
with self.assertRaises(OrionisIntegrityException):
|
32
|
+
S3(region="")
|
33
|
+
|
34
|
+
# Test non-string region
|
35
|
+
with self.assertRaises(OrionisIntegrityException):
|
36
|
+
S3(region=123)
|
37
|
+
|
38
|
+
async def testOptionalFieldValidation(self):
|
39
|
+
"""
|
40
|
+
Test validation of optional fields.
|
41
|
+
Verifies that optional fields accept None or proper types.
|
42
|
+
"""
|
43
|
+
# Valid optional configurations
|
44
|
+
try:
|
45
|
+
S3(url=None, endpoint=None)
|
46
|
+
S3(url="https://example.com", endpoint="https://s3.example.com")
|
47
|
+
except OrionisIntegrityException:
|
48
|
+
self.fail("Valid optional configurations should not raise exceptions")
|
49
|
+
|
50
|
+
# Invalid optional configurations
|
51
|
+
with self.assertRaises(OrionisIntegrityException):
|
52
|
+
S3(url=123)
|
53
|
+
with self.assertRaises(OrionisIntegrityException):
|
54
|
+
S3(endpoint=[])
|
55
|
+
|
56
|
+
async def testBooleanFieldValidation(self):
|
57
|
+
"""
|
58
|
+
Test validation of boolean fields.
|
59
|
+
Verifies that boolean fields only accept boolean values.
|
60
|
+
"""
|
61
|
+
# Test use_path_style_endpoint
|
62
|
+
with self.assertRaises(OrionisIntegrityException):
|
63
|
+
S3(use_path_style_endpoint="true")
|
64
|
+
|
65
|
+
# Test throw
|
66
|
+
with self.assertRaises(OrionisIntegrityException):
|
67
|
+
S3(throw=1)
|
68
|
+
|
69
|
+
async def testCustomValues(self):
|
70
|
+
"""
|
71
|
+
Test that custom values are properly stored and validated.
|
72
|
+
Verifies custom configuration values are correctly handled.
|
73
|
+
"""
|
74
|
+
custom_s3 = S3(
|
75
|
+
key="AKIAEXAMPLE",
|
76
|
+
secret="secret123",
|
77
|
+
region="eu-west-1",
|
78
|
+
bucket="my-bucket",
|
79
|
+
url="https://my-bucket.s3.amazonaws.com",
|
80
|
+
endpoint="https://s3.eu-west-1.amazonaws.com",
|
81
|
+
use_path_style_endpoint=True,
|
82
|
+
throw=True
|
83
|
+
)
|
84
|
+
|
85
|
+
self.assertEqual(custom_s3.key, "AKIAEXAMPLE")
|
86
|
+
self.assertEqual(custom_s3.secret, "secret123")
|
87
|
+
self.assertEqual(custom_s3.region, "eu-west-1")
|
88
|
+
self.assertEqual(custom_s3.bucket, "my-bucket")
|
89
|
+
self.assertEqual(custom_s3.url, "https://my-bucket.s3.amazonaws.com")
|
90
|
+
self.assertEqual(custom_s3.endpoint, "https://s3.eu-west-1.amazonaws.com")
|
91
|
+
self.assertTrue(custom_s3.use_path_style_endpoint)
|
92
|
+
self.assertTrue(custom_s3.throw)
|
93
|
+
|
94
|
+
async def testToDictMethod(self):
|
95
|
+
"""
|
96
|
+
Test that toDict returns proper dictionary representation.
|
97
|
+
Verifies all attributes are correctly included in dictionary.
|
98
|
+
"""
|
99
|
+
s3 = S3()
|
100
|
+
s3_dict = s3.toDict()
|
101
|
+
|
102
|
+
self.assertIsInstance(s3_dict, dict)
|
103
|
+
self.assertEqual(s3_dict['key'], "")
|
104
|
+
self.assertEqual(s3_dict['secret'], "")
|
105
|
+
self.assertEqual(s3_dict['region'], "us-east-1")
|
106
|
+
self.assertEqual(s3_dict['bucket'], "")
|
107
|
+
self.assertIsNone(s3_dict['url'])
|
108
|
+
self.assertIsNone(s3_dict['endpoint'])
|
109
|
+
self.assertFalse(s3_dict['use_path_style_endpoint'])
|
110
|
+
self.assertFalse(s3_dict['throw'])
|
111
|
+
|
112
|
+
async def testHashability(self):
|
113
|
+
"""
|
114
|
+
Test that S3 maintains hashability due to unsafe_hash=True.
|
115
|
+
Verifies that S3 instances can be used in sets and as dictionary keys.
|
116
|
+
"""
|
117
|
+
s3_1 = S3()
|
118
|
+
s3_2 = S3()
|
119
|
+
s3_set = {s3_1, s3_2}
|
120
|
+
|
121
|
+
self.assertEqual(len(s3_set), 1)
|
122
|
+
|
123
|
+
custom_s3 = S3(bucket="custom-bucket")
|
124
|
+
s3_set.add(custom_s3)
|
125
|
+
self.assertEqual(len(s3_set), 2)
|
126
|
+
|
127
|
+
async def testKwOnlyInitialization(self):
|
128
|
+
"""
|
129
|
+
Test that S3 enforces keyword-only initialization.
|
130
|
+
Verifies that positional arguments are not allowed for initialization.
|
131
|
+
"""
|
132
|
+
with self.assertRaises(TypeError):
|
133
|
+
S3("key", "secret", "region") # Should fail as it requires keyword arguments
|