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,129 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.connections import Connections
|
2
|
+
from orionis.luminate.foundation.config.database.entities.mysql import MySQL
|
3
|
+
from orionis.luminate.foundation.config.database.entities.oracle import Oracle
|
4
|
+
from orionis.luminate.foundation.config.database.entities.pgsql import PGSQL
|
5
|
+
from orionis.luminate.foundation.config.database.entities.sqlite import SQLite
|
6
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
7
|
+
from orionis.unittesting import TestCase
|
8
|
+
|
9
|
+
class TestConfigConnections(TestCase):
|
10
|
+
"""
|
11
|
+
Test cases for the Connections configuration class.
|
12
|
+
"""
|
13
|
+
|
14
|
+
async def testDefaultValues(self):
|
15
|
+
"""
|
16
|
+
Test that Connections instance is created with correct default values.
|
17
|
+
Verifies all default connections are properly initialized with their respective types.
|
18
|
+
"""
|
19
|
+
connections = Connections()
|
20
|
+
self.assertIsInstance(connections.sqlite, SQLite)
|
21
|
+
self.assertIsInstance(connections.mysql, MySQL)
|
22
|
+
self.assertIsInstance(connections.pgsql, PGSQL)
|
23
|
+
self.assertIsInstance(connections.oracle, Oracle)
|
24
|
+
|
25
|
+
async def testSqliteTypeValidation(self):
|
26
|
+
"""
|
27
|
+
Test sqlite attribute type validation.
|
28
|
+
Verifies that only SQLite instances are accepted for sqlite attribute.
|
29
|
+
"""
|
30
|
+
with self.assertRaises(OrionisIntegrityException):
|
31
|
+
Connections(sqlite="not_a_sqlite_instance")
|
32
|
+
with self.assertRaises(OrionisIntegrityException):
|
33
|
+
Connections(sqlite=123)
|
34
|
+
with self.assertRaises(OrionisIntegrityException):
|
35
|
+
Connections(sqlite=None)
|
36
|
+
|
37
|
+
async def testMysqlTypeValidation(self):
|
38
|
+
"""
|
39
|
+
Test mysql attribute type validation.
|
40
|
+
Verifies that only MySQL instances are accepted for mysql attribute.
|
41
|
+
"""
|
42
|
+
with self.assertRaises(OrionisIntegrityException):
|
43
|
+
Connections(mysql="not_a_mysql_instance")
|
44
|
+
with self.assertRaises(OrionisIntegrityException):
|
45
|
+
Connections(mysql=123)
|
46
|
+
with self.assertRaises(OrionisIntegrityException):
|
47
|
+
Connections(mysql=None)
|
48
|
+
|
49
|
+
async def testPgsqlTypeValidation(self):
|
50
|
+
"""
|
51
|
+
Test pgsql attribute type validation.
|
52
|
+
Verifies that only PGSQL instances are accepted for pgsql attribute.
|
53
|
+
"""
|
54
|
+
with self.assertRaises(OrionisIntegrityException):
|
55
|
+
Connections(pgsql="not_a_pgsql_instance")
|
56
|
+
with self.assertRaises(OrionisIntegrityException):
|
57
|
+
Connections(pgsql=123)
|
58
|
+
with self.assertRaises(OrionisIntegrityException):
|
59
|
+
Connections(pgsql=None)
|
60
|
+
|
61
|
+
async def testOracleTypeValidation(self):
|
62
|
+
"""
|
63
|
+
Test oracle attribute type validation.
|
64
|
+
Verifies that only Oracle instances are accepted for oracle attribute.
|
65
|
+
"""
|
66
|
+
with self.assertRaises(OrionisIntegrityException):
|
67
|
+
Connections(oracle="not_an_oracle_instance")
|
68
|
+
with self.assertRaises(OrionisIntegrityException):
|
69
|
+
Connections(oracle=123)
|
70
|
+
with self.assertRaises(OrionisIntegrityException):
|
71
|
+
Connections(oracle=None)
|
72
|
+
|
73
|
+
async def testToDictMethod(self):
|
74
|
+
"""
|
75
|
+
Test that toDict returns proper dictionary representation.
|
76
|
+
Verifies all connections are correctly included in dictionary.
|
77
|
+
"""
|
78
|
+
connections = Connections()
|
79
|
+
connections_dict = connections.toDict()
|
80
|
+
self.assertIsInstance(connections_dict, dict)
|
81
|
+
self.assertIsInstance(connections_dict['sqlite'], dict)
|
82
|
+
self.assertIsInstance(connections_dict['mysql'], dict)
|
83
|
+
self.assertIsInstance(connections_dict['pgsql'], dict)
|
84
|
+
self.assertIsInstance(connections_dict['oracle'], dict)
|
85
|
+
|
86
|
+
async def testCustomConnections(self):
|
87
|
+
"""
|
88
|
+
Test that custom connections are properly stored and validated.
|
89
|
+
Verifies custom connection configurations are correctly handled.
|
90
|
+
"""
|
91
|
+
custom_sqlite = SQLite(database='custom.db')
|
92
|
+
custom_mysql = MySQL(database='custom_db')
|
93
|
+
custom_pgsql = PGSQL(database='custom_db')
|
94
|
+
custom_oracle = Oracle(service_name='CUSTOM_SID')
|
95
|
+
|
96
|
+
connections = Connections(
|
97
|
+
sqlite=custom_sqlite,
|
98
|
+
mysql=custom_mysql,
|
99
|
+
pgsql=custom_pgsql,
|
100
|
+
oracle=custom_oracle
|
101
|
+
)
|
102
|
+
|
103
|
+
self.assertEqual(connections.sqlite.database, 'custom.db')
|
104
|
+
self.assertEqual(connections.mysql.database, 'custom_db')
|
105
|
+
self.assertEqual(connections.pgsql.database, 'custom_db')
|
106
|
+
self.assertEqual(connections.oracle.service_name, 'CUSTOM_SID')
|
107
|
+
|
108
|
+
async def testHashability(self):
|
109
|
+
"""
|
110
|
+
Test that Connections maintains hashability due to unsafe_hash=True.
|
111
|
+
Verifies that Connections instances can be used in sets and as dictionary keys.
|
112
|
+
"""
|
113
|
+
conn1 = Connections()
|
114
|
+
conn2 = Connections()
|
115
|
+
conn_set = {conn1, conn2}
|
116
|
+
|
117
|
+
self.assertEqual(len(conn_set), 1)
|
118
|
+
|
119
|
+
custom_conn = Connections(sqlite=SQLite(database='custom.db'))
|
120
|
+
conn_set.add(custom_conn)
|
121
|
+
self.assertEqual(len(conn_set), 2)
|
122
|
+
|
123
|
+
async def testKwOnlyInitialization(self):
|
124
|
+
"""
|
125
|
+
Test that Connections enforces keyword-only initialization.
|
126
|
+
Verifies that positional arguments are not allowed for initialization.
|
127
|
+
"""
|
128
|
+
with self.assertRaises(TypeError):
|
129
|
+
Connections(SQLite(), MySQL(), PGSQL(), Oracle())
|
@@ -0,0 +1,231 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.mysql import MySQL
|
2
|
+
from orionis.luminate.foundation.config.database.enums.mysql_charsets import MySQLCharset
|
3
|
+
from orionis.luminate.foundation.config.database.enums.mysql_collations import MySQLCollation
|
4
|
+
from orionis.luminate.foundation.config.database.enums.mysql_engine import MySQLEngine
|
5
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
6
|
+
from orionis.unittesting import TestCase
|
7
|
+
|
8
|
+
class TestConfigMySQL(TestCase):
|
9
|
+
"""
|
10
|
+
Test cases for the MySQL database configuration class.
|
11
|
+
"""
|
12
|
+
|
13
|
+
async def testDefaultValues(self):
|
14
|
+
"""
|
15
|
+
Test that MySQL instance is created with correct default values.
|
16
|
+
Verifies all default values match expected defaults from class definition.
|
17
|
+
"""
|
18
|
+
mysql = MySQL()
|
19
|
+
self.assertEqual(mysql.driver, 'mysql')
|
20
|
+
self.assertEqual(mysql.host, '127.0.0.1')
|
21
|
+
self.assertEqual(mysql.port, 3306)
|
22
|
+
self.assertEqual(mysql.database, 'orionis')
|
23
|
+
self.assertEqual(mysql.username, 'root')
|
24
|
+
self.assertEqual(mysql.password, '')
|
25
|
+
self.assertEqual(mysql.unix_socket, '')
|
26
|
+
self.assertEqual(mysql.charset, MySQLCharset.UTF8MB4.value)
|
27
|
+
self.assertEqual(mysql.collation, MySQLCollation.UTF8MB4_UNICODE_CI.value)
|
28
|
+
self.assertEqual(mysql.prefix, '')
|
29
|
+
self.assertTrue(mysql.prefix_indexes)
|
30
|
+
self.assertTrue(mysql.strict)
|
31
|
+
self.assertEqual(mysql.engine, MySQLEngine.INNODB.value)
|
32
|
+
|
33
|
+
async def testDriverValidation(self):
|
34
|
+
"""
|
35
|
+
Test driver attribute validation.
|
36
|
+
Verifies that only 'mysql' value is accepted for driver.
|
37
|
+
"""
|
38
|
+
with self.assertRaises(OrionisIntegrityException):
|
39
|
+
MySQL(driver='')
|
40
|
+
with self.assertRaises(OrionisIntegrityException):
|
41
|
+
MySQL(driver='postgres')
|
42
|
+
with self.assertRaises(OrionisIntegrityException):
|
43
|
+
MySQL(driver=123)
|
44
|
+
|
45
|
+
async def testHostValidation(self):
|
46
|
+
"""
|
47
|
+
Test host attribute validation.
|
48
|
+
Verifies that empty or non-string hosts raise exceptions.
|
49
|
+
"""
|
50
|
+
with self.assertRaises(OrionisIntegrityException):
|
51
|
+
MySQL(host='')
|
52
|
+
with self.assertRaises(OrionisIntegrityException):
|
53
|
+
MySQL(host=123)
|
54
|
+
|
55
|
+
async def testPortValidation(self):
|
56
|
+
"""
|
57
|
+
Test port attribute validation.
|
58
|
+
Verifies invalid port numbers raise exceptions.
|
59
|
+
"""
|
60
|
+
with self.assertRaises(OrionisIntegrityException):
|
61
|
+
MySQL(port=0)
|
62
|
+
with self.assertRaises(OrionisIntegrityException):
|
63
|
+
MySQL(port=65536)
|
64
|
+
with self.assertRaises(OrionisIntegrityException):
|
65
|
+
MySQL(port='3306')
|
66
|
+
|
67
|
+
async def testDatabaseValidation(self):
|
68
|
+
"""
|
69
|
+
Test database attribute validation.
|
70
|
+
Verifies that empty or non-string database names raise exceptions.
|
71
|
+
"""
|
72
|
+
with self.assertRaises(OrionisIntegrityException):
|
73
|
+
MySQL(database='')
|
74
|
+
with self.assertRaises(OrionisIntegrityException):
|
75
|
+
MySQL(database=123)
|
76
|
+
|
77
|
+
async def testUsernameValidation(self):
|
78
|
+
"""
|
79
|
+
Test username attribute validation.
|
80
|
+
Verifies that empty or non-string usernames raise exceptions.
|
81
|
+
"""
|
82
|
+
with self.assertRaises(OrionisIntegrityException):
|
83
|
+
MySQL(username='')
|
84
|
+
with self.assertRaises(OrionisIntegrityException):
|
85
|
+
MySQL(username=123)
|
86
|
+
|
87
|
+
async def testPasswordValidation(self):
|
88
|
+
"""
|
89
|
+
Test password attribute validation.
|
90
|
+
Verifies that non-string passwords raise exceptions.
|
91
|
+
"""
|
92
|
+
with self.assertRaises(OrionisIntegrityException):
|
93
|
+
MySQL(password=123)
|
94
|
+
|
95
|
+
async def testUnixSocketValidation(self):
|
96
|
+
"""
|
97
|
+
Test unix_socket attribute validation.
|
98
|
+
Verifies that non-string socket paths raise exceptions.
|
99
|
+
"""
|
100
|
+
with self.assertRaises(OrionisIntegrityException):
|
101
|
+
MySQL(unix_socket=123)
|
102
|
+
|
103
|
+
async def testCharsetValidation(self):
|
104
|
+
"""
|
105
|
+
Test charset attribute validation.
|
106
|
+
Verifies enum conversion and invalid value handling.
|
107
|
+
"""
|
108
|
+
# Test string conversion
|
109
|
+
mysql = MySQL(charset='UTF8')
|
110
|
+
self.assertEqual(mysql.charset, MySQLCharset.UTF8.value)
|
111
|
+
# Test enum assignment
|
112
|
+
mysql = MySQL(charset=MySQLCharset.LATIN1)
|
113
|
+
self.assertEqual(mysql.charset, MySQLCharset.LATIN1.value)
|
114
|
+
|
115
|
+
# Test invalid value
|
116
|
+
with self.assertRaises(OrionisIntegrityException):
|
117
|
+
MySQL(charset='INVALID')
|
118
|
+
|
119
|
+
async def testCollationValidation(self):
|
120
|
+
"""
|
121
|
+
Test collation attribute validation.
|
122
|
+
Verifies enum conversion and invalid value handling.
|
123
|
+
"""
|
124
|
+
# Test string conversion
|
125
|
+
mysql = MySQL(collation='UTF8_GENERAL_CI')
|
126
|
+
self.assertEqual(mysql.collation, MySQLCollation.UTF8_GENERAL_CI.value)
|
127
|
+
# Test enum assignment
|
128
|
+
mysql = MySQL(collation=MySQLCollation.UTF8MB4_BIN)
|
129
|
+
self.assertEqual(mysql.collation, MySQLCollation.UTF8MB4_BIN.value)
|
130
|
+
|
131
|
+
# Test invalid value
|
132
|
+
with self.assertRaises(OrionisIntegrityException):
|
133
|
+
MySQL(collation='INVALID')
|
134
|
+
|
135
|
+
async def testPrefixValidation(self):
|
136
|
+
"""
|
137
|
+
Test prefix attribute validation.
|
138
|
+
Verifies that non-string prefixes raise exceptions.
|
139
|
+
"""
|
140
|
+
with self.assertRaises(OrionisIntegrityException):
|
141
|
+
MySQL(prefix=123)
|
142
|
+
|
143
|
+
async def testPrefixIndexesValidation(self):
|
144
|
+
"""
|
145
|
+
Test prefix_indexes attribute validation.
|
146
|
+
Verifies that non-boolean values raise exceptions.
|
147
|
+
"""
|
148
|
+
with self.assertRaises(OrionisIntegrityException):
|
149
|
+
MySQL(prefix_indexes='true')
|
150
|
+
with self.assertRaises(OrionisIntegrityException):
|
151
|
+
MySQL(prefix_indexes=1)
|
152
|
+
|
153
|
+
async def testStrictValidation(self):
|
154
|
+
"""
|
155
|
+
Test strict attribute validation.
|
156
|
+
Verifies that non-boolean values raise exceptions.
|
157
|
+
"""
|
158
|
+
with self.assertRaises(OrionisIntegrityException):
|
159
|
+
MySQL(strict='true')
|
160
|
+
with self.assertRaises(OrionisIntegrityException):
|
161
|
+
MySQL(strict=1)
|
162
|
+
|
163
|
+
async def testEngineValidation(self):
|
164
|
+
"""
|
165
|
+
Test engine attribute validation.
|
166
|
+
Verifies enum conversion and invalid value handling.
|
167
|
+
"""
|
168
|
+
# Test string conversion
|
169
|
+
mysql = MySQL(engine='MYISAM')
|
170
|
+
self.assertEqual(mysql.engine, MySQLEngine.MYISAM.value)
|
171
|
+
|
172
|
+
# Test enum assignment
|
173
|
+
mysql = MySQL(engine=MySQLEngine.MEMORY)
|
174
|
+
self.assertEqual(mysql.engine, MySQLEngine.MEMORY.value)
|
175
|
+
|
176
|
+
# Test invalid value
|
177
|
+
with self.assertRaises(OrionisIntegrityException):
|
178
|
+
MySQL(engine='INVALID')
|
179
|
+
|
180
|
+
async def testToDictMethod(self):
|
181
|
+
"""
|
182
|
+
Test that toDict returns proper dictionary representation.
|
183
|
+
Verifies all attributes are correctly included in dictionary.
|
184
|
+
"""
|
185
|
+
mysql = MySQL()
|
186
|
+
mysql_dict = mysql.toDict()
|
187
|
+
self.assertEqual(mysql_dict['driver'], 'mysql')
|
188
|
+
self.assertEqual(mysql_dict['host'], '127.0.0.1')
|
189
|
+
self.assertEqual(mysql_dict['port'], 3306)
|
190
|
+
self.assertEqual(mysql_dict['database'], 'orionis')
|
191
|
+
self.assertEqual(mysql_dict['username'], 'root')
|
192
|
+
self.assertEqual(mysql_dict['password'], '')
|
193
|
+
self.assertEqual(mysql_dict['unix_socket'], '')
|
194
|
+
self.assertEqual(mysql_dict['charset'], MySQLCharset.UTF8MB4.value)
|
195
|
+
self.assertEqual(mysql_dict['collation'], MySQLCollation.UTF8MB4_UNICODE_CI.value)
|
196
|
+
self.assertEqual(mysql_dict['prefix'], '')
|
197
|
+
self.assertTrue(mysql_dict['prefix_indexes'])
|
198
|
+
self.assertTrue(mysql_dict['strict'])
|
199
|
+
self.assertEqual(mysql_dict['engine'], MySQLEngine.INNODB.value)
|
200
|
+
|
201
|
+
async def testCustomValues(self):
|
202
|
+
"""
|
203
|
+
Test that custom values are properly stored and validated.
|
204
|
+
Verifies custom configuration values are correctly handled.
|
205
|
+
"""
|
206
|
+
custom_mysql = MySQL(
|
207
|
+
host='db.example.com',
|
208
|
+
port=3307,
|
209
|
+
database='custom_db',
|
210
|
+
username='admin',
|
211
|
+
password='secure123',
|
212
|
+
unix_socket='/var/run/mysqld/mysqld.sock',
|
213
|
+
charset='LATIN1',
|
214
|
+
collation='LATIN1_GENERAL_CI',
|
215
|
+
prefix='app_',
|
216
|
+
prefix_indexes=False,
|
217
|
+
strict=False,
|
218
|
+
engine='MEMORY'
|
219
|
+
)
|
220
|
+
self.assertEqual(custom_mysql.host, 'db.example.com')
|
221
|
+
self.assertEqual(custom_mysql.port, 3307)
|
222
|
+
self.assertEqual(custom_mysql.database, 'custom_db')
|
223
|
+
self.assertEqual(custom_mysql.username, 'admin')
|
224
|
+
self.assertEqual(custom_mysql.password, 'secure123')
|
225
|
+
self.assertEqual(custom_mysql.unix_socket, '/var/run/mysqld/mysqld.sock')
|
226
|
+
self.assertEqual(custom_mysql.charset, MySQLCharset.LATIN1.value)
|
227
|
+
self.assertEqual(custom_mysql.collation, MySQLCollation.LATIN1_GENERAL_CI.value)
|
228
|
+
self.assertEqual(custom_mysql.prefix, 'app_')
|
229
|
+
self.assertFalse(custom_mysql.prefix_indexes)
|
230
|
+
self.assertFalse(custom_mysql.strict)
|
231
|
+
self.assertEqual(custom_mysql.engine, MySQLEngine.MEMORY.value)
|
@@ -0,0 +1,204 @@
|
|
1
|
+
from orionis.luminate.foundation.config.database.entities.oracle import Oracle
|
2
|
+
from orionis.luminate.foundation.config.database.enums.oracle_encoding import OracleEncoding
|
3
|
+
from orionis.luminate.foundation.config.database.enums.oracle_nencoding import OracleNencoding
|
4
|
+
from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
|
5
|
+
from orionis.unittesting import TestCase
|
6
|
+
|
7
|
+
class TestConfigOracle(TestCase):
|
8
|
+
"""
|
9
|
+
Test cases for the Oracle database configuration class.
|
10
|
+
"""
|
11
|
+
|
12
|
+
async def testDefaultValues(self):
|
13
|
+
"""
|
14
|
+
Test that Oracle instance is created with correct default values.
|
15
|
+
Verifies all default values match expected defaults from class definition.
|
16
|
+
"""
|
17
|
+
oracle = Oracle()
|
18
|
+
self.assertEqual(oracle.driver, 'oracle')
|
19
|
+
self.assertEqual(oracle.username, 'sys')
|
20
|
+
self.assertEqual(oracle.password, '')
|
21
|
+
self.assertEqual(oracle.host, 'localhost')
|
22
|
+
self.assertEqual(oracle.port, 1521)
|
23
|
+
self.assertEqual(oracle.service_name, 'ORCL')
|
24
|
+
self.assertIsNone(oracle.sid)
|
25
|
+
self.assertIsNone(oracle.dsn)
|
26
|
+
self.assertIsNone(oracle.tns_name)
|
27
|
+
self.assertEqual(oracle.encoding, OracleEncoding.AL32UTF8.value)
|
28
|
+
self.assertEqual(oracle.nencoding, OracleNencoding.AL32UTF8.value)
|
29
|
+
|
30
|
+
async def testDriverValidation(self):
|
31
|
+
"""
|
32
|
+
Test driver attribute validation.
|
33
|
+
Verifies that only 'oracle' value is accepted for driver.
|
34
|
+
"""
|
35
|
+
with self.assertRaises(OrionisIntegrityException):
|
36
|
+
Oracle(driver='')
|
37
|
+
with self.assertRaises(OrionisIntegrityException):
|
38
|
+
Oracle(driver='postgres')
|
39
|
+
with self.assertRaises(OrionisIntegrityException):
|
40
|
+
Oracle(driver=123)
|
41
|
+
|
42
|
+
async def testUsernameValidation(self):
|
43
|
+
"""
|
44
|
+
Test username attribute validation.
|
45
|
+
Verifies that empty or non-string usernames raise exceptions.
|
46
|
+
"""
|
47
|
+
with self.assertRaises(OrionisIntegrityException):
|
48
|
+
Oracle(username='')
|
49
|
+
with self.assertRaises(OrionisIntegrityException):
|
50
|
+
Oracle(username=123)
|
51
|
+
|
52
|
+
async def testPasswordValidation(self):
|
53
|
+
"""
|
54
|
+
Test password attribute validation.
|
55
|
+
Verifies that non-string passwords raise exceptions.
|
56
|
+
"""
|
57
|
+
with self.assertRaises(OrionisIntegrityException):
|
58
|
+
Oracle(password=123)
|
59
|
+
|
60
|
+
async def testHostValidation(self):
|
61
|
+
"""
|
62
|
+
Test host attribute validation when not using DSN/TNS.
|
63
|
+
Verifies that empty or non-string hosts raise exceptions.
|
64
|
+
"""
|
65
|
+
with self.assertRaises(OrionisIntegrityException):
|
66
|
+
Oracle(host='', dsn=None, tns_name=None)
|
67
|
+
with self.assertRaises(OrionisIntegrityException):
|
68
|
+
Oracle(host=123, dsn=None, tns_name=None)
|
69
|
+
|
70
|
+
async def testPortValidation(self):
|
71
|
+
"""
|
72
|
+
Test port attribute validation when not using DSN/TNS.
|
73
|
+
Verifies invalid port numbers raise exceptions.
|
74
|
+
"""
|
75
|
+
with self.assertRaises(OrionisIntegrityException):
|
76
|
+
Oracle(port=0, dsn=None, tns_name=None)
|
77
|
+
with self.assertRaises(OrionisIntegrityException):
|
78
|
+
Oracle(port=65536, dsn=None, tns_name=None)
|
79
|
+
with self.assertRaises(OrionisIntegrityException):
|
80
|
+
Oracle(port='1521', dsn=None, tns_name=None)
|
81
|
+
|
82
|
+
async def testServiceNameAndSidValidation(self):
|
83
|
+
"""
|
84
|
+
Test service_name and sid validation when not using DSN/TNS.
|
85
|
+
Verifies at least one of service_name or sid is required.
|
86
|
+
"""
|
87
|
+
# Test with neither service_name nor sid
|
88
|
+
with self.assertRaises(OrionisIntegrityException):
|
89
|
+
Oracle(service_name=None, sid=None, dsn=None, tns_name=None)
|
90
|
+
|
91
|
+
# Test valid with service_name only
|
92
|
+
try:
|
93
|
+
Oracle(service_name='ORCL', sid=None, dsn=None, tns_name=None)
|
94
|
+
except OrionisIntegrityException:
|
95
|
+
self.fail("Valid service_name should not raise exception")
|
96
|
+
|
97
|
+
# Test valid with sid only
|
98
|
+
try:
|
99
|
+
Oracle(service_name=None, sid='XE', dsn=None, tns_name=None)
|
100
|
+
except OrionisIntegrityException:
|
101
|
+
self.fail("Valid sid should not raise exception")
|
102
|
+
|
103
|
+
async def testDsnValidation(self):
|
104
|
+
"""
|
105
|
+
Test dsn attribute validation.
|
106
|
+
Verifies that dsn must be non-empty string or None.
|
107
|
+
"""
|
108
|
+
with self.assertRaises(OrionisIntegrityException):
|
109
|
+
Oracle(dsn='')
|
110
|
+
try:
|
111
|
+
Oracle(dsn='valid_dsn_string')
|
112
|
+
except OrionisIntegrityException:
|
113
|
+
self.fail("Valid dsn should not raise exception")
|
114
|
+
|
115
|
+
async def testTnsNameValidation(self):
|
116
|
+
"""
|
117
|
+
Test tns_name attribute validation.
|
118
|
+
Verifies that tns_name must be non-empty string or None.
|
119
|
+
"""
|
120
|
+
with self.assertRaises(OrionisIntegrityException):
|
121
|
+
Oracle(tns_name='')
|
122
|
+
try:
|
123
|
+
Oracle(tns_name='valid_tns_name')
|
124
|
+
except OrionisIntegrityException:
|
125
|
+
self.fail("Valid tns_name should not raise exception")
|
126
|
+
|
127
|
+
async def testEncodingValidation(self):
|
128
|
+
"""
|
129
|
+
Test encoding attribute validation.
|
130
|
+
Verifies enum conversion and invalid value handling.
|
131
|
+
"""
|
132
|
+
# Test enum assignment
|
133
|
+
oracle = Oracle(encoding=OracleEncoding.WE8ISO8859P1)
|
134
|
+
self.assertEqual(oracle.encoding, OracleEncoding.WE8ISO8859P1.value)
|
135
|
+
|
136
|
+
# Test invalid value
|
137
|
+
with self.assertRaises(OrionisIntegrityException):
|
138
|
+
Oracle(encoding='INVALID')
|
139
|
+
|
140
|
+
async def testNencodingValidation(self):
|
141
|
+
"""
|
142
|
+
Test nencoding attribute validation.
|
143
|
+
Verifies enum conversion and invalid value handling.
|
144
|
+
"""
|
145
|
+
# Test string conversion
|
146
|
+
oracle = Oracle(nencoding='EE8MSWIN1250')
|
147
|
+
self.assertEqual(oracle.nencoding, OracleNencoding.EE8MSWIN1250.value)
|
148
|
+
|
149
|
+
# Test enum assignment
|
150
|
+
oracle = Oracle(nencoding=OracleNencoding.ZHS16GBK)
|
151
|
+
self.assertEqual(oracle.nencoding, OracleNencoding.ZHS16GBK.value)
|
152
|
+
|
153
|
+
# Test invalid value
|
154
|
+
with self.assertRaises(OrionisIntegrityException):
|
155
|
+
Oracle(nencoding='INVALID')
|
156
|
+
|
157
|
+
async def testToDictMethod(self):
|
158
|
+
"""
|
159
|
+
Test that toDict returns proper dictionary representation.
|
160
|
+
Verifies all attributes are correctly included in dictionary.
|
161
|
+
"""
|
162
|
+
oracle = Oracle()
|
163
|
+
oracle_dict = oracle.toDict()
|
164
|
+
|
165
|
+
self.assertEqual(oracle_dict['driver'], 'oracle')
|
166
|
+
self.assertEqual(oracle_dict['username'], 'sys')
|
167
|
+
self.assertEqual(oracle_dict['password'], '')
|
168
|
+
self.assertEqual(oracle_dict['host'], 'localhost')
|
169
|
+
self.assertEqual(oracle_dict['port'], 1521)
|
170
|
+
self.assertEqual(oracle_dict['service_name'], 'ORCL')
|
171
|
+
self.assertIsNone(oracle_dict['sid'])
|
172
|
+
self.assertIsNone(oracle_dict['dsn'])
|
173
|
+
self.assertIsNone(oracle_dict['tns_name'])
|
174
|
+
self.assertEqual(oracle_dict['encoding'], OracleEncoding.AL32UTF8.value)
|
175
|
+
self.assertEqual(oracle_dict['nencoding'], OracleNencoding.AL32UTF8.value)
|
176
|
+
|
177
|
+
async def testConnectionMethods(self):
|
178
|
+
"""
|
179
|
+
Test that different connection methods are properly handled.
|
180
|
+
Verifies that either DSN, TNS, or host/port/service/sid combinations work.
|
181
|
+
"""
|
182
|
+
# Test DSN connection
|
183
|
+
try:
|
184
|
+
Oracle(dsn='valid_dsn', host=None, port=None, service_name=None, sid=None)
|
185
|
+
except OrionisIntegrityException:
|
186
|
+
self.fail("Valid DSN connection should not raise exception")
|
187
|
+
|
188
|
+
# Test TNS connection
|
189
|
+
try:
|
190
|
+
Oracle(tns_name='valid_tns', host=None, port=None, service_name=None, sid=None)
|
191
|
+
except OrionisIntegrityException:
|
192
|
+
self.fail("Valid TNS connection should not raise exception")
|
193
|
+
|
194
|
+
# Test host/port/service connection
|
195
|
+
try:
|
196
|
+
Oracle(dsn=None, tns_name=None, host='localhost', port=1521, service_name='ORCL')
|
197
|
+
except OrionisIntegrityException:
|
198
|
+
self.fail("Valid host/port/service connection should not raise exception")
|
199
|
+
|
200
|
+
# Test host/port/sid connection
|
201
|
+
try:
|
202
|
+
Oracle(dsn=None, tns_name=None, host='localhost', port=1521, sid='XE')
|
203
|
+
except OrionisIntegrityException:
|
204
|
+
self.fail("Valid host/port/sid connection should not raise exception")
|