Skip to content

Commit 3b50664

Browse files
committed
refactor(schema-validator): rename Action to RuleAction
1 parent 7fa8ec2 commit 3b50664

File tree

5 files changed

+35
-35
lines changed

5 files changed

+35
-35
lines changed

aws_lambda_powertools/utilities/feature_flags/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
from .base import StoreProvider
55
from .exceptions import ConfigurationError
66
from .feature_flags import FeatureFlags
7-
from .schema import ACTION, SchemaValidator
7+
from .schema import RuleAction, SchemaValidator
88

99
__all__ = [
1010
"ConfigurationError",
1111
"FeatureFlags",
12-
"ACTION",
12+
"RuleAction",
1313
"SchemaValidator",
1414
"AppConfigStore",
1515
"StoreProvider",

aws_lambda_powertools/utilities/feature_flags/feature_flags.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ def _match_by_action(self, action: str, condition_value: Any, context_value: Any
2424
if not context_value:
2525
return False
2626
mapping_by_action = {
27-
schema.ACTION.EQUALS.value: lambda a, b: a == b,
28-
schema.ACTION.STARTSWITH.value: lambda a, b: a.startswith(b),
29-
schema.ACTION.ENDSWITH.value: lambda a, b: a.endswith(b),
30-
schema.ACTION.CONTAINS.value: lambda a, b: a in b,
27+
schema.RuleAction.EQUALS.value: lambda a, b: a == b,
28+
schema.RuleAction.STARTSWITH.value: lambda a, b: a.startswith(b),
29+
schema.RuleAction.ENDSWITH.value: lambda a, b: a.endswith(b),
30+
schema.RuleAction.CONTAINS.value: lambda a, b: a in b,
3131
}
3232

3333
try:

aws_lambda_powertools/utilities/feature_flags/schema.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
CONDITION_ACTION = "action"
1919

2020

21-
class ACTION(str, Enum):
21+
class RuleAction(str, Enum):
2222
EQUALS = "EQUALS"
2323
STARTSWITH = "STARTSWITH"
2424
ENDSWITH = "ENDSWITH"
@@ -129,7 +129,7 @@ def _validate_condition(self, rule_name: str, condition: Dict[str, str]) -> None
129129
@staticmethod
130130
def _validate_condition_action(condition: Dict[str, Any], rule_name: str):
131131
action = condition.get(CONDITION_ACTION, "")
132-
if action not in ACTION.__members__:
132+
if action not in RuleAction.__members__:
133133
raise ConfigurationError(f"invalid action value, rule_name={rule_name}, action={action}")
134134

135135
@staticmethod

tests/functional/feature_toggles/test_feature_toggles.py

+18-18
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from aws_lambda_powertools.utilities.feature_flags import ConfigurationError, schema
77
from aws_lambda_powertools.utilities.feature_flags.appconfig import AppConfigStore
88
from aws_lambda_powertools.utilities.feature_flags.feature_flags import FeatureFlags
9-
from aws_lambda_powertools.utilities.feature_flags.schema import ACTION
9+
from aws_lambda_powertools.utilities.feature_flags.schema import RuleAction
1010
from aws_lambda_powertools.utilities.parameters import GetParameterError
1111

1212

@@ -56,7 +56,7 @@ def test_toggles_rule_does_not_match(mocker, config):
5656
"value_when_applies": False,
5757
"conditions": [
5858
{
59-
"action": ACTION.EQUALS.value,
59+
"action": RuleAction.EQUALS.value,
6060
"key": "tenant_id",
6161
"value": "345345435",
6262
}
@@ -106,7 +106,7 @@ def test_toggles_conditions_no_match(mocker, config):
106106
"value_when_applies": False,
107107
"conditions": [
108108
{
109-
"action": ACTION.EQUALS.value,
109+
"action": RuleAction.EQUALS.value,
110110
"key": "tenant_id",
111111
"value": "345345435",
112112
}
@@ -136,12 +136,12 @@ def test_toggles_conditions_rule_match_equal_multiple_conditions(mocker, config)
136136
"value_when_applies": expected_value,
137137
"conditions": [
138138
{
139-
"action": ACTION.EQUALS.value, # this rule will match, it has multiple conditions
139+
"action": RuleAction.EQUALS.value, # this rule will match, it has multiple conditions
140140
"key": "tenant_id",
141141
"value": tenant_id_val,
142142
},
143143
{
144-
"action": ACTION.EQUALS.value,
144+
"action": RuleAction.EQUALS.value,
145145
"key": "username",
146146
"value": username_val,
147147
},
@@ -178,12 +178,12 @@ def test_toggles_conditions_no_rule_match_equal_multiple_conditions(mocker, conf
178178
"value_when_applies": False,
179179
"conditions": [
180180
{
181-
"action": ACTION.EQUALS.value,
181+
"action": RuleAction.EQUALS.value,
182182
"key": "tenant_id",
183183
"value": "645654",
184184
},
185185
{
186-
"action": ACTION.EQUALS.value,
186+
"action": RuleAction.EQUALS.value,
187187
"key": "username",
188188
"value": "a",
189189
},
@@ -214,12 +214,12 @@ def test_toggles_conditions_rule_match_multiple_actions_multiple_rules_multiple_
214214
"value_when_applies": expected_value_first_check,
215215
"conditions": [
216216
{
217-
"action": ACTION.EQUALS.value,
217+
"action": RuleAction.EQUALS.value,
218218
"key": "tenant_id",
219219
"value": "6",
220220
},
221221
{
222-
"action": ACTION.STARTSWITH.value,
222+
"action": RuleAction.STARTSWITH.value,
223223
"key": "username",
224224
"value": "a",
225225
},
@@ -230,17 +230,17 @@ def test_toggles_conditions_rule_match_multiple_actions_multiple_rules_multiple_
230230
"value_when_applies": expected_value_second_check,
231231
"conditions": [
232232
{
233-
"action": ACTION.EQUALS.value,
233+
"action": RuleAction.EQUALS.value,
234234
"key": "tenant_id",
235235
"value": "4446",
236236
},
237237
{
238-
"action": ACTION.STARTSWITH.value,
238+
"action": RuleAction.STARTSWITH.value,
239239
"key": "username",
240240
"value": "a",
241241
},
242242
{
243-
"action": ACTION.ENDSWITH.value,
243+
"action": RuleAction.ENDSWITH.value,
244244
"key": "username",
245245
"value": "z",
246246
},
@@ -283,7 +283,7 @@ def test_toggles_match_rule_with_contains_action(mocker, config):
283283
"value_when_applies": expected_value,
284284
"conditions": [
285285
{
286-
"action": ACTION.CONTAINS.value,
286+
"action": RuleAction.CONTAINS.value,
287287
"key": "tenant_id",
288288
"value": ["6", "2"],
289289
}
@@ -310,7 +310,7 @@ def test_toggles_no_match_rule_with_contains_action(mocker, config):
310310
"value_when_applies": True,
311311
"conditions": [
312312
{
313-
"action": ACTION.CONTAINS.value,
313+
"action": RuleAction.CONTAINS.value,
314314
"key": "tenant_id",
315315
"value": ["8", "2"],
316316
}
@@ -337,7 +337,7 @@ def test_multiple_features_enabled(mocker, config):
337337
"value_when_applies": True,
338338
"conditions": [
339339
{
340-
"action": ACTION.CONTAINS.value,
340+
"action": RuleAction.CONTAINS.value,
341341
"key": "tenant_id",
342342
"value": ["6", "2"],
343343
}
@@ -370,7 +370,7 @@ def test_multiple_features_only_some_enabled(mocker, config):
370370
"value_when_applies": True,
371371
"conditions": [
372372
{
373-
"action": ACTION.CONTAINS.value,
373+
"action": RuleAction.CONTAINS.value,
374374
"key": "tenant_id",
375375
"value": ["6", "2"],
376376
}
@@ -392,7 +392,7 @@ def test_multiple_features_only_some_enabled(mocker, config):
392392
"value_when_applies": False,
393393
"conditions": [
394394
{
395-
"action": ACTION.EQUALS.value,
395+
"action": RuleAction.EQUALS.value,
396396
"key": "tenant_id",
397397
"value": "7",
398398
}
@@ -456,7 +456,7 @@ def test_match_by_action_attribute_error(mocker, config):
456456
# GIVEN a startswith action and 2 integer
457457
conf_store = init_configuration_store(mocker, {}, config)
458458
# WHEN calling _match_by_action
459-
result = conf_store._match_by_action(ACTION.STARTSWITH.value, 1, 100)
459+
result = conf_store._match_by_action(RuleAction.STARTSWITH.value, 1, 100)
460460
# THEN swallow the AttributeError and return False
461461
assert result is False
462462

tests/functional/feature_toggles/test_schema_validation.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from aws_lambda_powertools.utilities.feature_flags.exceptions import ConfigurationError
66
from aws_lambda_powertools.utilities.feature_flags.schema import (
7-
ACTION,
87
CONDITION_ACTION,
98
CONDITION_KEY,
109
CONDITION_VALUE,
@@ -14,6 +13,7 @@
1413
RULE_DEFAULT_VALUE,
1514
RULE_NAME_KEY,
1615
RULES_KEY,
16+
RuleAction,
1717
RulesValidator,
1818
SchemaValidator,
1919
)
@@ -195,7 +195,7 @@ def test_invalid_condition():
195195
{
196196
RULE_NAME_KEY: "tenant id equals 345345435",
197197
RULE_DEFAULT_VALUE: False,
198-
CONDITIONS_KEY: {CONDITION_ACTION: ACTION.EQUALS.value},
198+
CONDITIONS_KEY: {CONDITION_ACTION: RuleAction.EQUALS.value},
199199
},
200200
],
201201
}
@@ -214,7 +214,7 @@ def test_invalid_condition():
214214
RULE_NAME_KEY: "tenant id equals 345345435",
215215
RULE_DEFAULT_VALUE: False,
216216
CONDITIONS_KEY: {
217-
CONDITION_ACTION: ACTION.EQUALS.value,
217+
CONDITION_ACTION: RuleAction.EQUALS.value,
218218
CONDITION_KEY: 5,
219219
CONDITION_VALUE: "a",
220220
},
@@ -238,22 +238,22 @@ def test_valid_condition_all_actions():
238238
RULE_DEFAULT_VALUE: True,
239239
CONDITIONS_KEY: [
240240
{
241-
CONDITION_ACTION: ACTION.EQUALS.value,
241+
CONDITION_ACTION: RuleAction.EQUALS.value,
242242
CONDITION_KEY: "tenant_id",
243243
CONDITION_VALUE: "645654",
244244
},
245245
{
246-
CONDITION_ACTION: ACTION.STARTSWITH.value,
246+
CONDITION_ACTION: RuleAction.STARTSWITH.value,
247247
CONDITION_KEY: "username",
248248
CONDITION_VALUE: "a",
249249
},
250250
{
251-
CONDITION_ACTION: ACTION.ENDSWITH.value,
251+
CONDITION_ACTION: RuleAction.ENDSWITH.value,
252252
CONDITION_KEY: "username",
253253
CONDITION_VALUE: "a",
254254
},
255255
{
256-
CONDITION_ACTION: ACTION.CONTAINS.value,
256+
CONDITION_ACTION: RuleAction.CONTAINS.value,
257257
CONDITION_KEY: "username",
258258
CONDITION_VALUE: ["a", "b"],
259259
},
@@ -296,7 +296,7 @@ def test_validate_condition_invalid_condition_action():
296296
def test_validate_condition_invalid_condition_key():
297297
# GIVEN a configuration with a missing "key"
298298
validator = SchemaValidator(EMPTY_SCHEMA)
299-
condition = {"action": ACTION.EQUALS.value}
299+
condition = {"action": RuleAction.EQUALS.value}
300300

301301
# WHEN calling _validate_condition
302302
# THEN raise ConfigurationError
@@ -307,7 +307,7 @@ def test_validate_condition_invalid_condition_key():
307307
def test_validate_condition_missing_condition_value():
308308
# GIVEN a configuration with a missing condition value
309309
validator = SchemaValidator(EMPTY_SCHEMA)
310-
condition = {"action": ACTION.EQUALS.value, "key": "Foo"}
310+
condition = {"action": RuleAction.EQUALS.value, "key": "Foo"}
311311

312312
# WHEN calling _validate_condition
313313
with pytest.raises(ConfigurationError, match="Missing condition value"):

0 commit comments

Comments
 (0)