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,187 @@
1
+ from orionis.luminate.foundation.config.database.entities.pgsql import PGSQL
2
+ from orionis.luminate.foundation.config.database.enums.pgsql_charsets import PGSQLCharset
3
+ from orionis.luminate.foundation.config.database.enums.pgsql_mode import PGSQLSSLMode
4
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
5
+ from orionis.unittesting import TestCase
6
+
7
+ class TestConfigPGSQL(TestCase):
8
+ """
9
+ Test cases for the PGSQL database configuration class.
10
+ """
11
+
12
+ async def testDefaultValues(self):
13
+ """
14
+ Test that PGSQL instance is created with correct default values.
15
+ Verifies all default values match expected defaults from class definition.
16
+ """
17
+ pgsql = PGSQL()
18
+ self.assertEqual(pgsql.driver, 'pgsql')
19
+ self.assertEqual(pgsql.host, '127.0.0.1')
20
+ self.assertEqual(pgsql.port, '5432')
21
+ self.assertEqual(pgsql.database, 'orionis')
22
+ self.assertEqual(pgsql.username, 'root')
23
+ self.assertEqual(pgsql.password, '')
24
+ self.assertEqual(pgsql.charset, PGSQLCharset.UTF8.value)
25
+ self.assertEqual(pgsql.prefix, '')
26
+ self.assertTrue(pgsql.prefix_indexes)
27
+ self.assertEqual(pgsql.search_path, 'public')
28
+ self.assertEqual(pgsql.sslmode, PGSQLSSLMode.PREFER.value)
29
+
30
+ async def testDriverValidation(self):
31
+ """
32
+ Test driver attribute validation.
33
+ Verifies that empty or non-string drivers raise exceptions.
34
+ """
35
+ with self.assertRaises(OrionisIntegrityException):
36
+ PGSQL(driver='')
37
+ with self.assertRaises(OrionisIntegrityException):
38
+ PGSQL(driver=123)
39
+
40
+ async def testHostValidation(self):
41
+ """
42
+ Test host attribute validation.
43
+ Verifies that empty or non-string hosts raise exceptions.
44
+ """
45
+ with self.assertRaises(OrionisIntegrityException):
46
+ PGSQL(host='')
47
+ with self.assertRaises(OrionisIntegrityException):
48
+ PGSQL(host=123)
49
+
50
+ async def testPortValidation(self):
51
+ """
52
+ Test port attribute validation.
53
+ Verifies that non-numeric string ports raise exceptions.
54
+ """
55
+ with self.assertRaises(OrionisIntegrityException):
56
+ PGSQL(port='abc')
57
+ with self.assertRaises(OrionisIntegrityException):
58
+ PGSQL(port=5432) # Should be string
59
+
60
+ async def testDatabaseValidation(self):
61
+ """
62
+ Test database attribute validation.
63
+ Verifies that empty or non-string database names raise exceptions.
64
+ """
65
+ with self.assertRaises(OrionisIntegrityException):
66
+ PGSQL(database='')
67
+ with self.assertRaises(OrionisIntegrityException):
68
+ PGSQL(database=123)
69
+
70
+ async def testUsernameValidation(self):
71
+ """
72
+ Test username attribute validation.
73
+ Verifies that empty or non-string usernames raise exceptions.
74
+ """
75
+ with self.assertRaises(OrionisIntegrityException):
76
+ PGSQL(username='')
77
+ with self.assertRaises(OrionisIntegrityException):
78
+ PGSQL(username=123)
79
+
80
+ async def testPasswordValidation(self):
81
+ """
82
+ Test password attribute validation.
83
+ Verifies that non-string passwords raise exceptions.
84
+ """
85
+ with self.assertRaises(OrionisIntegrityException):
86
+ PGSQL(password=123)
87
+
88
+ async def testCharsetValidation(self):
89
+ """
90
+ Test charset attribute validation.
91
+ Verifies enum conversion and invalid value handling.
92
+ """
93
+ # Test string conversion
94
+ pgsql = PGSQL(charset='UTF8')
95
+ self.assertEqual(pgsql.charset, PGSQLCharset.UTF8.value)
96
+
97
+ # Test enum assignment
98
+ pgsql = PGSQL(charset=PGSQLCharset.LATIN1)
99
+ self.assertEqual(pgsql.charset, PGSQLCharset.LATIN1.value)
100
+
101
+ # Test invalid value
102
+ with self.assertRaises(OrionisIntegrityException):
103
+ PGSQL(charset='INVALID')
104
+
105
+ async def testPrefixIndexesValidation(self):
106
+ """
107
+ Test prefix_indexes attribute validation.
108
+ Verifies that non-boolean values raise exceptions.
109
+ """
110
+ with self.assertRaises(OrionisIntegrityException):
111
+ PGSQL(prefix_indexes='true')
112
+ with self.assertRaises(OrionisIntegrityException):
113
+ PGSQL(prefix_indexes=1)
114
+
115
+ async def testSearchPathValidation(self):
116
+ """
117
+ Test search_path attribute validation.
118
+ Verifies that empty or non-string search paths raise exceptions.
119
+ """
120
+ with self.assertRaises(OrionisIntegrityException):
121
+ PGSQL(search_path='')
122
+ with self.assertRaises(OrionisIntegrityException):
123
+ PGSQL(search_path=123)
124
+
125
+ async def testSSLModeValidation(self):
126
+ """
127
+ Test sslmode attribute validation.
128
+ Verifies enum conversion and invalid value handling.
129
+ """
130
+ # Test string conversion
131
+ pgsql = PGSQL(sslmode='REQUIRE')
132
+ self.assertEqual(pgsql.sslmode, PGSQLSSLMode.REQUIRE.value)
133
+
134
+ # Test enum assignment
135
+ pgsql = PGSQL(sslmode=PGSQLSSLMode.DISABLE)
136
+ self.assertEqual(pgsql.sslmode, PGSQLSSLMode.DISABLE.value)
137
+
138
+ # Test invalid value
139
+ with self.assertRaises(OrionisIntegrityException):
140
+ PGSQL(sslmode='INVALID')
141
+
142
+ async def testToDictMethod(self):
143
+ """
144
+ Test that toDict returns proper dictionary representation.
145
+ Verifies all attributes are correctly included in dictionary.
146
+ """
147
+ pgsql = PGSQL()
148
+ pgsql_dict = pgsql.toDict()
149
+ self.assertEqual(pgsql_dict['driver'], 'pgsql')
150
+ self.assertEqual(pgsql_dict['host'], '127.0.0.1')
151
+ self.assertEqual(pgsql_dict['port'], '5432')
152
+ self.assertEqual(pgsql_dict['database'], 'orionis')
153
+ self.assertEqual(pgsql_dict['username'], 'root')
154
+ self.assertEqual(pgsql_dict['password'], '')
155
+ self.assertEqual(pgsql_dict['charset'], PGSQLCharset.UTF8.value)
156
+ self.assertEqual(pgsql_dict['prefix'], '')
157
+ self.assertTrue(pgsql_dict['prefix_indexes'])
158
+ self.assertEqual(pgsql_dict['search_path'], 'public')
159
+ self.assertEqual(pgsql_dict['sslmode'], PGSQLSSLMode.PREFER.value)
160
+
161
+ async def testCustomValues(self):
162
+ """
163
+ Test that custom values are properly stored and validated.
164
+ Verifies custom configuration values are correctly handled.
165
+ """
166
+ custom_pgsql = PGSQL(
167
+ host='db.example.com',
168
+ port='6432',
169
+ database='custom_db',
170
+ username='admin',
171
+ password='secure123',
172
+ charset='LATIN1',
173
+ prefix='app_',
174
+ prefix_indexes=False,
175
+ search_path='app_schema',
176
+ sslmode='VERIFY_FULL'
177
+ )
178
+ self.assertEqual(custom_pgsql.host, 'db.example.com')
179
+ self.assertEqual(custom_pgsql.port, '6432')
180
+ self.assertEqual(custom_pgsql.database, 'custom_db')
181
+ self.assertEqual(custom_pgsql.username, 'admin')
182
+ self.assertEqual(custom_pgsql.password, 'secure123')
183
+ self.assertEqual(custom_pgsql.charset, PGSQLCharset.LATIN1.value)
184
+ self.assertEqual(custom_pgsql.prefix, 'app_')
185
+ self.assertFalse(custom_pgsql.prefix_indexes)
186
+ self.assertEqual(custom_pgsql.search_path, 'app_schema')
187
+ self.assertEqual(custom_pgsql.sslmode, PGSQLSSLMode.VERIFY_FULL.value)
@@ -0,0 +1,153 @@
1
+ from orionis.luminate.foundation.config.database.entities.sqlite import SQLite
2
+ from orionis.luminate.foundation.config.database.enums.sqlite_foreign_key import SQLiteForeignKey
3
+ from orionis.luminate.foundation.config.database.enums.sqlite_journal import SQLiteJournalMode
4
+ from orionis.luminate.foundation.config.database.enums.sqlite_synchronous import SQLiteSynchronous
5
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
6
+ from orionis.unittesting import TestCase
7
+
8
+ class TestConfigSQLite(TestCase):
9
+ """
10
+ Test cases for the SQLite database configuration class.
11
+ """
12
+
13
+ async def testDefaultValues(self):
14
+ """
15
+ Test that SQLite instance is created with correct default values.
16
+ Verifies all default values match expected defaults from class definition.
17
+ """
18
+ sqlite = SQLite()
19
+ self.assertEqual(sqlite.driver, 'sqlite')
20
+ self.assertTrue(sqlite.url.startswith('sqlite:///'))
21
+ self.assertEqual(sqlite.database, 'database.sqlite')
22
+ self.assertEqual(sqlite.prefix, '')
23
+ self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.OFF.value)
24
+ self.assertEqual(sqlite.busy_timeout, 5000)
25
+ self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.DELETE.value)
26
+ self.assertEqual(sqlite.synchronous, SQLiteSynchronous.NORMAL.value)
27
+
28
+ async def testDriverValidation(self):
29
+ """
30
+ Test driver attribute validation.
31
+ Verifies that empty or non-string drivers raise exceptions.
32
+ """
33
+ with self.assertRaises(OrionisIntegrityException):
34
+ SQLite(driver='')
35
+ with self.assertRaises(OrionisIntegrityException):
36
+ SQLite(driver=123)
37
+
38
+ async def testUrlValidation(self):
39
+ """
40
+ Test URL attribute validation.
41
+ Verifies that empty or non-string URLs raise exceptions.
42
+ """
43
+ with self.assertRaises(OrionisIntegrityException):
44
+ SQLite(url='')
45
+ with self.assertRaises(OrionisIntegrityException):
46
+ SQLite(url=123)
47
+
48
+ async def testDatabaseValidation(self):
49
+ """
50
+ Test database attribute validation.
51
+ Verifies that empty or non-string database paths raise exceptions.
52
+ """
53
+ with self.assertRaises(OrionisIntegrityException):
54
+ SQLite(database='')
55
+ with self.assertRaises(OrionisIntegrityException):
56
+ SQLite(database=123)
57
+
58
+ async def testForeignKeyConstraintsValidation(self):
59
+ """
60
+ Test foreign_key_constraints attribute validation.
61
+ Verifies enum conversion and invalid value handling.
62
+ """
63
+ # Test string conversion
64
+ sqlite = SQLite(foreign_key_constraints='ON')
65
+ self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.ON.value)
66
+
67
+ # Test enum assignment
68
+ sqlite = SQLite(foreign_key_constraints=SQLiteForeignKey.OFF)
69
+ self.assertEqual(sqlite.foreign_key_constraints, SQLiteForeignKey.OFF.value)
70
+
71
+ # Test invalid value
72
+ with self.assertRaises(OrionisIntegrityException):
73
+ SQLite(foreign_key_constraints='INVALID')
74
+
75
+ async def testBusyTimeoutValidation(self):
76
+ """
77
+ Test busy_timeout attribute validation.
78
+ Verifies non-negative integer requirement.
79
+ """
80
+ with self.assertRaises(OrionisIntegrityException):
81
+ SQLite(busy_timeout=-1)
82
+ with self.assertRaises(OrionisIntegrityException):
83
+ SQLite(busy_timeout='invalid')
84
+
85
+ async def testJournalModeValidation(self):
86
+ """
87
+ Test journal_mode attribute validation.
88
+ Verifies enum conversion and invalid value handling.
89
+ """
90
+ # Test string conversion
91
+ sqlite = SQLite(journal_mode='WAL')
92
+ self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.WAL.value)
93
+
94
+ # Test enum assignment
95
+ sqlite = SQLite(journal_mode=SQLiteJournalMode.TRUNCATE)
96
+ self.assertEqual(sqlite.journal_mode, SQLiteJournalMode.TRUNCATE.value)
97
+
98
+ # Test invalid value
99
+ with self.assertRaises(OrionisIntegrityException):
100
+ SQLite(journal_mode='INVALID')
101
+
102
+ async def testSynchronousValidation(self):
103
+ """
104
+ Test synchronous attribute validation.
105
+ Verifies enum conversion and invalid value handling.
106
+ """
107
+ # Test string conversion
108
+ sqlite = SQLite(synchronous='FULL')
109
+ self.assertEqual(sqlite.synchronous, SQLiteSynchronous.FULL.value)
110
+
111
+ # Test enum assignment
112
+ sqlite = SQLite(synchronous=SQLiteSynchronous.OFF)
113
+ self.assertEqual(sqlite.synchronous, SQLiteSynchronous.OFF.value)
114
+
115
+ # Test invalid value
116
+ with self.assertRaises(OrionisIntegrityException):
117
+ SQLite(synchronous='INVALID')
118
+
119
+ async def testToDictMethod(self):
120
+ """
121
+ Test that toDict returns proper dictionary representation.
122
+ Verifies all attributes are correctly included in dictionary.
123
+ """
124
+ sqlite = SQLite()
125
+ sqlite_dict = sqlite.toDict()
126
+ self.assertEqual(sqlite_dict['driver'], 'sqlite')
127
+ self.assertTrue(sqlite_dict['url'].startswith('sqlite:///'))
128
+ self.assertEqual(sqlite_dict['database'], 'database.sqlite')
129
+ self.assertEqual(sqlite_dict['prefix'], '')
130
+ self.assertEqual(sqlite_dict['foreign_key_constraints'], SQLiteForeignKey.OFF.value)
131
+ self.assertEqual(sqlite_dict['busy_timeout'], 5000)
132
+ self.assertEqual(sqlite_dict['journal_mode'], SQLiteJournalMode.DELETE.value)
133
+ self.assertEqual(sqlite_dict['synchronous'], SQLiteSynchronous.NORMAL.value)
134
+
135
+ async def testCustomValues(self):
136
+ """
137
+ Test that custom values are properly stored and validated.
138
+ Verifies custom configuration values are correctly handled.
139
+ """
140
+ custom_sqlite = SQLite(
141
+ database='custom.db',
142
+ prefix='app_',
143
+ foreign_key_constraints='ON',
144
+ busy_timeout=10000,
145
+ journal_mode='MEMORY',
146
+ synchronous='OFF'
147
+ )
148
+ self.assertEqual(custom_sqlite.database, 'custom.db')
149
+ self.assertEqual(custom_sqlite.prefix, 'app_')
150
+ self.assertEqual(custom_sqlite.foreign_key_constraints, SQLiteForeignKey.ON.value)
151
+ self.assertEqual(custom_sqlite.busy_timeout, 10000)
152
+ self.assertEqual(custom_sqlite.journal_mode, SQLiteJournalMode.MEMORY.value)
153
+ self.assertEqual(custom_sqlite.synchronous, SQLiteSynchronous.OFF.value)
File without changes
@@ -0,0 +1,83 @@
1
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
2
+ from orionis.unittesting import TestCase
3
+
4
+ class TestOrionisIntegrityException(TestCase):
5
+ """
6
+ Test cases for the OrionisIntegrityException class.
7
+ """
8
+
9
+ async def testExceptionInitialization(self):
10
+ """
11
+ Test that OrionisIntegrityException is properly initialized with a message.
12
+ Verifies that the exception stores and returns the provided message correctly.
13
+ """
14
+ test_msg = "Test integrity violation message"
15
+ exception = OrionisIntegrityException(test_msg)
16
+ self.assertEqual(str(exception), f"OrionisIntegrityException: {test_msg}")
17
+ self.assertEqual(exception.args[0], test_msg)
18
+
19
+ async def testExceptionInheritance(self):
20
+ """
21
+ Test that OrionisIntegrityException properly inherits from Exception.
22
+ Verifies the exception hierarchy is correctly implemented.
23
+ """
24
+ exception = OrionisIntegrityException("Test")
25
+ self.assertIsInstance(exception, Exception)
26
+ self.assertTrue(issubclass(OrionisIntegrityException, Exception))
27
+
28
+ async def testExceptionStringRepresentation(self):
29
+ """
30
+ Test the string representation of OrionisIntegrityException.
31
+ Verifies the __str__ method returns the expected format.
32
+ """
33
+ test_msg = "Configuration validation failed"
34
+ exception = OrionisIntegrityException(test_msg)
35
+ self.assertEqual(str(exception), f"OrionisIntegrityException: {test_msg}")
36
+
37
+ async def testExceptionWithEmptyMessage(self):
38
+ """
39
+ Test OrionisIntegrityException with an empty message.
40
+ Verifies the exception handles empty messages correctly.
41
+ """
42
+ exception = OrionisIntegrityException("")
43
+ self.assertEqual(str(exception), "OrionisIntegrityException: ")
44
+
45
+ async def testExceptionWithNonStringMessage(self):
46
+ """
47
+ Test OrionisIntegrityException with non-string message types.
48
+ Verifies the exception converts non-string messages to strings.
49
+ """
50
+ # Test with integer
51
+ exception = OrionisIntegrityException(123)
52
+ self.assertEqual(str(exception), "OrionisIntegrityException: 123")
53
+
54
+ # Test with list
55
+ exception = OrionisIntegrityException(["error1", "error2"])
56
+ self.assertEqual(str(exception), "OrionisIntegrityException: ['error1', 'error2']")
57
+
58
+ async def testExceptionRaiseAndCatch(self):
59
+ """
60
+ Test raising and catching OrionisIntegrityException.
61
+ Verifies the exception can be properly raised and caught.
62
+ """
63
+ test_msg = "Test exception handling"
64
+ try:
65
+ raise OrionisIntegrityException(test_msg)
66
+ except OrionisIntegrityException as e:
67
+ self.assertEqual(str(e), f"OrionisIntegrityException: {test_msg}")
68
+ except Exception:
69
+ self.fail("OrionisIntegrityException should be caught by its specific handler")
70
+
71
+ async def testExceptionChaining(self):
72
+ """
73
+ Test exception chaining with OrionisIntegrityException.
74
+ Verifies the exception works correctly in chained exception scenarios.
75
+ """
76
+ try:
77
+ try:
78
+ raise ValueError("Original error")
79
+ except ValueError as ve:
80
+ raise OrionisIntegrityException("Wrapper error") from ve
81
+ except OrionisIntegrityException as oe:
82
+ self.assertIsInstance(oe.__cause__, ValueError)
83
+ self.assertEqual(str(oe.__cause__), "Original error")
File without changes
@@ -0,0 +1,110 @@
1
+ from orionis.luminate.foundation.config.filesystems.entitites.disks import Disks
2
+ from orionis.luminate.foundation.config.filesystems.entitites.filesystems import Filesystems
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestConfigFilesystems(TestCase):
7
+ """
8
+ Test cases for the Filesystems configuration class.
9
+ """
10
+
11
+ async def testDefaultValues(self):
12
+ """
13
+ Test that Filesystems instance is created with correct default values.
14
+ Verifies default disk is 'local' and disks object is properly initialized.
15
+ """
16
+ fs = Filesystems()
17
+ self.assertEqual(fs.default, "local")
18
+ self.assertIsInstance(fs.disks, Disks)
19
+
20
+ async def testDefaultDiskValidation(self):
21
+ """
22
+ Test default disk attribute validation.
23
+ Verifies that only valid disk types are accepted as default.
24
+ """
25
+ # Test valid disk types
26
+ valid_disks = ["local", "public", "aws"]
27
+ for disk in valid_disks:
28
+ try:
29
+ Filesystems(default=disk)
30
+ except OrionisIntegrityException:
31
+ self.fail(f"Valid disk type '{disk}' should not raise exception")
32
+
33
+ # Test invalid disk type
34
+ with self.assertRaises(OrionisIntegrityException):
35
+ Filesystems(default="invalid_disk")
36
+
37
+ # Test empty default
38
+ with self.assertRaises(OrionisIntegrityException):
39
+ Filesystems(default="")
40
+
41
+ # Test non-string default
42
+ with self.assertRaises(OrionisIntegrityException):
43
+ Filesystems(default=123)
44
+
45
+ async def testDisksValidation(self):
46
+ """
47
+ Test disks attribute validation.
48
+ Verifies that only Disks instances are accepted.
49
+ """
50
+ # Test invalid disks type
51
+ with self.assertRaises(OrionisIntegrityException):
52
+ Filesystems(disks="not_a_disks_instance")
53
+
54
+ # Test None disks
55
+ with self.assertRaises(OrionisIntegrityException):
56
+ Filesystems(disks=None)
57
+
58
+ # Test valid disks
59
+ try:
60
+ Filesystems(disks=Disks())
61
+ except OrionisIntegrityException:
62
+ self.fail("Valid Disks instance should not raise exception")
63
+
64
+ async def testToDictMethod(self):
65
+ """
66
+ Test that toDict returns proper dictionary representation.
67
+ Verifies all attributes are correctly included in dictionary.
68
+ """
69
+ fs = Filesystems()
70
+ fs_dict = fs.toDict()
71
+
72
+ self.assertIsInstance(fs_dict, dict)
73
+ self.assertEqual(fs_dict['default'], "local")
74
+ self.assertIsInstance(fs_dict['disks'], dict)
75
+
76
+ async def testCustomValues(self):
77
+ """
78
+ Test that custom values are properly stored and validated.
79
+ Verifies custom configurations are correctly handled.
80
+ """
81
+ custom_disks = Disks()
82
+ custom_fs = Filesystems(
83
+ default="aws",
84
+ disks=custom_disks
85
+ )
86
+ self.assertEqual(custom_fs.default, "aws")
87
+ self.assertIs(custom_fs.disks, custom_disks)
88
+
89
+ async def testHashability(self):
90
+ """
91
+ Test that Filesystems maintains hashability due to unsafe_hash=True.
92
+ Verifies that Filesystems instances can be used in sets and as dictionary keys.
93
+ """
94
+ fs1 = Filesystems()
95
+ fs2 = Filesystems()
96
+ fs_set = {fs1, fs2}
97
+
98
+ self.assertEqual(len(fs_set), 1)
99
+
100
+ custom_fs = Filesystems(default="public")
101
+ fs_set.add(custom_fs)
102
+ self.assertEqual(len(fs_set), 2)
103
+
104
+ async def testKwOnlyInitialization(self):
105
+ """
106
+ Test that Filesystems enforces keyword-only initialization.
107
+ Verifies that positional arguments are not allowed for initialization.
108
+ """
109
+ with self.assertRaises(TypeError):
110
+ Filesystems("local", Disks())
@@ -0,0 +1,133 @@
1
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
2
+ from orionis.luminate.foundation.config.filesystems.entitites.aws import S3
3
+ from orionis.unittesting import TestCase
4
+
5
+ class TestConfigS3(TestCase):
6
+ """
7
+ Test cases for the S3 storage configuration class.
8
+ """
9
+
10
+ async def testDefaultValues(self):
11
+ """
12
+ Test that S3 instance is created with correct default values.
13
+ Verifies all default values match expected defaults from class definition.
14
+ """
15
+ s3 = S3()
16
+ self.assertEqual(s3.key, "")
17
+ self.assertEqual(s3.secret, "")
18
+ self.assertEqual(s3.region, "us-east-1")
19
+ self.assertEqual(s3.bucket, "")
20
+ self.assertIsNone(s3.url)
21
+ self.assertIsNone(s3.endpoint)
22
+ self.assertFalse(s3.use_path_style_endpoint)
23
+ self.assertFalse(s3.throw)
24
+
25
+ async def testRequiredFieldValidation(self):
26
+ """
27
+ Test validation of required fields.
28
+ Verifies that region must be a non-empty string.
29
+ """
30
+ # Test empty region
31
+ with self.assertRaises(OrionisIntegrityException):
32
+ S3(region="")
33
+
34
+ # Test non-string region
35
+ with self.assertRaises(OrionisIntegrityException):
36
+ S3(region=123)
37
+
38
+ async def testOptionalFieldValidation(self):
39
+ """
40
+ Test validation of optional fields.
41
+ Verifies that optional fields accept None or proper types.
42
+ """
43
+ # Valid optional configurations
44
+ try:
45
+ S3(url=None, endpoint=None)
46
+ S3(url="https://example.com", endpoint="https://s3.example.com")
47
+ except OrionisIntegrityException:
48
+ self.fail("Valid optional configurations should not raise exceptions")
49
+
50
+ # Invalid optional configurations
51
+ with self.assertRaises(OrionisIntegrityException):
52
+ S3(url=123)
53
+ with self.assertRaises(OrionisIntegrityException):
54
+ S3(endpoint=[])
55
+
56
+ async def testBooleanFieldValidation(self):
57
+ """
58
+ Test validation of boolean fields.
59
+ Verifies that boolean fields only accept boolean values.
60
+ """
61
+ # Test use_path_style_endpoint
62
+ with self.assertRaises(OrionisIntegrityException):
63
+ S3(use_path_style_endpoint="true")
64
+
65
+ # Test throw
66
+ with self.assertRaises(OrionisIntegrityException):
67
+ S3(throw=1)
68
+
69
+ async def testCustomValues(self):
70
+ """
71
+ Test that custom values are properly stored and validated.
72
+ Verifies custom configuration values are correctly handled.
73
+ """
74
+ custom_s3 = S3(
75
+ key="AKIAEXAMPLE",
76
+ secret="secret123",
77
+ region="eu-west-1",
78
+ bucket="my-bucket",
79
+ url="https://my-bucket.s3.amazonaws.com",
80
+ endpoint="https://s3.eu-west-1.amazonaws.com",
81
+ use_path_style_endpoint=True,
82
+ throw=True
83
+ )
84
+
85
+ self.assertEqual(custom_s3.key, "AKIAEXAMPLE")
86
+ self.assertEqual(custom_s3.secret, "secret123")
87
+ self.assertEqual(custom_s3.region, "eu-west-1")
88
+ self.assertEqual(custom_s3.bucket, "my-bucket")
89
+ self.assertEqual(custom_s3.url, "https://my-bucket.s3.amazonaws.com")
90
+ self.assertEqual(custom_s3.endpoint, "https://s3.eu-west-1.amazonaws.com")
91
+ self.assertTrue(custom_s3.use_path_style_endpoint)
92
+ self.assertTrue(custom_s3.throw)
93
+
94
+ async def testToDictMethod(self):
95
+ """
96
+ Test that toDict returns proper dictionary representation.
97
+ Verifies all attributes are correctly included in dictionary.
98
+ """
99
+ s3 = S3()
100
+ s3_dict = s3.toDict()
101
+
102
+ self.assertIsInstance(s3_dict, dict)
103
+ self.assertEqual(s3_dict['key'], "")
104
+ self.assertEqual(s3_dict['secret'], "")
105
+ self.assertEqual(s3_dict['region'], "us-east-1")
106
+ self.assertEqual(s3_dict['bucket'], "")
107
+ self.assertIsNone(s3_dict['url'])
108
+ self.assertIsNone(s3_dict['endpoint'])
109
+ self.assertFalse(s3_dict['use_path_style_endpoint'])
110
+ self.assertFalse(s3_dict['throw'])
111
+
112
+ async def testHashability(self):
113
+ """
114
+ Test that S3 maintains hashability due to unsafe_hash=True.
115
+ Verifies that S3 instances can be used in sets and as dictionary keys.
116
+ """
117
+ s3_1 = S3()
118
+ s3_2 = S3()
119
+ s3_set = {s3_1, s3_2}
120
+
121
+ self.assertEqual(len(s3_set), 1)
122
+
123
+ custom_s3 = S3(bucket="custom-bucket")
124
+ s3_set.add(custom_s3)
125
+ self.assertEqual(len(s3_set), 2)
126
+
127
+ async def testKwOnlyInitialization(self):
128
+ """
129
+ Test that S3 enforces keyword-only initialization.
130
+ Verifies that positional arguments are not allowed for initialization.
131
+ """
132
+ with self.assertRaises(TypeError):
133
+ S3("key", "secret", "region") # Should fail as it requires keyword arguments