lambda-api-decorators-cdk 0.4.4__tar.gz → 0.4.5__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.
Files changed (51) hide show
  1. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/PKG-INFO +1 -1
  2. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/lambda_api_config.py +2 -2
  3. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/PKG-INFO +1 -1
  4. lambda_api_decorators_cdk-0.4.5/src/lambda_api_decorators_cdk.egg-info/scm_version.json +8 -0
  5. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorizer_config.py +90 -1
  6. lambda_api_decorators_cdk-0.4.4/src/lambda_api_decorators_cdk.egg-info/scm_version.json +0 -8
  7. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/.github/workflows/release.yml +0 -0
  8. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/.github/workflows/tests.yml +0 -0
  9. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/.gitignore +0 -0
  10. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/AGENTS.md +0 -0
  11. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/LICENSE +0 -0
  12. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/README.md +0 -0
  13. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/pyproject.toml +0 -0
  14. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/setup.cfg +0 -0
  15. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/__init__.py +0 -0
  16. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/api_type.py +0 -0
  17. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/ast_helper.py +0 -0
  18. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/lambda_api.py +0 -0
  19. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/resource_builder.py +0 -0
  20. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk/source_layout.py +0 -0
  21. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/SOURCES.txt +0 -0
  22. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/dependency_links.txt +0 -0
  23. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/requires.txt +0 -0
  24. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/scm_file_list.json +0 -0
  25. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/src/lambda_api_decorators_cdk.egg-info/top_level.txt +0 -0
  26. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/conftest.py +0 -0
  27. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_ast_decorator_invocations.py +0 -0
  28. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_ast_helper.py +0 -0
  29. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_auth_ast.py +0 -0
  30. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorization_diagnostics.py +0 -0
  31. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorization_http.py +0 -0
  32. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorization_lambda_api.py +0 -0
  33. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorization_resolution.py +0 -0
  34. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_authorization_rest.py +0 -0
  35. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_config_override_diagnostics.py +0 -0
  36. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_config_resource_registries.py +0 -0
  37. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_http_builder.py +0 -0
  38. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_lambda_api.py +0 -0
  39. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_lambda_api_config.py +0 -0
  40. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_lambda_function.py +0 -0
  41. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_layer_autodiscovery.py +0 -0
  42. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_packaging_current.py +0 -0
  43. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_permission_resolution.py +0 -0
  44. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_public_api.py +0 -0
  45. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_python_compatibility.py +0 -0
  46. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_resource_builder_options.py +0 -0
  47. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_resource_builder_state.py +0 -0
  48. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_resource_graph.py +0 -0
  49. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_resource_registries.py +0 -0
  50. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_rest_builder.py +0 -0
  51. {lambda_api_decorators_cdk-0.4.4 → lambda_api_decorators_cdk-0.4.5}/tests/test_source_layout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lambda-api-decorators-cdk
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: AWS CDK integration for Lambda API Decorators. Generate AWS Lambda and API Gateway infrastructure from decorated Python handlers.
5
5
  Author: Mateo Marcos, Emanuel Arguinarena, Lucas Picchi
6
6
  License: MIT License
@@ -87,6 +87,8 @@ class LambdaApiConfig:
87
87
  self.add_s3_bucket(key, bucket)
88
88
  for key, authorizer in (authorizers or {}).items():
89
89
  self.add_authorizer(key, authorizer)
90
+ for key, authorizer in (authorizer_registry or {}).items():
91
+ self.register_authorizer(key, authorizer)
90
92
  self._default_authorizer = None
91
93
  self.set_default_authorizer(default_authorizer)
92
94
 
@@ -104,8 +106,6 @@ class LambdaApiConfig:
104
106
  self.register_dynamodb_table(key, value)
105
107
  for key, value in (s3_bucket_registry or {}).items():
106
108
  self.register_s3_bucket(key, value)
107
- for key, value in (authorizer_registry or {}).items():
108
- self.register_authorizer(key, value)
109
109
 
110
110
  @staticmethod
111
111
  def _validate_runtime_name(runtime: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lambda-api-decorators-cdk
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: AWS CDK integration for Lambda API Decorators. Generate AWS Lambda and API Gateway infrastructure from decorated Python handlers.
5
5
  Author: Mateo Marcos, Emanuel Arguinarena, Lucas Picchi
6
6
  License: MIT License
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.4.5",
3
+ "distance": 0,
4
+ "node": "g1213adb933f00b41da6299325c30f46821c50c91",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-24"
8
+ }
@@ -5,7 +5,7 @@ from aws_cdk import App, Stack, aws_apigateway as apigateway
5
5
  from aws_cdk import aws_apigatewayv2_authorizers as http_authorizers
6
6
  from aws_cdk import aws_cognito as cognito
7
7
 
