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,124 @@
1
+ from orionis.luminate.foundation.config.logging.entities.stack import Stack
2
+ from orionis.luminate.foundation.config.logging.enums.levels import Level
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestConfigStack(TestCase):
7
+ """
8
+ Test cases for the Stack logging configuration class.
9
+ """
10
+
11
+ async def testDefaultValues(self):
12
+ """
13
+ Test that Stack instance is created with correct default values.
14
+ Verifies default path and level match expected values from class definition.
15
+ """
16
+ stack = Stack()
17
+ self.assertEqual(stack.path, "storage/log/application.log")
18
+ self.assertEqual(stack.level, Level.INFO.value)
19
+
20
+ async def testPathValidation(self):
21
+ """
22
+ Test path attribute validation.
23
+ Verifies that empty or non-string paths raise exceptions.
24
+ """
25
+ # Test empty path
26
+ with self.assertRaises(OrionisIntegrityException):
27
+ Stack(path="")
28
+ # Test non-string path
29
+ with self.assertRaises(OrionisIntegrityException):
30
+ Stack(path=123)
31
+ # Test valid path
32
+ try:
33
+ Stack(path="custom/log/path.log")
34
+ except OrionisIntegrityException:
35
+ self.fail("Valid path should not raise exception")
36
+
37
+ async def testLevelValidation(self):
38
+ """
39
+ Test level attribute validation with different input types.
40
+ Verifies string, int and enum level values are properly handled.
41
+ """
42
+ # Test string level
43
+ stack = Stack(level="debug")
44
+ self.assertEqual(stack.level, Level.DEBUG.value)
45
+
46
+ # Test int level
47
+ stack = Stack(level=Level.WARNING.value)
48
+ self.assertEqual(stack.level, Level.WARNING.value)
49
+
50
+ # Test enum level
51
+ stack = Stack(level=Level.ERROR)
52
+ self.assertEqual(stack.level, Level.ERROR.value)
53
+
54
+ # Test invalid string level
55
+ with self.assertRaises(OrionisIntegrityException):
56
+ Stack(level="invalid")
57
+
58
+ # Test invalid int level
59
+ with self.assertRaises(OrionisIntegrityException):
60
+ Stack(level=999)
61
+
62
+ # Test invalid type
63
+ with self.assertRaises(OrionisIntegrityException):
64
+ Stack(level=[])
65
+
66
+ async def testWhitespaceHandling(self):
67
+ """
68
+ Test whitespace handling in path and level attributes.
69
+ Verifies whitespace is preserved in path and trimmed in level strings.
70
+ """
71
+ # Test path with whitespace
72
+ spaced_path = " logs/app.log "
73
+ stack = Stack(path=spaced_path)
74
+ self.assertEqual(stack.path, spaced_path)
75
+
76
+ # Test level with whitespace
77
+ stack = Stack(level=" debug ")
78
+ self.assertEqual(stack.level, Level.DEBUG.value)
79
+
80
+ async def testToDictMethod(self):
81
+ """
82
+ Test that toDict returns proper dictionary representation.
83
+ Verifies both path and level are correctly included in dictionary.
84
+ """
85
+ stack = Stack()
86
+ stack_dict = stack.toDict()
87
+
88
+ self.assertIsInstance(stack_dict, dict)
89
+ self.assertEqual(stack_dict['path'], "storage/log/application.log")
90
+ self.assertEqual(stack_dict['level'], Level.INFO.value)
91
+
92
+ async def testCustomValuesToDict(self):
93
+ """
94
+ Test that custom values are properly included in dictionary representation.
95
+ """
96
+ custom_stack = Stack(
97
+ path="custom/logs/app.log",
98
+ level="warning"
99
+ )
100
+ stack_dict = custom_stack.toDict()
101
+ self.assertEqual(stack_dict['path'], "custom/logs/app.log")
102
+ self.assertEqual(stack_dict['level'], Level.WARNING.value)
103
+
104
+ async def testHashability(self):
105
+ """
106
+ Test that Stack maintains hashability due to unsafe_hash=True.
107
+ Verifies Stack instances can be used in sets and as dictionary keys.
108
+ """
109
+ stack1 = Stack()
110
+ stack2 = Stack()
111
+ stack_set = {stack1, stack2}
112
+
113
+ self.assertEqual(len(stack_set), 1)
114
+
115
+ custom_stack = Stack(path="custom.log")
116
+ stack_set.add(custom_stack)
117
+ self.assertEqual(len(stack_set), 2)
118
+
119
+ async def testKwOnlyInitialization(self):
120
+ """
121
+ Test that Stack enforces keyword-only initialization.
122
+ """
123
+ with self.assertRaises(TypeError):
124
+ Stack("path.log", "info")
@@ -0,0 +1,133 @@
1
+ from orionis.luminate.foundation.config.logging.entities.weekly import Weekly
2
+ from orionis.luminate.foundation.config.logging.enums.levels import Level
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestConfigWeekly(TestCase):
7
+ """
8
+ Test cases for the Weekly logging configuration class.
9
+ """
10
+
11
+ async def testDefaultValues(self):
12
+ """
13
+ Test that Weekly instance is created with correct default values.
14
+ Verifies default path, level and retention_weeks match expected values.
15
+ """
16
+ weekly = Weekly()
17
+ self.assertEqual(weekly.path, "storage/log/application.log")
18
+ self.assertEqual(weekly.level, Level.INFO.value)
19
+ self.assertEqual(weekly.retention_weeks, 4)
20
+
21
+ async def testPathValidation(self):
22
+ """
23
+ Test path attribute validation.
24
+ Verifies that empty or non-string paths raise exceptions.
25
+ """
26
+ with self.assertRaises(OrionisIntegrityException):
27
+ Weekly(path="")
28
+ with self.assertRaises(OrionisIntegrityException):
29
+ Weekly(path=123)
30
+ try:
31
+ Weekly(path="custom/log/path.log")
32
+ except OrionisIntegrityException:
33
+ self.fail("Valid path should not raise exception")
34
+
35
+ async def testLevelValidation(self):
36
+ """
37
+ Test level attribute validation with different input types.
38
+ """
39
+ # Test string level
40
+ weekly = Weekly(level="debug")
41
+ self.assertEqual(weekly.level, Level.DEBUG.value)
42
+
43
+ # Test int level
44
+ weekly = Weekly(level=Level.WARNING.value)
45
+ self.assertEqual(weekly.level, Level.WARNING.value)
46
+
47
+ # Test enum level
48
+ weekly = Weekly(level=Level.ERROR)
49
+ self.assertEqual(weekly.level, Level.ERROR.value)
50
+
51
+ # Test invalid cases
52
+ with self.assertRaises(OrionisIntegrityException):
53
+ Weekly(level="invalid")
54
+ with self.assertRaises(OrionisIntegrityException):
55
+ Weekly(level=999)
56
+ with self.assertRaises(OrionisIntegrityException):
57
+ Weekly(level=[])
58
+
59
+ async def testRetentionWeeksValidation(self):
60
+ """
61
+ Test retention_weeks attribute validation.
62
+ """
63
+ # Test valid values
64
+ try:
65
+ Weekly(retention_weeks=1)
66
+ Weekly(retention_weeks=12)
67
+ Weekly(retention_weeks=6)
68
+ except OrionisIntegrityException:
69
+ self.fail("Valid retention_weeks should not raise exception")
70
+
71
+ # Test invalid values
72
+ with self.assertRaises(OrionisIntegrityException):
73
+ Weekly(retention_weeks=0)
74
+ with self.assertRaises(OrionisIntegrityException):
75
+ Weekly(retention_weeks=13)
76
+ with self.assertRaises(OrionisIntegrityException):
77
+ Weekly(retention_weeks=-1)
78
+ with self.assertRaises(OrionisIntegrityException):
79
+ Weekly(retention_weeks="4")
80
+
81
+ async def testWhitespaceHandling(self):
82
+ """
83
+ Test whitespace handling in path and level attributes.
84
+ """
85
+ weekly = Weekly(path=" logs/app.log ", level=" debug ")
86
+ self.assertEqual(weekly.path, " logs/app.log ")
87
+ self.assertEqual(weekly.level, Level.DEBUG.value)
88
+
89
+ async def testToDictMethod(self):
90
+ """
91
+ Test that toDict returns proper dictionary representation.
92
+ """
93
+ weekly = Weekly()
94
+ weekly_dict = weekly.toDict()
95
+ self.assertIsInstance(weekly_dict, dict)
96
+ self.assertEqual(weekly_dict['path'], "storage/log/application.log")
97
+ self.assertEqual(weekly_dict['level'], Level.INFO.value)
98
+ self.assertEqual(weekly_dict['retention_weeks'], 4)
99
+
100
+ async def testCustomValuesToDict(self):
101
+ """
102
+ Test that custom values are properly included in dictionary.
103
+ """
104
+ custom_weekly = Weekly(
105
+ path="custom/logs/app.log",
106
+ level="warning",
107
+ retention_weeks=8
108
+ )
109
+ weekly_dict = custom_weekly.toDict()
110
+ self.assertEqual(weekly_dict['path'], "custom/logs/app.log")
111
+ self.assertEqual(weekly_dict['level'], Level.WARNING.value)
112
+ self.assertEqual(weekly_dict['retention_weeks'], 8)
113
+
114
+ async def testHashability(self):
115
+ """
116
+ Test that Weekly maintains hashability due to unsafe_hash=True.
117
+ """
118
+ weekly1 = Weekly()
119
+ weekly2 = Weekly()
120
+ weekly_set = {weekly1, weekly2}
121
+
122
+ self.assertEqual(len(weekly_set), 1)
123
+
124
+ custom_weekly = Weekly(path="custom.log")
125
+ weekly_set.add(custom_weekly)
126
+ self.assertEqual(len(weekly_set), 2)
127
+
128
+ async def testKwOnlyInitialization(self):
129
+ """
130
+ Test that Weekly enforces keyword-only initialization.
131
+ """
132
+ with self.assertRaises(TypeError):
133
+ Weekly("path.log", "info", 4)
File without changes
@@ -0,0 +1,73 @@
1
+ from orionis.luminate.foundation.config.mail.entities.mail import Mail
2
+ from orionis.luminate.foundation.config.mail.entities.mailers import Mailers
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestMail(TestCase):
7
+
8
+ async def testDefaultInitialization(self):
9
+ """
10
+ Test that Mail instance is initialized with correct default values.
11
+ Verifies that default mailer is 'smtp' and mailers is an instance of Mailers.
12
+ """
13
+ mail = Mail()
14
+ self.assertEqual(mail.default, "smtp")
15
+ self.assertIsInstance(mail.mailers, Mailers)
16
+
17
+ async def testDefaultValidation(self):
18
+ """
19
+ Test validation of default mailer against available options.
20
+ Verifies that invalid default mailer raises OrionisIntegrityException.
21
+ """
22
+ with self.assertRaises(OrionisIntegrityException):
23
+ Mail(default="invalid_mailer")
24
+ with self.assertRaises(OrionisIntegrityException):
25
+ Mail(default=123)
26
+
27
+ async def testMailersTypeValidation(self):
28
+ """
29
+ Test validation of mailers attribute type.
30
+ Verifies that non-Mailers objects raise OrionisIntegrityException.
31
+ """
32
+ with self.assertRaises(OrionisIntegrityException):
33
+ Mail(mailers="invalid_mailers_object")
34
+
35
+ async def testToDictMethod(self):
36
+ """
37
+ Test the toDict method returns proper dictionary representation.
38
+ Verifies the method returns a dict containing all fields.
39
+ """
40
+ mail = Mail()
41
+ result = mail.toDict()
42
+ self.assertIsInstance(result, dict)
43
+ self.assertIn("default", result)
44
+ self.assertIn("mailers", result)
45
+ self.assertEqual(result["default"], "smtp")
46
+
47
+ async def testHashability(self):
48
+ """
49
+ Test that Mail instances are hashable due to unsafe_hash=True.
50
+ Verifies instances can be used in sets or as dictionary keys.
51
+ """
52
+ mail1 = Mail()
53
+ mail2 = Mail(default="smtp")
54
+ test_set = {mail1, mail2}
55
+ self.assertEqual(len(test_set), 1)
56
+
57
+ async def testKwOnlyInitialization(self):
58
+ """
59
+ Test that Mail requires keyword arguments for initialization.
60
+ Verifies the class enforces kw_only=True in its dataclass decorator.
61
+ """
62
+ with self.assertRaises(TypeError):
63
+ Mail("smtp", Mailers())
64
+
65
+ async def testValidCustomInitialization(self):
66
+ """
67
+ Test valid custom initialization with proper values.
68
+ Verifies instance can be created with valid non-default values.
69
+ """
70
+ # Assuming 'smtp' is a valid mailer option from Mailers
71
+ mail = Mail(default="smtp", mailers=Mailers())
72
+ self.assertEqual(mail.default, "smtp")
73
+ self.assertIsInstance(mail.mailers, Mailers)
@@ -0,0 +1,61 @@
1
+ from orionis.luminate.foundation.config.mail.entities.file import File
2
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
3
+ from orionis.unittesting import TestCase
4
+
5
+ class TestMailFile(TestCase):
6
+
7
+ async def testDefaultPathValue(self):
8
+ """
9
+ Test that the File instance is initialized with the correct default path.
10
+ Verifies that a new File object has 'storage/mail' as the default path.
11
+ """
12
+ file = File()
13
+ self.assertEqual(file.path, "storage/mail")
14
+
15
+ async def testPathValidation(self):
16
+ """
17
+ Test the path validation in __post_init__ method.
18
+ Verifies that non-string paths raise OrionisIntegrityException.
19
+ """
20
+ with self.assertRaises(OrionisIntegrityException):
21
+ File(path=123)
22
+ with self.assertRaises(OrionisIntegrityException):
23
+ File(path="")
24
+
25
+ async def testValidPathAssignment(self):
26
+ """
27
+ Test that valid path assignments work correctly.
28
+ Verifies that string paths are accepted and stored properly.
29
+ """
30
+ test_path = "custom/path/to/mail"
31
+ file = File(path=test_path)
32
+ self.assertEqual(file.path, test_path)
33
+
34
+ async def testToDictMethod(self):
35
+ """
36
+ Test the toDict method returns a proper dictionary representation.
37
+ Checks that the toDict method converts the File instance
38
+ into a dictionary with the expected path field.
39
+ """
40
+ file = File()
41
+ result = file.toDict()
42
+ self.assertIsInstance(result, dict)
43
+ self.assertEqual(result["path"], "storage/mail")
44
+
45
+ async def testHashability(self):
46
+ """
47
+ Test that File instances are hashable due to unsafe_hash=True.
48
+ Verifies that instances can be used in sets or as dictionary keys.
49
+ """
50
+ file1 = File()
51
+ file2 = File(path="other/path")
52
+ test_set = {file1, file2}
53
+ self.assertEqual(len(test_set), 2)
54
+
55
+ async def testKwOnlyInitialization(self):
56
+ """
57
+ Test that File requires keyword arguments for initialization.
58
+ Verifies that the class enforces kw_only=True in its dataclass decorator.
59
+ """
60
+ with self.assertRaises(TypeError):
61
+ File("storage/mail")
@@ -0,0 +1,58 @@
1
+ from orionis.luminate.foundation.config.mail.entities.mailers import Mailers
2
+ from orionis.luminate.foundation.config.mail.entities.smtp import Smtp
3
+ from orionis.luminate.foundation.config.mail.entities.file import File
4
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
5
+ from orionis.unittesting import TestCase
6
+
7
+ class TestMailers(TestCase):
8
+
9
+ async def testDefaultInitialization(self):
10
+ """
11
+ Test that Mailers instance is initialized with correct default factories.
12
+ Verifies that smtp and file attributes are properly initialized with their respective types.
13
+ """
14
+ mailers = Mailers()
15
+ self.assertIsInstance(mailers.smtp, Smtp)
16
+ self.assertIsInstance(mailers.file, File)
17
+
18
+ async def testTypeValidation(self):
19
+ """
20
+ Test type validation for smtp and file attributes.
21
+ Verifies that invalid types raise OrionisIntegrityException.
22
+ """
23
+ with self.assertRaises(OrionisIntegrityException):
24
+ Mailers(smtp="invalid_smtp")
25
+ with self.assertRaises(OrionisIntegrityException):
26
+ Mailers(file="invalid_file")
27
+
28
+ async def testCustomInitialization(self):
29
+ """
30
+ Test custom initialization with valid parameters.
31
+ Verifies that valid Smtp and File instances are accepted.
32
+ """
33
+ custom_smtp = Smtp()
34
+ custom_file = File()
35
+ mailers = Mailers(smtp=custom_smtp, file=custom_file)
36
+ self.assertIs(mailers.smtp, custom_smtp)
37
+ self.assertIs(mailers.file, custom_file)
38
+
39
+ async def testToDictMethod(self):
40
+ """
41
+ Test the toDict method returns proper dictionary representation.
42
+ Verifies the method returns a dict containing all fields with correct values.
43
+ """
44
+ mailers = Mailers()
45
+ result = mailers.toDict()
46
+ self.assertIsInstance(result, dict)
47
+ self.assertIn("smtp", result)
48
+ self.assertIn("file", result)
49
+ self.assertIsInstance(result["smtp"], dict)
50
+ self.assertIsInstance(result["file"], dict)
51
+
52
+ async def testKwOnlyInitialization(self):
53
+ """
54
+ Test that Mailers requires keyword arguments for initialization.
55
+ Verifies the class enforces kw_only=True in its dataclass decorator.
56
+ """
57
+ with self.assertRaises(TypeError):
58
+ Mailers(Smtp(), File())
@@ -0,0 +1,102 @@
1
+ from orionis.luminate.foundation.config.mail.entities.smtp import Smtp
2
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
3
+ from orionis.unittesting import TestCase
4
+
5
+ class TestSmtp(TestCase):
6
+
7
+ async def testDefaultInitialization(self):
8
+ """
9
+ Test that Smtp instance is initialized with correct default values.
10
+ Verifies all default values match the expected configuration.
11
+ """
12
+ smtp = Smtp()
13
+ self.assertEqual(smtp.url, "smtp.mailtrap.io")
14
+ self.assertEqual(smtp.host, "smtp.mailtrap.io")
15
+ self.assertEqual(smtp.port, 587)
16
+ self.assertEqual(smtp.encryption, "TLS")
17
+ self.assertEqual(smtp.username, "")
18
+ self.assertEqual(smtp.password, "")
19
+ self.assertIsNone(smtp.timeout)
20
+
21
+ async def testTypeValidation(self):
22
+ """
23
+ Test type validation for all Smtp attributes.
24
+ Verifies that invalid types raise OrionisIntegrityException.
25
+ """
26
+ with self.assertRaises(OrionisIntegrityException):
27
+ Smtp(url=123)
28
+ with self.assertRaises(OrionisIntegrityException):
29
+ Smtp(host=456)
30
+ with self.assertRaises(OrionisIntegrityException):
31
+ Smtp(port="invalid")
32
+ with self.assertRaises(OrionisIntegrityException):
33
+ Smtp(encryption=123)
34
+ with self.assertRaises(OrionisIntegrityException):
35
+ Smtp(username=123)
36
+ with self.assertRaises(OrionisIntegrityException):
37
+ Smtp(password=123)
38
+ with self.assertRaises(OrionisIntegrityException):
39
+ Smtp(timeout="invalid")
40
+
41
+ async def testPortValidation(self):
42
+ """
43
+ Test specific validation for port attribute.
44
+ Verifies that negative port numbers raise OrionisIntegrityException.
45
+ """
46
+ with self.assertRaises(OrionisIntegrityException):
47
+ Smtp(port=-1)
48
+
49
+ async def testTimeoutValidation(self):
50
+ """
51
+ Test specific validation for timeout attribute.
52
+ Verifies that negative timeout values raise OrionisIntegrityException.
53
+ """
54
+ with self.assertRaises(OrionisIntegrityException):
55
+ Smtp(timeout=-1)
56
+
57
+ async def testValidCustomInitialization(self):
58
+ """
59
+ Test custom initialization with valid parameters.
60
+ Verifies that valid custom values are accepted and stored correctly.
61
+ """
62
+ custom_config = Smtp(
63
+ url="smtp.example.com",
64
+ host="mail.example.com",
65
+ port=465,
66
+ encryption="SSL",
67
+ username="user",
68
+ password="pass",
69
+ timeout=30
70
+ )
71
+ self.assertEqual(custom_config.url, "smtp.example.com")
72
+ self.assertEqual(custom_config.host, "mail.example.com")
73
+ self.assertEqual(custom_config.port, 465)
74
+ self.assertEqual(custom_config.encryption, "SSL")
75
+ self.assertEqual(custom_config.username, "user")
76
+ self.assertEqual(custom_config.password, "pass")
77
+ self.assertEqual(custom_config.timeout, 30)
78
+
79
+ async def testToDictMethod(self):
80
+ """
81
+ Test the toDict method returns proper dictionary representation.
82
+ Verifies the method returns a dict containing all fields with correct values.
83
+ """
84
+ smtp = Smtp()
85
+ result = smtp.toDict()
86
+ self.assertIsInstance(result, dict)
87
+ self.assertEqual(result["url"], "smtp.mailtrap.io")
88
+ self.assertEqual(result["host"], "smtp.mailtrap.io")
89
+ self.assertEqual(result["port"], 587)
90
+ self.assertEqual(result["encryption"], "TLS")
91
+ self.assertEqual(result["username"], "")
92
+ self.assertEqual(result["password"], "")
93
+ self.assertIsNone(result["timeout"])
94
+
95
+
96
+ async def testKwOnlyInitialization(self):
97
+ """
98
+ Test that Smtp requires keyword arguments for initialization.
99
+ Verifies the class enforces kw_only=True in its dataclass decorator.
100
+ """
101
+ with self.assertRaises(TypeError):
102
+ Smtp("smtp.mailtrap.io", "smtp.mailtrap.io", 587, "TLS", "", "", None)
File without changes
@@ -0,0 +1,58 @@
1
+ from orionis.luminate.foundation.config.queue.entities.queue import Queue
2
+ from orionis.luminate.foundation.config.queue.entities.brokers import Brokers
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestQueue(TestCase):
7
+
8
+ async def testDefaultInitialization(self):
9
+ """
10
+ Test that Queue instance is initialized with correct default values.
11
+ Verifies that default connection is 'sync' and brokers is a Brokers instance.
12
+ """
13
+ queue = Queue()
14
+ self.assertEqual(queue.default, "sync")
15
+ self.assertIsInstance(queue.brokers, Brokers)
16
+
17
+ async def testDefaultValidation(self):
18
+ """
19
+ Test validation for default attribute.
20
+ Verifies that invalid default values raise OrionisIntegrityException.
21
+ """
22
+ invalid_options = ["invalid", "", 123, None]
23
+ for option in invalid_options:
24
+ with self.assertRaises(OrionisIntegrityException):
25
+ Queue(default=option)
26
+
27
+ async def testBrokersValidation(self):
28
+ """
29
+ Test validation for brokers attribute.
30
+ Verifies that non-Brokers values raise OrionisIntegrityException.
31
+ """
32
+ with self.assertRaises(OrionisIntegrityException):
33
+ Queue(brokers="invalid_brokers")
34
+ with self.assertRaises(OrionisIntegrityException):
35
+ Queue(brokers={})
36
+
37
+ async def testValidCustomInitialization(self):
38
+ """
39
+ Test custom initialization with valid parameters.
40
+ Verifies that valid default and Brokers instances are accepted.
41
+ """
42
+ custom_brokers = Brokers(sync=False)
43
+ queue = Queue(default="sync", brokers=custom_brokers)
44
+ self.assertEqual(queue.default, "sync")
45
+ self.assertIs(queue.brokers, custom_brokers)
46
+ self.assertFalse(queue.brokers.sync)
47
+
48
+ async def testToDictMethod(self):
49
+ """
50
+ Test the toDict method returns proper dictionary representation.
51
+ Verifies all fields are included with correct values.
52
+ """
53
+ queue = Queue()
54
+ result = queue.toDict()
55
+ self.assertIsInstance(result, dict)
56
+ self.assertEqual(result["default"], "sync")
57
+ self.assertIsInstance(result["brokers"], dict)
58
+ self.assertTrue(result["brokers"]["sync"])
@@ -0,0 +1,67 @@
1
+ from orionis.luminate.foundation.config.queue.entities.brokers import Brokers
2
+ from orionis.luminate.foundation.config.queue.entities.database import Database
3
+ from orionis.luminate.foundation.config.exceptions.integrity import OrionisIntegrityException
4
+ from orionis.unittesting import TestCase
5
+
6
+ class TestBrokers(TestCase):
7
+
8
+ async def testDefaultInitialization(self):
9
+ """
10
+ Test that Brokers instance is initialized with correct default values.
11
+ Verifies that sync is True by default and database is a Database instance.
12
+ """
13
+ brokers = Brokers()
14
+ self.assertTrue(brokers.sync)
15
+ self.assertIsInstance(brokers.database, Database)
16
+
17
+ async def testSyncValidation(self):
18
+ """
19
+ Test validation for sync attribute.
20
+ Verifies that non-boolean values raise OrionisIntegrityException.
21
+ """
22
+ with self.assertRaises(OrionisIntegrityException):
23
+ Brokers(sync="true")
24
+ with self.assertRaises(OrionisIntegrityException):
25
+ Brokers(sync=1)
26
+
27
+ async def testDatabaseValidation(self):
28
+ """
29
+ Test validation for database attribute.
30
+ Verifies that non-Database values raise OrionisIntegrityException.
31
+ """
32
+ with self.assertRaises(OrionisIntegrityException):
33
+ Brokers(database="invalid_database")
34
+ with self.assertRaises(OrionisIntegrityException):
35
+ Brokers(database={})
36
+
37
+ async def testCustomInitialization(self):
38
+ """
39
+ Test custom initialization with valid parameters.
40
+ Verifies that valid boolean and Database instances are accepted.
41
+ """
42
+ custom_db = Database(table="custom_queue")
43
+ brokers = Brokers(sync=False, database=custom_db)
44
+ self.assertFalse(brokers.sync)
45
+ self.assertIs(brokers.database, custom_db)
46
+ self.assertEqual(brokers.database.table, "custom_queue")
47
+
48
+ async def testToDictMethod(self):
49
+ """
50
+ Test the toDict method returns proper dictionary representation.
51
+ Verifies all fields are included with correct values.
52
+ """
53
+ brokers = Brokers()
54
+ result = brokers.toDict()
55
+ self.assertIsInstance(result, dict)
56
+ self.assertIn("sync", result)
57
+ self.assertIn("database", result)
58
+ self.assertTrue(result["sync"])
59
+ self.assertIsInstance(result["database"], dict)
60
+
61
+ async def testKwOnlyInitialization(self):
62
+ """
63
+ Test that Brokers requires keyword arguments for initialization.
64
+ Verifies the class enforces kw_only=True in its dataclass decorator.
65
+ """
66
+ with self.assertRaises(TypeError):
67
+ Brokers(True, Database())