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.
Files changed (397) hide show
  1. orionis/application.py +6 -0
  2. orionis/framework.py +1 -1
  3. orionis/luminate/{application.py → _application.py} +21 -19
  4. orionis/luminate/{container → _container}/container.py +4 -4
  5. orionis/luminate/{container → _container}/container_integrity.py +2 -2
  6. orionis/luminate/{container → _container}/resolve.py +2 -2
  7. orionis/luminate/{contracts → _contracts}/application.py +2 -2
  8. orionis/luminate/{contracts → _contracts}/console/task_manager.py +1 -1
  9. orionis/luminate/{contracts → _contracts}/facades/commands/scheduler_facade.py +1 -1
  10. orionis/luminate/{contracts → _contracts}/facades/facade.py +4 -3
  11. orionis/luminate/{contracts → _contracts}/foundation/providers/service_providers_bootstrapper.py +2 -2
  12. orionis/luminate/{contracts → _contracts}/providers/service_provider.py +1 -1
  13. orionis/luminate/{facades → _facades}/app_facade.py +2 -2
  14. orionis/luminate/{facades → _facades}/commands/commands_facade.py +3 -3
  15. orionis/luminate/{facades → _facades}/commands/scheduler_facade.py +3 -3
  16. orionis/luminate/{facades → _facades}/config/config_facade.py +3 -3
  17. orionis/luminate/{facades → _facades}/environment/environment_facade.py +3 -3
  18. orionis/luminate/{facades → _facades}/files/path_facade.py +4 -4
  19. orionis/luminate/{facades → _facades}/log/log_facade.py +2 -2
  20. orionis/luminate/{foundation → _foundation}/console/command_bootstrapper.py +2 -2
  21. orionis/luminate/{foundation → _foundation}/environment/environment_bootstrapper.py +3 -3
  22. orionis/luminate/{foundation → _foundation/foundation}/config/config_bootstrapper.py +3 -3
  23. orionis/luminate/{foundation → _foundation}/providers/service_providers_bootstrapper.py +4 -4
  24. orionis/luminate/{providers → _providers}/commands/reactor_commands_service_provider.py +7 -7
  25. orionis/luminate/{providers → _providers}/commands/scheduler_provider.py +3 -3
  26. orionis/luminate/{providers → _providers}/config/config_service_provider.py +3 -3
  27. orionis/luminate/{providers → _providers}/environment/environment__service_provider.py +4 -4
  28. orionis/luminate/_providers/files/paths_provider.py +21 -0
  29. orionis/luminate/{providers → _providers}/log/log_service_provider.py +5 -5
  30. orionis/luminate/{providers → _providers}/service_provider.py +2 -2
  31. orionis/luminate/{services_ → _services}/commands/reactor_commands_service.py +3 -3
  32. orionis/luminate/{services_ → _services}/commands/scheduler_service.py +1 -1
  33. orionis/luminate/{services_ → _services}/config/config_service.py +1 -1
  34. orionis/luminate/{services_ → _services}/log/log_service.py +1 -1
  35. orionis/luminate/app.py +19 -0
  36. orionis/luminate/console/base/command.py +1 -1
  37. orionis/luminate/console/command_filter.py +1 -1
  38. orionis/luminate/console/commands/help.py +1 -1
  39. orionis/luminate/console/commands/schedule_work.py +2 -2
  40. orionis/luminate/console/dumper/dump_die.py +1 -1
  41. orionis/luminate/console/kernel.py +1 -1
  42. orionis/luminate/console/output/console.py +3 -3
  43. orionis/luminate/console/output/executor.py +1 -1
  44. orionis/luminate/console/output/progress_bar.py +1 -1
  45. orionis/luminate/console/parser.py +1 -1
  46. orionis/luminate/{config → foundation/config}/app/entities/app.py +44 -43
  47. orionis/luminate/{config → foundation/config}/auth/entities/auth.py +9 -1
  48. orionis/luminate/foundation/config/cache/entities/cache.py +74 -0
  49. orionis/luminate/foundation/config/cache/entities/file.py +46 -0
  50. orionis/luminate/foundation/config/cache/entities/stores.py +46 -0
  51. orionis/luminate/{contracts/config → foundation/config/contracts}/config.py +8 -12
  52. orionis/luminate/foundation/config/cors/entities/cors.py +129 -0
  53. orionis/luminate/foundation/config/database/entities/connections.py +89 -0
  54. orionis/luminate/foundation/config/database/entities/database.py +62 -0
  55. orionis/luminate/foundation/config/database/entities/mysql.py +270 -0
  56. orionis/luminate/foundation/config/database/entities/oracle.py +227 -0
  57. orionis/luminate/foundation/config/database/entities/pgsql.py +189 -0
  58. orionis/luminate/foundation/config/database/entities/sqlite.py +178 -0
  59. orionis/luminate/foundation/config/database/enums/mysql_charsets.py +92 -0
  60. orionis/luminate/foundation/config/database/enums/mysql_collations.py +53 -0
  61. orionis/luminate/foundation/config/database/enums/mysql_engine.py +18 -0
  62. orionis/luminate/foundation/config/database/enums/oracle_encoding.py +44 -0
  63. orionis/luminate/foundation/config/database/enums/oracle_nencoding.py +31 -0
  64. orionis/luminate/foundation/config/database/enums/pgsql_charsets.py +90 -0
  65. orionis/luminate/foundation/config/database/enums/pgsql_collations.py +26 -0
  66. orionis/luminate/foundation/config/database/enums/pgsql_mode.py +24 -0
  67. orionis/luminate/foundation/config/database/enums/sqlite_foreign_key.py +12 -0
  68. orionis/luminate/foundation/config/database/enums/sqlite_journal.py +22 -0
  69. orionis/luminate/foundation/config/database/enums/sqlite_synchronous.py +16 -0
  70. orionis/luminate/foundation/config/filesystems/entitites/aws.py +134 -0
  71. orionis/luminate/foundation/config/filesystems/entitites/disks.py +68 -0
  72. orionis/luminate/foundation/config/filesystems/entitites/filesystems.py +53 -0
  73. orionis/luminate/foundation/config/filesystems/entitites/local.py +39 -0
  74. orionis/luminate/foundation/config/filesystems/entitites/public.py +52 -0
  75. orionis/luminate/foundation/config/logging/entities/channels.py +115 -0
  76. orionis/luminate/foundation/config/logging/entities/chunked.py +128 -0
  77. orionis/luminate/foundation/config/logging/entities/daily.py +113 -0
  78. orionis/luminate/foundation/config/logging/entities/hourly.py +100 -0
  79. orionis/luminate/foundation/config/logging/entities/logging.py +51 -0
  80. orionis/luminate/foundation/config/logging/entities/monthly.py +100 -0
  81. orionis/luminate/foundation/config/logging/entities/stack.py +74 -0
  82. orionis/luminate/foundation/config/logging/entities/weekly.py +102 -0
  83. orionis/luminate/foundation/config/logging/enums/levels.py +21 -0
  84. orionis/luminate/foundation/config/mail/entities/file.py +41 -0
  85. orionis/luminate/foundation/config/mail/entities/mail.py +56 -0
  86. orionis/luminate/foundation/config/mail/entities/mailers.py +54 -0
  87. orionis/luminate/foundation/config/mail/entities/smtp.py +104 -0
  88. orionis/luminate/foundation/config/queue/entities/brokers.py +55 -0
  89. orionis/luminate/foundation/config/queue/entities/database.py +107 -0
  90. orionis/luminate/foundation/config/queue/entities/queue.py +47 -0
  91. orionis/luminate/foundation/config/queue/enums/strategy.py +15 -0
  92. orionis/luminate/foundation/config/roots/paths.py +446 -0
  93. orionis/luminate/foundation/config/session/entities/session.py +147 -0
  94. orionis/luminate/foundation/config/session/enums/same_site_policy.py +14 -0
  95. orionis/luminate/foundation/config/session/helpers/secret_key.py +16 -0
  96. orionis/luminate/foundation/config/startup.py +203 -0
  97. orionis/luminate/foundation/config/testing/entities/__init__.py +0 -0
  98. orionis/luminate/{config → foundation/config/testing}/entities/testing.py +36 -20
  99. orionis/luminate/foundation/config/testing/enums/__init__.py +0 -0
  100. orionis/luminate/foundation/config/testing/enums/test_mode.py +12 -0
  101. orionis/luminate/patterns/__init__.py +0 -4
  102. orionis/luminate/patterns/singleton/__init__.py +0 -10
  103. orionis/luminate/services/asynchrony/__init__.py +0 -0
  104. orionis/luminate/services/asynchrony/async_io.py +31 -0
  105. orionis/luminate/services/environment/__init__.py +0 -10
  106. orionis/luminate/services/environment/contracts/__init__.py +0 -5
  107. orionis/luminate/services/environment/contracts/env.py +0 -11
  108. orionis/luminate/services/environment/dot_env.py +87 -163
  109. orionis/luminate/services/environment/env.py +0 -11
  110. orionis/luminate/services/introspection/__init__.py +0 -0
  111. orionis/luminate/services/introspection/abstracts/__init__.py +0 -0
  112. orionis/luminate/services/introspection/abstracts/entities/__init__.py +0 -0
  113. orionis/luminate/services/introspection/abstracts/entities/abstract_class_attributes.py +37 -0
  114. orionis/luminate/{support → services}/introspection/abstracts/reflect_abstract.py +1 -1
  115. orionis/luminate/services/introspection/dependencies/__init__.py +0 -0
  116. orionis/luminate/services/introspection/dependencies/contracts/__init__.py +0 -0
  117. orionis/luminate/{support → services}/introspection/dependencies/contracts/reflect_dependencies.py +2 -2
  118. orionis/luminate/services/introspection/dependencies/entities/__init__.py +0 -0
  119. orionis/luminate/services/introspection/dependencies/entities/class_dependencies.py +41 -0
  120. orionis/luminate/services/introspection/dependencies/entities/method_dependencies.py +42 -0
  121. orionis/luminate/services/introspection/dependencies/entities/resolved_dependencies.py +49 -0
  122. orionis/luminate/{support → services}/introspection/dependencies/reflect_dependencies.py +4 -4
  123. orionis/luminate/services/parsers/__init__.py +0 -0
  124. orionis/luminate/services/parsers/contracts/__init__.py +0 -0
  125. orionis/luminate/{support/parsers/exception_parser.py → services/parsers/exception.py} +1 -1
  126. orionis/luminate/services/parsers/serializer.py +15 -0
  127. orionis/luminate/services/paths/__init__.py +0 -9
  128. orionis/luminate/services/paths/resolver.py +1 -1
  129. orionis/luminate/services/standard/__init__.py +0 -0
  130. orionis/luminate/services/standard/contracts/__init__.py +0 -0
  131. orionis/luminate/{support → services}/standard/std.py +1 -1
  132. orionis/luminate/services/system/__init__.py +0 -0
  133. orionis/luminate/services/system/contracts/__init__.py +0 -0
  134. orionis/luminate/services/system/contracts/imports.py +31 -0
  135. orionis/luminate/services/system/contracts/workers.py +18 -0
  136. orionis/luminate/services/system/imports.py +124 -0
  137. orionis/luminate/services/system/runtime_imports.py +70 -0
  138. orionis/luminate/services/{workers/maximum_workers.py → system/workers.py} +2 -1
  139. orionis/luminate/services/wrapper/__init__.py +0 -0
  140. orionis/luminate/services/wrapper/dicts/__init__.py +0 -0
  141. orionis/luminate/services/wrapper/dicts/dot_dict.py +115 -0
  142. orionis/luminate/support/introspection/__init__.py +0 -5
  143. orionis/luminate/support/introspection/container_integrity.py +2 -2
  144. orionis/luminate/support/introspection/instances/__init__.py +0 -5
  145. orionis/luminate/support/introspection/reflection.py +1 -1
  146. orionis/luminate/test/__init__.py +0 -23
  147. orionis/luminate/test/cases/test_async.py +41 -9
  148. orionis/luminate/test/cases/test_case.py +27 -13
  149. orionis/luminate/test/cases/test_sync.py +28 -6
  150. orionis/luminate/test/output/contracts/{test_std_out.py → dumper.py} +2 -1
  151. orionis/luminate/test/output/{test_std_out.py → dumper.py} +7 -4
  152. orionis/luminate/test/suites/__init__.py +0 -0
  153. orionis/luminate/test/suites/contracts/__init__.py +0 -0
  154. orionis/luminate/test/suites/contracts/test_suite.py +23 -0
  155. orionis/luminate/test/suites/test_suite.py +101 -0
  156. orionis/luminate/test/{core → suites}/test_unit.py +16 -8
  157. orionis/unittesting.py +43 -0
  158. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/METADATA +19 -3
  159. orionis-0.266.0.dist-info/RECORD +440 -0
  160. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info}/WHEEL +1 -1
  161. orionis-0.266.0.dist-info/entry_points.txt +2 -0
  162. orionis-0.266.0.dist-info/zip-safe +1 -0
  163. tests/example/test_example.py +1 -1
  164. tests/foundation/__init__.py +0 -0
  165. tests/foundation/config/__init__.py +0 -0
  166. tests/foundation/config/app/__init__.py +0 -0
  167. tests/foundation/config/app/test_app.py +140 -0
  168. tests/foundation/config/auth/__init__.py +0 -0
  169. tests/{config → foundation/config/auth}/test_auth.py +6 -3
  170. tests/foundation/config/cache/__init__.py +0 -0
  171. tests/foundation/config/cache/test_cache.py +98 -0
  172. tests/foundation/config/cache/test_cache_file.py +78 -0
  173. tests/foundation/config/cache/test_cache_stores.py +88 -0
  174. tests/foundation/config/cors/__init__.py +0 -0
  175. tests/foundation/config/cors/test_cors.py +121 -0
  176. tests/foundation/config/database/__init__.py +0 -0
  177. tests/foundation/config/database/test_database.py +108 -0
  178. tests/foundation/config/database/test_database_connections.py +129 -0
  179. tests/foundation/config/database/test_database_mysql.py +231 -0
  180. tests/foundation/config/database/test_database_oracle.py +204 -0
  181. tests/foundation/config/database/test_database_pgsql.py +187 -0
  182. tests/foundation/config/database/test_database_sqlite.py +153 -0
  183. tests/foundation/config/exceptions/__init__.py +0 -0
  184. tests/foundation/config/exceptions/test_exceptions_integrity.py +83 -0
  185. tests/foundation/config/filesystems/__init__.py +0 -0
  186. tests/foundation/config/filesystems/test_filesystems.py +110 -0
  187. tests/foundation/config/filesystems/test_filesystems_aws.py +133 -0
  188. tests/foundation/config/filesystems/test_filesystems_disks.py +114 -0
  189. tests/foundation/config/filesystems/test_filesystems_local.py +95 -0
  190. tests/foundation/config/filesystems/test_filesystems_public.py +120 -0
  191. tests/foundation/config/logging/__init__.py +0 -0
  192. tests/foundation/config/logging/test_logging.py +48 -0
  193. tests/foundation/config/logging/test_logging_channels.py +157 -0
  194. tests/foundation/config/logging/test_logging_chunked.py +166 -0
  195. tests/foundation/config/logging/test_logging_daily.py +153 -0
  196. tests/foundation/config/logging/test_logging_hourly.py +131 -0
  197. tests/foundation/config/logging/test_logging_monthly.py +133 -0
  198. tests/foundation/config/logging/test_logging_stack.py +124 -0
  199. tests/foundation/config/logging/test_logging_weekly.py +133 -0
  200. tests/foundation/config/mail/__init__.py +0 -0
  201. tests/foundation/config/mail/test_mail.py +73 -0
  202. tests/foundation/config/mail/test_mail_file.py +61 -0
  203. tests/foundation/config/mail/test_mail_mailers.py +58 -0
  204. tests/foundation/config/mail/test_mail_smtp.py +102 -0
  205. tests/foundation/config/queue/__init__.py +0 -0
  206. tests/foundation/config/queue/test_queue.py +58 -0
  207. tests/foundation/config/queue/test_queue_brokers.py +67 -0
  208. tests/foundation/config/queue/test_queue_database.py +95 -0
  209. tests/foundation/config/root/__init__.py +0 -0
  210. tests/foundation/config/root/test_root_paths.py +134 -0
  211. tests/foundation/config/session/__init__.py +0 -0
  212. tests/foundation/config/session/test_session.py +138 -0
  213. tests/foundation/config/startup/__init__.py +0 -0
  214. tests/foundation/config/startup/test_config_startup.py +134 -0
  215. tests/foundation/config/testing/__init__.py +0 -0
  216. tests/foundation/config/testing/test_testing.py +167 -0
  217. tests/patterns/singleton/test_singleton.py +2 -2
  218. tests/services/asynchrony/__init__.py +0 -0
  219. tests/{support/async_io/test_async_coroutine.py → services/asynchrony/test_async_io.py} +6 -5
  220. tests/services/environment/test_env.py +155 -33
  221. tests/services/inspection/__init__.py +0 -0
  222. tests/services/inspection/dependencies/__init__.py +0 -0
  223. tests/services/inspection/dependencies/mocks/__init__.py +0 -0
  224. tests/services/inspection/dependencies/mocks/mock_user.py +30 -0
  225. tests/services/inspection/dependencies/mocks/mock_user_controller.py +27 -0
  226. tests/services/inspection/dependencies/mocks/mock_users_permissions.py +41 -0
  227. tests/services/inspection/dependencies/test_reflect_dependencies.py +94 -0
  228. tests/services/parsers/__init__.py +0 -0
  229. tests/services/parsers/mocks/__init__.py +0 -0
  230. tests/services/parsers/mocks/mock_custom_error.py +15 -0
  231. tests/{support → services}/parsers/test_exception_parser.py +8 -8
  232. tests/services/path/__init__.py +0 -0
  233. tests/services/path/test_resolver.py +73 -0
  234. tests/services/standard/__init__.py +0 -0
  235. tests/services/standard/test_std.py +127 -0
  236. tests/services/wrapper/__init__.py +0 -0
  237. tests/services/wrapper/test_wrapper_doc_dict.py +129 -0
  238. tests/testing/__init__.py +0 -0
  239. tests/testing/test_testing_result.py +92 -0
  240. tests/testing/test_testing_unit.py +138 -0
  241. orionis/luminate/config/app/__init__.py +0 -10
  242. orionis/luminate/config/auth/__init__.py +0 -7
  243. orionis/luminate/config/cache/__init__.py +0 -9
  244. orionis/luminate/config/cache/entities/cache.py +0 -58
  245. orionis/luminate/config/cache/entities/file.py +0 -29
  246. orionis/luminate/config/cache/entities/stores.py +0 -35
  247. orionis/luminate/config/entities/cors.py +0 -58
  248. orionis/luminate/config/entities/database.py +0 -204
  249. orionis/luminate/config/entities/filesystems.py +0 -98
  250. orionis/luminate/config/entities/logging.py +0 -157
  251. orionis/luminate/config/entities/mail.py +0 -76
  252. orionis/luminate/config/entities/queue.py +0 -62
  253. orionis/luminate/config/entities/session.py +0 -58
  254. orionis/luminate/providers/files/paths_provider.py +0 -20
  255. orionis/luminate/services/workers/__init__.py +0 -10
  256. orionis/luminate/support/adapters/dot_dict.py +0 -29
  257. orionis/luminate/support/asynchrony/async_io.py +0 -40
  258. orionis/luminate/support/asynchrony/contracts/async_coroutine.py +0 -26
  259. orionis/luminate/support/introspection/abstracts/entities/abstract_class_attributes.py +0 -11
  260. orionis/luminate/support/introspection/dependencies/__init__.py +0 -5
  261. orionis/luminate/support/introspection/dependencies/entities/class_dependencies.py +0 -11
  262. orionis/luminate/support/introspection/dependencies/entities/method_dependencies.py +0 -11
  263. orionis/luminate/support/introspection/dependencies/entities/resolved_dependencies.py +0 -12
  264. orionis/luminate/support/paths/contracts/resolver.py +0 -67
  265. orionis/luminate/support/paths/resolver.py +0 -83
  266. orionis/luminate/test/core/contracts/test_suite.py +0 -30
  267. orionis/luminate/test/core/test_suite.py +0 -93
  268. orionis-0.253.0.dist-info/RECORD +0 -318
  269. orionis-0.253.0.dist-info/entry_points.txt +0 -2
  270. tests/config/test_app.py +0 -122
  271. tests/config/test_cache.py +0 -20
  272. tests/support/adapters/fakes/fake_dict.py +0 -15
  273. tests/support/adapters/test_doct_dict.py +0 -21
  274. tests/support/inspection/fakes/fake_reflect_dependencies.py +0 -25
  275. tests/support/inspection/test_reflect_dependencies.py +0 -67
  276. tests/support/parsers/fakes/fake_custom_error.py +0 -27
  277. tests/support/path/test_resolver.py +0 -33
  278. tests/support/standard/test_std.py +0 -62
  279. /orionis/{console.py → clinstall.py} +0 -0
  280. /orionis/luminate/{config → _container}/__init__.py +0 -0
  281. /orionis/luminate/{container → _container}/exception.py +0 -0
  282. /orionis/luminate/{container → _container}/lifetimes.py +0 -0
  283. /orionis/luminate/{config/app/entities → _contracts}/__init__.py +0 -0
  284. /orionis/luminate/{config/app/enums → _contracts/config}/__init__.py +0 -0
  285. /orionis/luminate/{config/contracts → _contracts/config}/config.py +0 -0
  286. /orionis/luminate/{config/auth/entities → _contracts/console}/__init__.py +0 -0
  287. /orionis/luminate/{config/cache/entities → _contracts/console/base}/__init__.py +0 -0
  288. /orionis/luminate/{contracts → _contracts}/console/base/command.py +0 -0
  289. /orionis/luminate/{contracts → _contracts}/console/command_filter.py +0 -0
  290. /orionis/luminate/{contracts → _contracts}/console/kernel.py +0 -0
  291. /orionis/luminate/{config/cache/enums → _contracts/console/output}/__init__.py +0 -0
  292. /orionis/luminate/{contracts → _contracts}/console/output/console.py +0 -0
  293. /orionis/luminate/{contracts → _contracts}/console/output/executor.py +0 -0
  294. /orionis/luminate/{contracts → _contracts}/console/output/progress_bar.py +0 -0
  295. /orionis/luminate/{contracts → _contracts}/console/parser.py +0 -0
  296. /orionis/luminate/{contracts → _contracts}/container/container.py +0 -0
  297. /orionis/luminate/{contracts → _contracts}/container/container_integrity.py +0 -0
  298. /orionis/luminate/{config/contracts → _contracts/facades}/__init__.py +0 -0
  299. /orionis/luminate/{config/exceptions → _contracts/facades/commands}/__init__.py +0 -0
  300. /orionis/luminate/{contracts → _contracts}/facades/commands/commands_facade.py +0 -0
  301. /orionis/luminate/{container → _contracts/facades/config}/__init__.py +0 -0
  302. /orionis/luminate/{contracts → _contracts}/facades/config/config_facade.py +0 -0
  303. /orionis/luminate/{contracts → _contracts/facades/environment}/__init__.py +0 -0
  304. /orionis/luminate/{contracts → _contracts}/facades/environment/environment_facade.py +0 -0
  305. /orionis/luminate/{contracts/config → _contracts/facades/files}/__init__.py +0 -0
  306. /orionis/luminate/{contracts → _contracts}/facades/files/path_facade.py +0 -0
  307. /orionis/luminate/{contracts/console → _contracts/facades/log}/__init__.py +0 -0
  308. /orionis/luminate/{contracts → _contracts}/facades/log/log_facade.py +0 -0
  309. /orionis/luminate/{contracts/console/base → _contracts/facades/tests}/__init__.py +0 -0
  310. /orionis/luminate/{contracts → _contracts}/facades/tests/tests_facade.py +0 -0
  311. /orionis/luminate/{contracts/console/output → _contracts/foundation}/__init__.py +0 -0
  312. /orionis/luminate/{contracts → _contracts}/foundation/bootstraper.py +0 -0
  313. /orionis/luminate/{contracts/facades → _contracts/foundation/config}/__init__.py +0 -0
  314. /orionis/luminate/{contracts → _contracts}/foundation/config/config_bootstrapper.py +0 -0
  315. /orionis/luminate/{contracts/facades/commands → _contracts/foundation/console}/__init__.py +0 -0
  316. /orionis/luminate/{contracts → _contracts}/foundation/console/command_bootstrapper.py +0 -0
  317. /orionis/luminate/{contracts/facades/config → _contracts/foundation/environment}/__init__.py +0 -0
  318. /orionis/luminate/{contracts → _contracts}/foundation/environment/environment_bootstrapper.py +0 -0
  319. /orionis/luminate/{contracts/facades/environment → _contracts/foundation/providers}/__init__.py +0 -0
  320. /orionis/luminate/{contracts/facades/files → _contracts/providers}/__init__.py +0 -0
  321. /orionis/luminate/{contracts/facades/log → _contracts/services}/__init__.py +0 -0
  322. /orionis/luminate/{contracts/facades/tests → _contracts/services/commands}/__init__.py +0 -0
  323. /orionis/luminate/{contracts → _contracts}/services/commands/reactor_commands_service.py +0 -0
  324. /orionis/luminate/{contracts → _contracts}/services/commands/schedule_service.py +0 -0
  325. /orionis/luminate/{contracts/foundation → _contracts/services/config}/__init__.py +0 -0
  326. /orionis/luminate/{contracts → _contracts}/services/config/config_service.py +0 -0
  327. /orionis/luminate/{contracts/foundation/config → _contracts/services/environment}/__init__.py +0 -0
  328. /orionis/luminate/{contracts → _contracts}/services/environment/environment_service.py +0 -0
  329. /orionis/luminate/{contracts/foundation/console → _contracts/services/files}/__init__.py +0 -0
  330. /orionis/luminate/{contracts → _contracts}/services/files/path_resolver_service.py +0 -0
  331. /orionis/luminate/{contracts/foundation/environment → _contracts/services/log}/__init__.py +0 -0
  332. /orionis/luminate/{contracts → _contracts}/services/log/log_service.py +0 -0
  333. /orionis/luminate/{contracts → _contracts}/support/exception_parse.py +0 -0
  334. /orionis/luminate/{contracts → _contracts}/support/reflection.py +0 -0
  335. /orionis/luminate/{contracts/foundation/providers → _facades}/__init__.py +0 -0
  336. /orionis/luminate/{contracts/providers → _facades/commands}/__init__.py +0 -0
  337. /orionis/luminate/{contracts/services → _facades/config}/__init__.py +0 -0
  338. /orionis/luminate/{contracts/services/commands → _facades/environment}/__init__.py +0 -0
  339. /orionis/luminate/{contracts/services/config → _facades/files}/__init__.py +0 -0
  340. /orionis/luminate/{contracts/services/environment → _facades/log}/__init__.py +0 -0
  341. /orionis/luminate/{contracts/services/files → _foundation}/__init__.py +0 -0
  342. /orionis/luminate/{contracts/services/log → _foundation/console}/__init__.py +0 -0
  343. /orionis/luminate/{facades → _foundation/environment}/__init__.py +0 -0
  344. /orionis/luminate/{facades/commands → _foundation/exceptions}/__init__.py +0 -0
  345. /orionis/luminate/{foundation → _foundation}/exceptions/exception_bootstrapper.py +0 -0
  346. /orionis/luminate/{foundation → _foundation}/exceptions/exception_providers.py +0 -0
  347. /orionis/luminate/{facades → _foundation/foundation}/config/__init__.py +0 -0
  348. /orionis/luminate/{facades/environment → _foundation/providers}/__init__.py +0 -0
  349. /orionis/luminate/{facades/files → _providers}/__init__.py +0 -0
  350. /orionis/luminate/{facades/log → _providers/commands}/__init__.py +0 -0
  351. /orionis/luminate/{foundation/console → _providers/config}/__init__.py +0 -0
  352. /orionis/luminate/{foundation → _providers}/environment/__init__.py +0 -0
  353. /orionis/luminate/{foundation/exceptions → _providers/files}/__init__.py +0 -0
  354. /orionis/luminate/{foundation/providers → _providers/log}/__init__.py +0 -0
  355. /orionis/luminate/{providers → _services}/__init__.py +0 -0
  356. /orionis/luminate/{providers → _services}/commands/__init__.py +0 -0
  357. /orionis/luminate/{providers → _services}/config/__init__.py +0 -0
  358. /orionis/luminate/{providers/environment → _services/log}/__init__.py +0 -0
  359. /orionis/luminate/{providers/files → foundation/config/app}/__init__.py +0 -0
  360. /orionis/luminate/{providers/log → foundation/config/app/entities}/__init__.py +0 -0
  361. /orionis/luminate/{services_ → foundation/config/app/enums}/__init__.py +0 -0
  362. /orionis/luminate/{config → foundation/config}/app/enums/ciphers.py +0 -0
  363. /orionis/luminate/{config → foundation/config}/app/enums/environments.py +0 -0
  364. /orionis/luminate/{services_/commands → foundation/config/auth}/__init__.py +0 -0
  365. /orionis/luminate/{services_/config → foundation/config/auth/entities}/__init__.py +0 -0
  366. /orionis/luminate/{services_/log → foundation/config/cache}/__init__.py +0 -0
  367. /orionis/luminate/{support/adapters → foundation/config/cache/entities}/__init__.py +0 -0
  368. /orionis/luminate/{support/asynchrony → foundation/config/cache/enums}/__init__.py +0 -0
  369. /orionis/luminate/{config → foundation/config}/cache/enums/drivers.py +0 -0
  370. /orionis/luminate/{support/asynchrony → foundation/config}/contracts/__init__.py +0 -0
  371. /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/__init__.py +0 -0
  372. /orionis/luminate/{support/introspection/abstracts → foundation/config/cors}/entities/__init__.py +0 -0
  373. /orionis/luminate/{support/introspection/dependencies/contracts → foundation/config/database}/__init__.py +0 -0
  374. /orionis/luminate/{support/introspection/dependencies → foundation/config/database}/entities/__init__.py +0 -0
  375. /orionis/luminate/{support/parsers → foundation/config/database/enums}/__init__.py +0 -0
  376. /orionis/luminate/{support/parsers/contracts → foundation/config/exceptions}/__init__.py +0 -0
  377. /orionis/luminate/{config/exceptions/integrity_exception.py → foundation/config/exceptions/integrity.py} +0 -0
  378. /orionis/luminate/{support/paths → foundation/config/filesystems}/__init__.py +0 -0
  379. /orionis/luminate/{support/paths/contracts → foundation/config/filesystems/entitites}/__init__.py +0 -0
  380. /orionis/luminate/{support/standard → foundation/config/logging}/__init__.py +0 -0
  381. /orionis/luminate/{support/standard/contracts → foundation/config/logging/entities}/__init__.py +0 -0
  382. /orionis/luminate/{test/core → foundation/config/logging/enums}/__init__.py +0 -0
  383. /orionis/luminate/{test/core/contracts → foundation/config/mail}/__init__.py +0 -0
  384. {tests/config → orionis/luminate/foundation/config/mail/entities}/__init__.py +0 -0
  385. {tests/support/adapters → orionis/luminate/foundation/config/queue}/__init__.py +0 -0
  386. {tests/support/adapters/fakes → orionis/luminate/foundation/config/queue/entities}/__init__.py +0 -0
  387. {tests/support/async_io → orionis/luminate/foundation/config/roots}/__init__.py +0 -0
  388. {tests/support/parsers → orionis/luminate/foundation/config/session}/__init__.py +0 -0
  389. {tests/support/parsers/fakes → orionis/luminate/foundation/config/session/entities}/__init__.py +0 -0
  390. {tests/support/path → orionis/luminate/foundation/config/session/enums}/__init__.py +0 -0
  391. {tests/support/standard → orionis/luminate/foundation/config/testing}/__init__.py +0 -0
  392. /orionis/luminate/{support → services}/parsers/contracts/exception_parser.py +0 -0
  393. /orionis/luminate/{support → services}/standard/contracts/std.py +0 -0
  394. /orionis/luminate/test/exceptions/{test_exception.py → test_failure_exception.py} +0 -0
  395. /orionis/luminate/test/{core → suites}/contracts/test_unit.py +0 -0
  396. {orionis-0.253.0.dist-info → orionis-0.266.0.dist-info/licenses}/LICENCE +0 -0
  397. {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")