8
- from lambda_api_decorators_cdk import LambdaApiConfig
8
+ from lambda_api_decorators_cdk import LambdaApi, LambdaApiConfig
9
9
 
10
10
 
11
11
  @pytest.fixture
@@ -43,6 +43,95 @@ def test_constructor_registers_both_authorizer_families_before_default(authorize
43
43
  assert builder.default_authorizer == "users"
44
44
 
45
45
 
46
+ def test_constructor_registers_authorizer_registry_before_selecting_default(authorizers):
47
+ cognito_authorizer = authorizers["rest"]
48
+ config = LambdaApiConfig(
49
+ authorizer_registry={"cognito": cognito_authorizer},
50
+ default_authorizer="cognito",
51
+ )
52
+
53
+ builder = config._create_resource_builder()
54
+ assert builder.authorizers["cognito"] is cognito_authorizer
55
+ assert builder.default_authorizer == "cognito"
56
+
57
+
58
+ def test_authorizer_registry_default_resolves_to_the_original_cdkl_object(authorizers):
59
+ cognito_authorizer = authorizers["rest"]
60
+ config = LambdaApiConfig(
61
+ authorizer_registry={"cognito": cognito_authorizer},
62
+ default_authorizer="cognito",
63
+ )
64
+
65
+ builder = config._create_resource_builder()
66
+ assert builder.authorizers[builder.default_authorizer] is cognito_authorizer
67
+
68
+
69
+ @pytest.mark.parametrize("registry", [{}, {"cognito": None}])
70
+ def test_authorizer_registry_default_rejects_an_unregistered_key(authorizers, registry):
71
+ with pytest.raises((KeyError, TypeError), match="cognito|authorizer"):
72
+ LambdaApiConfig(authorizer_registry=registry, default_authorizer="cognito")
73
+
74
+
75
+ def test_authorizer_registry_without_default_remains_public_by_default(authorizers):
76
+ cognito_authorizer = authorizers["rest"]
77
+ config = LambdaApiConfig(authorizer_registry={"cognito": cognito_authorizer})
78
+
79
+ builder = config._create_resource_builder()
80
+ assert builder.authorizers["cognito"] is cognito_authorizer
81
+ assert builder.default_authorizer is None
82
+
83
+
84
+ def test_authorizer_registry_and_default_snapshots_are_isolated(authorizers):
85
+ cognito_authorizer = authorizers["rest"]
86
+ config = LambdaApiConfig(
87
+ authorizer_registry={"cognito": cognito_authorizer},
88
+ default_authorizer="cognito",
89
+ )
90
+
91
+ first = config._create_resource_builder()
92
+ second = config._create_resource_builder()
93
+ assert first is not second
94
+ assert first.authorizers is not second.authorizers
95
+ assert first.authorizers["cognito"] is second.authorizers["cognito"] is cognito_authorizer
96
+ assert first.default_authorizer == second.default_authorizer == "cognito"
97
+ first.authorizers.clear()
98
+ assert config._create_resource_builder().authorizers["cognito"] is cognito_authorizer
99
+
100
+
101
+ def test_registering_authorizer_then_selecting_default_still_works(authorizers):
102
+ cognito_authorizer = authorizers["rest"]
103
+ config = LambdaApiConfig()
104
+ config.register_authorizer("cognito", cognito_authorizer)
105
+ config.set_default_authorizer("cognito")
106
+
107
+ builder = config._create_resource_builder()
108
+ assert builder.authorizers["cognito"] is cognito_authorizer
109
+ assert builder.default_authorizer == "cognito"
110
+
111
+
112
+ def test_lambda_api_consumes_registry_and_default_without_constructor_keyerror(
113
+ authorizers, monkeypatch
114
+ ):
115
+ calls = []
116
+
117
+ class NoopBuilder:
118
+ def build(self, *args, **kwargs):
119
+ calls.append((args, kwargs))
120
+
121
+ monkeypatch.setattr(
122
+ LambdaApiConfig,
123
+ "_create_resource_builder",
124
+ lambda self: NoopBuilder(),
125
+ )
126
+ config = LambdaApiConfig(
127
+ authorizer_registry={"cognito": authorizers["rest"]},
128
+ default_authorizer="cognito",
129
+ )
130
+
131
+ LambdaApi(Stack(App(), "LambdaApiAuthorizerConfig"), "Api", lambda_path="lambdas", config=config)
132
+ assert calls
133
+
134
+
46
135
  @pytest.mark.parametrize("key,error", [(None, TypeError), (1, TypeError), ("", ValueError), (" ", ValueError)])
47
136
  def test_authorizer_registry_rejects_invalid_keys(authorizers, key, error):
48
137
  with pytest.raises(error):
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.4.4",
3
- "distance": 0,
4
- "node": "g5c3dbf6bef4f271710190a53ee4108488372b701",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-09-22"
8
- }