csrd-utils 0.3.26__tar.gz → 0.3.27__tar.gz
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.
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/PKG-INFO +1 -1
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/pyproject.toml +1 -1
- csrd_utils-0.3.27/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_settings_contracts.py +73 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/.gitignore +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/README.md +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/__main__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/audit.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/augmentor.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/cluster.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/doctor.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/manifest.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/requirements.fragment +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/manifest.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/requirements.fragment +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/manifest.yaml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/requirements.fragment +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/fragments.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/generator.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/resources.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.dockerignore +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.env.example +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.gitignore +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/Dockerfile +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/README.md +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/docker-compose.yml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/pyproject.toml +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/requirements.txt +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/cache.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/delegates/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/delegates/upstreams.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/delegates.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/worker_broker.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/middleware/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/py.typed +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/repositories/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/settings.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/acceptance/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/test_items.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_cache.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_database_settings.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_delegates.py +0 -0
- {csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_worker_broker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csrd-utils
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.27
|
|
4
4
|
Summary: CLI utilities for csrd service generation and feature augmentation
|
|
5
5
|
Project-URL: Repository, https://github.com/csrd-api/fastapi-common
|
|
6
6
|
Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Unit tests for settings validator branches and package exports."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
from types import SimpleNamespace
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
from app.settings import Settings
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_validate_db_credentials_returns_self_without_database() -> None:
|
|
14
|
+
candidate = SimpleNamespace(has_database=False)
|
|
15
|
+
assert Settings.validate_db_credentials(candidate) is candidate
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_validate_db_credentials_returns_self_for_sqlite() -> None:
|
|
19
|
+
candidate = SimpleNamespace(has_database=True, db_kind="sqlite")
|
|
20
|
+
assert Settings.validate_db_credentials(candidate) is candidate
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_validate_db_credentials_skips_non_production_when_not_enforced() -> None:
|
|
24
|
+
candidate = SimpleNamespace(
|
|
25
|
+
has_database=True,
|
|
26
|
+
db_kind="postgres",
|
|
27
|
+
enforce_strong_db_credentials=False,
|
|
28
|
+
app_env="development",
|
|
29
|
+
)
|
|
30
|
+
assert Settings.validate_db_credentials(candidate) is candidate
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@pytest.mark.parametrize(
|
|
34
|
+
("field", "value", "expected"),
|
|
35
|
+
[
|
|
36
|
+
("db_user", "service_user", "DB_USER"),
|
|
37
|
+
("db_password", "change_me", "DB_PASSWORD"),
|
|
38
|
+
("db_name", "service_db", "DB_NAME"),
|
|
39
|
+
],
|
|
40
|
+
)
|
|
41
|
+
def test_validate_db_credentials_rejects_weak_defaults(
|
|
42
|
+
field: str,
|
|
43
|
+
value: str,
|
|
44
|
+
expected: str,
|
|
45
|
+
) -> None:
|
|
46
|
+
candidate = SimpleNamespace(
|
|
47
|
+
has_database=True,
|
|
48
|
+
db_kind="postgres",
|
|
49
|
+
enforce_strong_db_credentials=True,
|
|
50
|
+
app_env="production",
|
|
51
|
+
db_user="app_user",
|
|
52
|
+
db_password="StrongPass123!",
|
|
53
|
+
db_name="inventory_db",
|
|
54
|
+
)
|
|
55
|
+
setattr(candidate, field, value)
|
|
56
|
+
|
|
57
|
+
with pytest.raises(ValueError, match=expected):
|
|
58
|
+
Settings.validate_db_credentials(candidate)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def test_app_package_init_modules_expose_tuple_all() -> None:
|
|
62
|
+
for module_name in [
|
|
63
|
+
"app.delegates",
|
|
64
|
+
"app.dependencies",
|
|
65
|
+
"app.middleware",
|
|
66
|
+
"app.repositories",
|
|
67
|
+
"app.workers",
|
|
68
|
+
]:
|
|
69
|
+
module = importlib.import_module(module_name)
|
|
70
|
+
exports = getattr(module, "__all__", ())
|
|
71
|
+
assert isinstance(exports, tuple)
|
|
72
|
+
for exported_name in exports:
|
|
73
|
+
assert hasattr(module, exported_name)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/caching/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/logging/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/metrics/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/tracing/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/settings.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/src/app/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/src/app/workers/tasks.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/features/workers/tests/test_workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.26 → csrd_utils-0.3.27}/src/csrd_utils/templates/cookiecutter-service/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|