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,140 @@
|
|
1
|
+
from orionis.luminate.foundation.config.app.entities.app import App
|
2
|
+
from orionis.luminate.foundation.config.app.enums.ciphers import Cipher
|
3
|
+
from orionis.luminate.foundation.config.app.enums.environments import Environments
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
|
+
from orionis.unittesting import TestCase
|
6
|
+
|
7
|
+
class TestConfigApp(TestCase):
|
8
|
+
"""
|
9
|
+
Test cases for the App configuration class.
|
10
|
+
"""
|
11
|
+
|
12
|
+
async def testDefaultValues(self):
|
13
|
+
"""
|
14
|
+
Test that the App instance is created with the correct default values.
|
15
|
+
|
16
|
+
Verifies that all default values match the expected defaults from the class definition.
|
17
|
+
"""
|
18
|
+
app = App()
|
19
|
+
self.assertEqual(app.name, 'Orionis Application')
|
20
|
+
self.assertEqual(app.env, Environments.DEVELOPMENT.value)
|
21
|
+
self.assertTrue(app.debug)
|
22
|
+
self.assertEqual(app.url, 'http://127.0.0.1')
|
23
|
+
self.assertEqual(app.port, 8000)
|
24
|
+
self.assertEqual(app.timezone, 'UTC')
|
25
|
+
self.assertEqual(app.locale, 'en')
|
26
|
+
self.assertEqual(app.fallback_locale, 'en')
|
27
|
+
self.assertEqual(app.cipher, Cipher.AES_256_CBC.value)
|
28
|
+
self.assertIsNone(app.key)
|
29
|
+
self.assertEqual(app.maintenance, '/maintenance')
|
30
|
+
|
31
|
+
async def testEnvironmentValidation(self):
|
32
|
+
"""
|
33
|
+
Test that the environment attribute is properly validated and converted.
|
34
|
+
|
35
|
+
Verifies that string environments are converted to enum values and invalid environments raise exceptions.
|
36
|
+
"""
|
37
|
+
# Test valid string environment
|
38
|
+
app = App(env="PRODUCTION")
|
39
|
+
self.assertEqual(app.env, Environments.PRODUCTION.value)
|
40
|
+
|
41
|
+
# Test valid enum environment
|
42
|
+
app = App(env=Environments.TESTING)
|
43
|
+
self.assertEqual(app.env, Environments.TESTING.value)
|
44
|
+
|
45
|
+
# Test invalid environment
|
46
|
+
with self.assertRaises(OrionisIntegrityException):
|
47
|
+
App(env="INVALID_ENV")
|
48
|
+
|
49
|
+
async def testCipherValidation(self):
|
50
|
+
"""
|
51
|
+
Test that the cipher attribute is properly validated and converted.
|
52
|
+
|
53
|
+
Verifies that string ciphers are converted to enum values and invalid ciphers raise exceptions.
|
54
|
+
"""
|
55
|
+
# Test valid string cipher
|
56
|
+
app = App(cipher="AES_128_CBC")
|
57
|
+
self.assertEqual(app.cipher, Cipher.AES_128_CBC.value)
|
58
|
+
|
59
|
+
# Test valid enum cipher
|
60
|
+
app = App(cipher=Cipher.AES_192_CBC)
|
61
|
+
self.assertEqual(app.cipher, Cipher.AES_192_CBC.value)
|
62
|
+
|
63
|
+
# Test invalid cipher
|
64
|
+
with self.assertRaises(OrionisIntegrityException):
|
65
|
+
App(cipher="INVALID_CIPHER")
|
66
|
+
|
67
|
+
async def testTypeValidation(self):
|
68
|
+
"""
|
69
|
+
Test that type validation works correctly for all attributes.
|
70
|
+
|
71
|
+
Verifies that invalid types for each attribute raise OrionisIntegrityException.
|
72
|
+
"""
|
73
|
+
# Test invalid name type
|
74
|
+
with self.assertRaises(OrionisIntegrityException):
|
75
|
+
App(name=123)
|
76
|
+
|
77
|
+
# Test invalid debug type
|
78
|
+
with self.assertRaises(OrionisIntegrityException):
|
79
|
+
App(debug="true")
|
80
|
+
|
81
|
+
# Test invalid url type
|
82
|
+
with self.assertRaises(OrionisIntegrityException):
|
83
|
+
App(url=123)
|
84
|
+
|
85
|
+
# Test invalid port type
|
86
|
+
with self.assertRaises(OrionisIntegrityException):
|
87
|
+
App(port="8000")
|
88
|
+
|
89
|
+
# Test invalid workers type
|
90
|
+
with self.assertRaises(OrionisIntegrityException):
|
91
|
+
App(workers="4")
|
92
|
+
|
93
|
+
# Test invalid reload type
|
94
|
+
with self.assertRaises(OrionisIntegrityException):
|
95
|
+
App(reload="true")
|
96
|
+
|
97
|
+
async def testToDictMethod(self):
|
98
|
+
"""
|
99
|
+
Test that the toDict method returns a proper dictionary representation.
|
100
|
+
|
101
|
+
Verifies that the returned dictionary contains all expected keys and values.
|
102
|
+
"""
|
103
|
+
app = App()
|
104
|
+
app_dict = app.toDict()
|
105
|
+
|
106
|
+
self.assertIsInstance(app_dict, dict)
|
107
|
+
self.assertEqual(app_dict['name'], 'Orionis Application')
|
108
|
+
self.assertEqual(app_dict['env'], Environments.DEVELOPMENT.value)
|
109
|
+
self.assertTrue(app_dict['debug'])
|
110
|
+
self.assertEqual(app_dict['url'], 'http://127.0.0.1')
|
111
|
+
self.assertEqual(app_dict['port'], 8000)
|
112
|
+
self.assertEqual(app_dict['timezone'], 'UTC')
|
113
|
+
self.assertEqual(app_dict['locale'], 'en')
|
114
|
+
self.assertEqual(app_dict['fallback_locale'], 'en')
|
115
|
+
self.assertEqual(app_dict['cipher'], Cipher.AES_256_CBC.value)
|
116
|
+
self.assertIsNone(app_dict['key'])
|
117
|
+
self.assertEqual(app_dict['maintenance'], '/maintenance')
|
118
|
+
|
119
|
+
async def testNonEmptyStringValidation(self):
|
120
|
+
"""
|
121
|
+
Test that empty strings are rejected for attributes requiring non-empty strings.
|
122
|
+
Verifies that attributes requiring non-empty strings raise exceptions when empty strings are provided.
|
123
|
+
"""
|
124
|
+
with self.assertRaises(OrionisIntegrityException):
|
125
|
+
App(name="")
|
126
|
+
|
127
|
+
with self.assertRaises(OrionisIntegrityException):
|
128
|
+
App(url="")
|
129
|
+
|
130
|
+
with self.assertRaises(OrionisIntegrityException):
|
131
|
+
App(timezone="")
|
132
|
+
|
133
|
+
with self.assertRaises(OrionisIntegrityException):
|
134
|
+
App(locale="")
|
135
|
+
|
136
|
+
with self.assertRaises(OrionisIntegrityException):
|
137
|
+
App(fallback_locale="")
|
138
|
+
|
139
|
+
with self.assertRaises(OrionisIntegrityException):
|
140
|
+
App(maintenance="")
|
File without changes
|
@@ -1,9 +1,12 @@
|
|
1
|
-
|
2
|
-
from orionis.luminate.config.auth import Auth
|
1
|
+
|
2
|
+
from orionis.luminate.foundation.config.auth.entities.auth import Auth
|
3
|
+
from orionis.unittesting import TestCase
|
3
4
|
|
4
5
|
class TestConfigApp(TestCase):
|
5
6
|
"""
|
6
|
-
|
7
|
+
Test suite for verifying the behavior of the Auth configuration within the application.
|
8
|
+
This class contains asynchronous test cases to ensure that the Auth object
|
9
|
+
correctly handles the assignment and retrieval of new attribute values.
|
7
10
|
"""
|
8
11
|
|
9
12
|
async def testNewValue(self):
|
File without changes
|
@@ -0,0 +1,98 @@
|
|
1
|
+
from orionis.unittesting import TestCase
|
2
|
+
from orionis.luminate.foundation.config.cache.entities.cache import Cache
|
3
|
+
from orionis.luminate.foundation.config.cache.enums.drivers import Drivers
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
|
+
from orionis.luminate.foundation.config.cache.entities.stores import Stores
|
6
|
+
|
7
|
+
class TestConfigCache(TestCase):
|
8
|
+
"""
|
9
|
+
Test cases for the Cache configuration class.
|
10
|
+
"""
|
11
|
+
|
12
|
+
async def testDefaultValues(self):
|
13
|
+
"""
|
14
|
+
Test that the Cache instance is created with the correct default values.
|
15
|
+
Verifies that default values match the expected defaults from the class definition.
|
16
|
+
"""
|
17
|
+
cache = Cache()
|
18
|
+
self.assertEqual(cache.default, Drivers.MEMORY.value)
|
19
|
+
self.assertIsInstance(cache.stores, Stores)
|
20
|
+
|
21
|
+
async def testDriverValidation(self):
|
22
|
+
"""
|
23
|
+
Test that the default driver attribute is properly validated and converted.
|
24
|
+
Verifies that string drivers are converted to enum values and invalid drivers raise exceptions.
|
25
|
+
"""
|
26
|
+
# Test valid string driver
|
27
|
+
cache = Cache(default="FILE")
|
28
|
+
self.assertEqual(cache.default, Drivers.FILE.value)
|
29
|
+
|
30
|
+
|
31
|
+
# Test invalid driver
|
32
|
+
with self.assertRaises(OrionisIntegrityException):
|
33
|
+
Cache(default="INVALID_DRIVER")
|
34
|
+
|
35
|
+
async def testDriverCaseInsensitivity(self):
|
36
|
+
"""
|
37
|
+
Test that driver names are case-insensitive when provided as strings.
|
38
|
+
Verifies that different case variations of driver names are properly normalized.
|
39
|
+
"""
|
40
|
+
# Test lowercase
|
41
|
+
cache = Cache(default="file")
|
42
|
+
self.assertEqual(cache.default, Drivers.FILE.value)
|
43
|
+
|
44
|
+
# Test mixed case
|
45
|
+
cache = Cache(default="FiLe")
|
46
|
+
self.assertEqual(cache.default, Drivers.FILE.value)
|
47
|
+
|
48
|
+
# Test uppercase
|
49
|
+
cache = Cache(default="FILE")
|
50
|
+
self.assertEqual(cache.default, Drivers.FILE.value)
|
51
|
+
|
52
|
+
async def testTypeValidation(self):
|
53
|
+
"""
|
54
|
+
Test that type validation works correctly for all attributes.
|
55
|
+
Verifies that invalid types for each attribute raise OrionisIntegrityException.
|
56
|
+
"""
|
57
|
+
# Test invalid default type
|
58
|
+
with self.assertRaises(OrionisIntegrityException):
|
59
|
+
Cache(default=123)
|
60
|
+
|
61
|
+
# Test invalid stores type
|
62
|
+
with self.assertRaises(OrionisIntegrityException):
|
63
|
+
Cache(stores="invalid_stores")
|
64
|
+
|
65
|
+
async def testToDictMethod(self):
|
66
|
+
"""
|
67
|
+
Test that the toDict method returns a proper dictionary representation.
|
68
|
+
Verifies that the returned dictionary contains all expected keys and values.
|
69
|
+
"""
|
70
|
+
cache = Cache()
|
71
|
+
cache_dict = cache.toDict()
|
72
|
+
|
73
|
+
self.assertIsInstance(cache_dict, dict)
|
74
|
+
self.assertEqual(cache_dict['default'], Drivers.MEMORY.value)
|
75
|
+
self.assertIsInstance(cache_dict['stores'], dict)
|
76
|
+
|
77
|
+
async def testStoresInstanceValidation(self):
|
78
|
+
"""
|
79
|
+
Test that stores attribute must be an instance of Stores class.
|
80
|
+
Verifies that only Stores instances are accepted for the stores attribute.
|
81
|
+
"""
|
82
|
+
# Test with proper Stores instance
|
83
|
+
stores = Stores() # Assuming Stores has a default constructor
|
84
|
+
cache = Cache(stores=stores)
|
85
|
+
self.assertIsInstance(cache.stores, Stores)
|
86
|
+
|
87
|
+
# Test with invalid stores type
|
88
|
+
with self.assertRaises(OrionisIntegrityException):
|
89
|
+
Cache(stores={"file": "some_path"})
|
90
|
+
|
91
|
+
async def testDriverEnumConversion(self):
|
92
|
+
"""
|
93
|
+
Test that Drivers enum values are properly converted to their string representations.
|
94
|
+
Verifies that enum members are converted to their value representations.
|
95
|
+
"""
|
96
|
+
# Test with enum member
|
97
|
+
cache = Cache(default=Drivers.MEMORY)
|
98
|
+
self.assertEqual(cache.default, Drivers.MEMORY.value)
|
@@ -0,0 +1,78 @@
|
|
1
|
+
from orionis.luminate.foundation.config.cache.entities.file import File
|
2
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
3
|
+
from orionis.unittesting import TestCase
|
4
|
+
|
5
|
+
class TestConfigFile(TestCase):
|
6
|
+
"""
|
7
|
+
Test cases for the File cache configuration entity.
|
8
|
+
"""
|
9
|
+
|
10
|
+
async def testDefaultPath(self):
|
11
|
+
"""
|
12
|
+
Test that the File instance is created with the correct default path.
|
13
|
+
Verifies that the default path matches the expected value from the class definition.
|
14
|
+
"""
|
15
|
+
file_config = File()
|
16
|
+
self.assertEqual(file_config.path, 'storage/framework/cache/data')
|
17
|
+
|
18
|
+
async def testCustomPath(self):
|
19
|
+
"""
|
20
|
+
Test that a custom path can be set during initialization.
|
21
|
+
Verifies that the path attribute accepts and stores valid custom paths.
|
22
|
+
"""
|
23
|
+
custom_path = 'custom/cache/path'
|
24
|
+
file_config = File(path=custom_path)
|
25
|
+
self.assertEqual(file_config.path, custom_path)
|
26
|
+
|
27
|
+
async def testEmptyPathValidation(self):
|
28
|
+
"""
|
29
|
+
Test that empty paths are rejected.
|
30
|
+
Verifies that an empty path raises an OrionisIntegrityException.
|
31
|
+
"""
|
32
|
+
with self.assertRaises(OrionisIntegrityException):
|
33
|
+
File(path="")
|
34
|
+
|
35
|
+
async def testPathTypeValidation(self):
|
36
|
+
"""
|
37
|
+
Test that non-string paths are rejected.
|
38
|
+
Verifies that non-string path values raise an OrionisIntegrityException.
|
39
|
+
"""
|
40
|
+
with self.assertRaises(OrionisIntegrityException):
|
41
|
+
File(path=123)
|
42
|
+
|
43
|
+
with self.assertRaises(OrionisIntegrityException):
|
44
|
+
File(path=None)
|
45
|
+
|
46
|
+
with self.assertRaises(OrionisIntegrityException):
|
47
|
+
File(path=[])
|
48
|
+
|
49
|
+
async def testToDictMethod(self):
|
50
|
+
"""
|
51
|
+
Test that the toDict method returns a proper dictionary representation.
|
52
|
+
Verifies that the returned dictionary contains the expected path value.
|
53
|
+
"""
|
54
|
+
file_config = File()
|
55
|
+
config_dict = file_config.toDict()
|
56
|
+
|
57
|
+
self.assertIsInstance(config_dict, dict)
|
58
|
+
self.assertEqual(config_dict['path'], 'storage/framework/cache/data')
|
59
|
+
|
60
|
+
async def testCustomPathToDict(self):
|
61
|
+
"""
|
62
|
+
Test that custom paths are properly included in the dictionary representation.
|
63
|
+
Verifies that toDict() includes custom path values when specified.
|
64
|
+
"""
|
65
|
+
custom_path = 'another/cache/location'
|
66
|
+
file_config = File(path=custom_path)
|
67
|
+
config_dict = file_config.toDict()
|
68
|
+
|
69
|
+
self.assertEqual(config_dict['path'], custom_path)
|
70
|
+
|
71
|
+
async def testWhitespacePathHandling(self):
|
72
|
+
"""
|
73
|
+
Test that paths with whitespace are accepted but not automatically trimmed.
|
74
|
+
Verifies that the validation allows paths containing whitespace characters.
|
75
|
+
"""
|
76
|
+
spaced_path = ' storage/cache/with/space '
|
77
|
+
file_config = File(path=spaced_path)
|
78
|
+
self.assertEqual(file_config.path, spaced_path)
|
@@ -0,0 +1,88 @@
|
|
1
|
+
from orionis.luminate.foundation.config.cache.entities.stores import Stores
|
2
|
+
from orionis.luminate.foundation.config.cache.entities.file import File
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.unittesting import TestCase
|
5
|
+
|
6
|
+
class TestConfigStores(TestCase):
|
7
|
+
"""
|
8
|
+
Test cases for the Stores cache configuration entity.
|
9
|
+
"""
|
10
|
+
|
11
|
+
async def testDefaultFileStore(self):
|
12
|
+
"""
|
13
|
+
Test that Stores initializes with a default File instance.
|
14
|
+
Verifies that the file attribute is properly initialized with default File configuration.
|
15
|
+
"""
|
16
|
+
stores = Stores()
|
17
|
+
self.assertIsInstance(stores.file, File)
|
18
|
+
self.assertEqual(stores.file.path, 'storage/framework/cache/data')
|
19
|
+
|
20
|
+
async def testCustomFileStore(self):
|
21
|
+
"""
|
22
|
+
Test that Stores accepts a custom File configuration.
|
23
|
+
Verifies that a custom File instance can be provided during initialization.
|
24
|
+
"""
|
25
|
+
custom_file = File(path='custom/cache/path')
|
26
|
+
stores = Stores(file=custom_file)
|
27
|
+
self.assertIsInstance(stores.file, File)
|
28
|
+
self.assertEqual(stores.file.path, 'custom/cache/path')
|
29
|
+
|
30
|
+
async def testFileTypeValidation(self):
|
31
|
+
"""
|
32
|
+
Test that Stores validates the file attribute type.
|
33
|
+
Verifies that non-File instances raise OrionisIntegrityException.
|
34
|
+
"""
|
35
|
+
with self.assertRaises(OrionisIntegrityException):
|
36
|
+
Stores(file="not_a_file_instance")
|
37
|
+
|
38
|
+
with self.assertRaises(OrionisIntegrityException):
|
39
|
+
Stores(file=123)
|
40
|
+
|
41
|
+
with self.assertRaises(OrionisIntegrityException):
|
42
|
+
Stores(file=None)
|
43
|
+
|
44
|
+
async def testToDictMethodWithDefaults(self):
|
45
|
+
"""
|
46
|
+
Test that toDict returns proper dictionary with default values.
|
47
|
+
Verifies the dictionary representation contains the correct default file path.
|
48
|
+
"""
|
49
|
+
stores = Stores()
|
50
|
+
stores_dict = stores.toDict()
|
51
|
+
|
52
|
+
self.assertIsInstance(stores_dict, dict)
|
53
|
+
self.assertIsInstance(stores_dict['file'], dict)
|
54
|
+
self.assertEqual(stores_dict['file']['path'], 'storage/framework/cache/data')
|
55
|
+
|
56
|
+
async def testToDictMethodWithCustomFile(self):
|
57
|
+
"""
|
58
|
+
Test that toDict includes custom file configurations.
|
59
|
+
Verifies the dictionary representation reflects custom file paths.
|
60
|
+
"""
|
61
|
+
custom_file = File(path='alternate/cache/location')
|
62
|
+
stores = Stores(file=custom_file)
|
63
|
+
stores_dict = stores.toDict()
|
64
|
+
|
65
|
+
self.assertEqual(stores_dict['file']['path'], 'alternate/cache/location')
|
66
|
+
|
67
|
+
async def testHashability(self):
|
68
|
+
"""
|
69
|
+
Test that Stores maintains hashability due to unsafe_hash=True.
|
70
|
+
Verifies that Stores instances can be used in sets and as dictionary keys.
|
71
|
+
"""
|
72
|
+
store1 = Stores()
|
73
|
+
store2 = Stores()
|
74
|
+
store_set = {store1, store2}
|
75
|
+
|
76
|
+
self.assertEqual(len(store_set), 1)
|
77
|
+
|
78
|
+
custom_store = Stores(file=File(path='custom/path'))
|
79
|
+
store_set.add(custom_store)
|
80
|
+
self.assertEqual(len(store_set), 2)
|
81
|
+
|
82
|
+
async def testKwOnlyInitialization(self):
|
83
|
+
"""
|
84
|
+
Test that Stores enforces keyword-only initialization.
|
85
|
+
Verifies that positional arguments are not allowed for initialization.
|
86
|
+
"""
|
87
|
+
with self.assertRaises(TypeError):
|
88
|
+
Stores(File())
|
File without changes
|
@@ -0,0 +1,121 @@
|
|
1
|
+
|
2
|
+
from orionis.luminate.foundation.config.cors.entities.cors import Cors
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.unittesting import TestCase
|
5
|
+
|
6
|
+
class TestCorsConfig(TestCase):
|
7
|
+
"""
|
8
|
+
Unit tests for Cors configuration defaults and validation.
|
9
|
+
"""
|
10
|
+
|
11
|
+
async def testDefaultValues(self):
|
12
|
+
"""
|
13
|
+
Test the default values of the Cors configuration.
|
14
|
+
|
15
|
+
This test verifies that a newly instantiated Cors object has the following default settings:
|
16
|
+
- allow_origins: ["*"]
|
17
|
+
- allow_origin_regex: None
|
18
|
+
- allow_methods: ["*"]
|
19
|
+
- allow_headers: ["*"]
|
20
|
+
- expose_headers: []
|
21
|
+
- allow_credentials: False
|
22
|
+
- max_age: 600
|
23
|
+
"""
|
24
|
+
cors = Cors()
|
25
|
+
self.assertEqual(cors.allow_origins, ["*"])
|
26
|
+
self.assertIsNone(cors.allow_origin_regex)
|
27
|
+
self.assertEqual(cors.allow_methods, ["*"])
|
28
|
+
self.assertEqual(cors.allow_headers, ["*"])
|
29
|
+
self.assertEqual(cors.expose_headers, [])
|
30
|
+
self.assertFalse(cors.allow_credentials)
|
31
|
+
self.assertEqual(cors.max_age, 600)
|
32
|
+
|
33
|
+
async def testCustomValues(self):
|
34
|
+
"""
|
35
|
+
Test that the Cors configuration correctly sets custom values for all parameters.
|
36
|
+
|
37
|
+
This test verifies that:
|
38
|
+
- `allow_origins` is set to the provided list of origins.
|
39
|
+
- `allow_origin_regex` is set to the provided regex pattern.
|
40
|
+
- `allow_methods` is set to the provided list of HTTP methods.
|
41
|
+
- `allow_headers` is set to the provided list of headers.
|
42
|
+
- `expose_headers` is set to the provided list of exposed headers.
|
43
|
+
- `allow_credentials` is set to True.
|
44
|
+
- `max_age` is set to the provided integer value.
|
45
|
+
|
46
|
+
Ensures that the Cors object accurately reflects the custom configuration values.
|
47
|
+
"""
|
48
|
+
cors = Cors(
|
49
|
+
allow_origins=["https://example.com"],
|
50
|
+
allow_origin_regex="^https://.*\\.example\\.com$",
|
51
|
+
allow_methods=["GET", "POST"],
|
52
|
+
allow_headers=["Authorization", "Content-Type"],
|
53
|
+
expose_headers=["X-Custom-Header"],
|
54
|
+
allow_credentials=True,
|
55
|
+
max_age=3600
|
56
|
+
)
|
57
|
+
self.assertEqual(cors.allow_origins, ["https://example.com"])
|
58
|
+
self.assertEqual(cors.allow_origin_regex, "^https://.*\\.example\\.com$")
|
59
|
+
self.assertEqual(cors.allow_methods, ["GET", "POST"])
|
60
|
+
self.assertEqual(cors.allow_headers, ["Authorization", "Content-Type"])
|
61
|
+
self.assertEqual(cors.expose_headers, ["X-Custom-Header"])
|
62
|
+
self.assertTrue(cors.allow_credentials)
|
63
|
+
self.assertEqual(cors.max_age, 3600)
|
64
|
+
|
65
|
+
async def testInvalidAllowOriginsType(self):
|
66
|
+
"""
|
67
|
+
Test that passing a string instead of a list to the 'allow_origins' parameter of the Cors class
|
68
|
+
raises an OrionisIntegrityException.
|
69
|
+
"""
|
70
|
+
with self.assertRaises(OrionisIntegrityException):
|
71
|
+
Cors(allow_origins="*")
|
72
|
+
|
73
|
+
async def testInvalidAllowOriginRegexType(self):
|
74
|
+
"""
|
75
|
+
Test that passing a non-string, non-None value (specifically an integer) to the
|
76
|
+
`allow_origin_regex` parameter of the `Cors` class raises an OrionisIntegrityException.
|
77
|
+
"""
|
78
|
+
with self.assertRaises(OrionisIntegrityException):
|
79
|
+
Cors(allow_origin_regex=123)
|
80
|
+
|
81
|
+
async def testInvalidAllowMethodsType(self):
|
82
|
+
"""
|
83
|
+
Test that initializing the Cors class with an invalid type for 'allow_methods' raises an OrionisIntegrityException.
|
84
|
+
|
85
|
+
This test verifies that passing a string instead of a list to the 'allow_methods' parameter
|
86
|
+
of the Cors class triggers the expected exception, ensuring type validation is enforced.
|
87
|
+
"""
|
88
|
+
with self.assertRaises(OrionisIntegrityException):
|
89
|
+
Cors(allow_methods="GET")
|
90
|
+
|
91
|
+
async def testInvalidAllowHeadersType(self):
|
92
|
+
"""
|
93
|
+
Test that initializing the Cors class with a non-list type for 'allow_headers' (specifically a string)
|
94
|
+
raises an OrionisIntegrityException, ensuring type validation for the 'allow_headers' parameter.
|
95
|
+
"""
|
96
|
+
with self.assertRaises(OrionisIntegrityException):
|
97
|
+
Cors(allow_headers="Authorization")
|
98
|
+
|
99
|
+
async def testInvalidExposeHeadersType(self):
|
100
|
+
"""
|
101
|
+
Test that initializing the Cors class with a non-list type for 'expose_headers'
|
102
|
+
raises an OrionisIntegrityException. Ensures type validation for the 'expose_headers' parameter.
|
103
|
+
"""
|
104
|
+
with self.assertRaises(OrionisIntegrityException):
|
105
|
+
Cors(expose_headers="X-Custom-Header")
|
106
|
+
|
107
|
+
async def testInvalidAllowCredentialsType(self):
|
108
|
+
"""
|
109
|
+
Test that initializing the Cors class with a non-boolean value for 'allow_credentials'
|
110
|
+
raises an OrionisIntegrityException, ensuring type validation for the parameter.
|
111
|
+
"""
|
112
|
+
with self.assertRaises(OrionisIntegrityException):
|
113
|
+
Cors(allow_credentials="yes")
|
114
|
+
|
115
|
+
async def testInvalidMaxAgeType(self):
|
116
|
+
"""
|
117
|
+
Test that passing a non-integer value (specifically a string) to the `max_age` parameter of the `Cors` class
|
118
|
+
raises an `OrionisIntegrityException`. This ensures that `max_age` only accepts integer or None values.
|
119
|
+
"""
|
120
|
+
with self.assertRaises(OrionisIntegrityException):
|
121
|
+
Cors(max_age="3600")
|
File without changes
|
@@ -0,0 +1,108 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.database import Database
|
2
|
+
from orionis.luminate.foundation.config.database.entities.connections import Connections
|
3
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
4
|
+
from orionis.unittesting import TestCase
|
5
|
+
|
6
|
+
class TestConfigDatabase(TestCase):
|
7
|
+
"""
|
8
|
+
Test cases for the Database configuration class.
|
9
|
+
"""
|
10
|
+
|
11
|
+
async def testDefaultValues(self):
|
12
|
+
"""
|
13
|
+
Test that Database instance is created with correct default values.
|
14
|
+
Verifies default connection is 'sqlite' and connections object is properly initialized.
|
15
|
+
"""
|
16
|
+
db = Database()
|
17
|
+
self.assertEqual(db.default, 'sqlite')
|
18
|
+
self.assertIsInstance(db.connections, Connections)
|
19
|
+
|
20
|
+
async def testDefaultConnectionValidation(self):
|
21
|
+
"""
|
22
|
+
Test default connection attribute validation.
|
23
|
+
Verifies that only valid connection types are accepted as default.
|
24
|
+
"""
|
25
|
+
# Test valid connection types
|
26
|
+
valid_connections = ['sqlite', 'mysql', 'pgsql', 'oracle']
|
27
|
+
for conn in valid_connections:
|
28
|
+
try:
|
29
|
+
Database(default=conn)
|
30
|
+
except OrionisIntegrityException:
|
31
|
+
self.fail(f"Valid connection type '{conn}' should not raise exception")
|
32
|
+
|
33
|
+
# Test invalid connection type
|
34
|
+
with self.assertRaises(OrionisIntegrityException):
|
35
|
+
Database(default='invalid_connection')
|
36
|
+
|
37
|
+
# Test empty default
|
38
|
+
with self.assertRaises(OrionisIntegrityException):
|
39
|
+
Database(default='')
|
40
|
+
|
41
|
+
# Test non-string default
|
42
|
+
with self.assertRaises(OrionisIntegrityException):
|
43
|
+
Database(default=123)
|
44
|
+
|
45
|
+
async def testConnectionsValidation(self):
|
46
|
+
"""
|
47
|
+
Test connections attribute validation.
|
48
|
+
Verifies that only Connections instances are accepted.
|
49
|
+
"""
|
50
|
+
# Test invalid connections type
|
51
|
+
with self.assertRaises(OrionisIntegrityException):
|
52
|
+
Database(connections="not_a_connections_instance")
|
53
|
+
|
54
|
+
# Test None connections
|
55
|
+
with self.assertRaises(OrionisIntegrityException):
|
56
|
+
Database(connections=None)
|
57
|
+
|
58
|
+
# Test valid connections
|
59
|
+
try:
|
60
|
+
Database(connections=Connections())
|
61
|
+
except OrionisIntegrityException:
|
62
|
+
self.fail("Valid Connections 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
|
+
db = Database()
|
70
|
+
db_dict = db.toDict()
|
71
|
+
self.assertIsInstance(db_dict, dict)
|
72
|
+
self.assertEqual(db_dict['default'], 'sqlite')
|
73
|
+
self.assertIsInstance(db_dict['connections'], dict)
|
74
|
+
|
75
|
+
async def testCustomValues(self):
|
76
|
+
"""
|
77
|
+
Test that custom values are properly stored and validated.
|
78
|
+
Verifies custom configurations are correctly handled.
|
79
|
+
"""
|
80
|
+
custom_connections = Connections()
|
81
|
+
custom_db = Database(
|
82
|
+
default='mysql',
|
83
|
+
connections=custom_connections
|
84
|
+
)
|
85
|
+
self.assertEqual(custom_db.default, 'mysql')
|
86
|
+
self.assertIs(custom_db.connections, custom_connections)
|
87
|
+
|
88
|
+
async def testHashability(self):
|
89
|
+
"""
|
90
|
+
Test that Database maintains hashability due to unsafe_hash=True.
|
91
|
+
Verifies that Database instances can be used in sets and as dictionary keys.
|
92
|
+
"""
|
93
|
+
db1 = Database()
|
94
|
+
db2 = Database()
|
95
|
+
db_set = {db1, db2}
|
96
|
+
self.assertEqual(len(db_set), 1)
|
97
|
+
|
98
|
+
custom_db = Database(default='pgsql')
|
99
|
+
db_set.add(custom_db)
|
100
|
+
self.assertEqual(len(db_set), 2)
|
101
|
+
|
102
|
+
async def testKwOnlyInitialization(self):
|
103
|
+
"""
|
104
|
+
Test that Database enforces keyword-only initialization.
|
105
|
+
Verifies that positional arguments are not allowed for initialization.
|
106
|
+
"""
|
107
|
+
with self.assertRaises(TypeError):
|
108
|
+
Database('sqlite', Connections())
|