11
11
FEATURE_DEFAULT_VAL_KEY ,
12
12
FEATURES_KEY ,
13
13
RULE_DEFAULT_VALUE ,
14
- RULE_NAME_KEY ,
15
14
RULES_KEY ,
16
15
ConditionsValidator ,
17
16
RuleAction ,
@@ -116,12 +115,11 @@ def test_invalid_rule():
116
115
FEATURES_KEY : {
117
116
"my_feature" : {
118
117
FEATURE_DEFAULT_VAL_KEY : False ,
119
- RULES_KEY : [
120
- {
121
- RULE_NAME_KEY : "tenant id equals 345345435" ,
118
+ RULES_KEY : {
119
+ "tenant id equals 345345435" : {
122
120
RULE_DEFAULT_VALUE : "False" ,
123
- },
124
- ] ,
121
+ }
122
+ } ,
125
123
}
126
124
}
127
125
}
@@ -134,12 +132,11 @@ def test_invalid_rule():
134
132
FEATURES_KEY : {
135
133
"my_feature" : {
136
134
FEATURE_DEFAULT_VAL_KEY : False ,
137
- RULES_KEY : [
138
- {
139
- RULE_NAME_KEY : "tenant id equals 345345435" ,
135
+ RULES_KEY : {
136
+ "tenant id equals 345345435" : {
140
137
RULE_DEFAULT_VALUE : False ,
141
- },
142
- ] ,
138
+ }
139
+ } ,
143
140
}
144
141
}
145
142
}
@@ -152,9 +149,9 @@ def test_invalid_rule():
152
149
FEATURES_KEY : {
153
150
"my_feature" : {
154
151
FEATURE_DEFAULT_VAL_KEY : False ,
155
- RULES_KEY : [
156
- { RULE_NAME_KEY : "tenant id equals 345345435" , RULE_DEFAULT_VALUE : False , CONDITIONS_KEY : []},
157
- ] ,
152
+ RULES_KEY : {
153
+ "tenant id equals 345345435" : { RULE_DEFAULT_VALUE : False , CONDITIONS_KEY : []},
154
+ } ,
158
155
}
159
156
}
160
157
}
@@ -167,9 +164,9 @@ def test_invalid_rule():
167
164
FEATURES_KEY : {
168
165
"my_feature" : {
169
166
FEATURE_DEFAULT_VAL_KEY : False ,
170
- RULES_KEY : [
171
- { RULE_NAME_KEY : "tenant id equals 345345435" , RULE_DEFAULT_VALUE : False , CONDITIONS_KEY : {}},
172
- ] ,
167
+ RULES_KEY : {
168
+ "tenant id equals 345345435" : { RULE_DEFAULT_VALUE : False , CONDITIONS_KEY : {}},
169
+ } ,
173
170
}
174
171
}
175
172
}
@@ -184,13 +181,12 @@ def test_invalid_condition():
184
181
FEATURES_KEY : {
185
182
"my_feature" : {
186
183
FEATURE_DEFAULT_VAL_KEY : False ,
187
- RULES_KEY : [
188
- {
189
- RULE_NAME_KEY : "tenant id equals 345345435" ,
184
+ RULES_KEY : {
185
+ "tenant id equals 345345435" : {
190
186
RULE_DEFAULT_VALUE : False ,
191
187
CONDITIONS_KEY : {CONDITION_ACTION : "stuff" , CONDITION_KEY : "a" , CONDITION_VALUE : "a" },
192
- },
193
- ] ,
188
+ }
189
+ } ,
194
190
}
195
191
}
196
192
}
@@ -203,13 +199,12 @@ def test_invalid_condition():
203
199
FEATURES_KEY : {
204
200
"my_feature" : {
205
201
FEATURE_DEFAULT_VAL_KEY : False ,
206
- RULES_KEY : [
207
- {
208
- RULE_NAME_KEY : "tenant id equals 345345435" ,
202
+ RULES_KEY : {
203
+ "tenant id equals 345345435" : {
209
204
RULE_DEFAULT_VALUE : False ,
210
205
CONDITIONS_KEY : {CONDITION_ACTION : RuleAction .EQUALS .value },
211
- },
212
- ] ,
206
+ }
207
+ } ,
213
208
}
214
209
}
215
210
}
@@ -222,17 +217,16 @@ def test_invalid_condition():
222
217
FEATURES_KEY : {
223
218
"my_feature" : {
224
219
FEATURE_DEFAULT_VAL_KEY : False ,
225
- RULES_KEY : [
226
- {
227
- RULE_NAME_KEY : "tenant id equals 345345435" ,
220
+ RULES_KEY : {
221
+ "tenant id equals 345345435" : {
228
222
RULE_DEFAULT_VALUE : False ,
229
223
CONDITIONS_KEY : {
230
224
CONDITION_ACTION : RuleAction .EQUALS .value ,
231
225
CONDITION_KEY : 5 ,
232
226
CONDITION_VALUE : "a" ,
233
227
},
234
- },
235
- ] ,
228
+ }
229
+ } ,
236
230
}
237
231
}
238
232
}
@@ -286,7 +280,7 @@ def test_validate_condition_invalid_condition_type():
286
280
287
281
# WHEN calling validate_condition
288
282
# THEN raise ConfigurationError
289
- with pytest .raises (ConfigurationError , match = "Invalid condition type " ):
283
+ with pytest .raises (ConfigurationError , match = "Feature rule condition must be a dictionary " ):
290
284
ConditionsValidator .validate_condition (condition = condition , rule_name = "dummy" )
291
285
292
286
@@ -296,7 +290,7 @@ def test_validate_condition_invalid_condition_action():
296
290
297
291
# WHEN calling validate_condition
298
292
# THEN raise ConfigurationError
299
- with pytest .raises (ConfigurationError , match = "Invalid action value" ):
293
+ with pytest .raises (ConfigurationError , match = "' action' value must be either " ):
300
294
ConditionsValidator .validate_condition_action (condition = condition , rule_name = "dummy" )
301
295
302
296
@@ -306,7 +300,7 @@ def test_validate_condition_invalid_condition_key():
306
300
307
301
# WHEN calling validate_condition
308
302
# THEN raise ConfigurationError
309
- with pytest .raises (ConfigurationError , match = "Invalid key value" ):
303
+ with pytest .raises (ConfigurationError , match = "' key' value must be a non empty string " ):
310
304
ConditionsValidator .validate_condition_key (condition = condition , rule_name = "dummy" )
311
305
312
306
@@ -318,28 +312,21 @@ def test_validate_condition_missing_condition_value():
318
312
}
319
313
320
314
# WHEN calling validate_condition
321
- with pytest .raises (ConfigurationError , match = "Missing condition value " ):
315
+ with pytest .raises (ConfigurationError , match = "'value' key must not be empty " ):
322
316
ConditionsValidator .validate_condition_value (condition = condition , rule_name = "dummy" )
323
317
324
318
325
- def test_new_rule_format ():
326
- new_features = {
327
- "my_feature" : {
328
- "default" : True ,
329
- "rules" : {
330
- "tenant id equals 345345435" : {
331
- "when_match" : False ,
332
- "conditions" : [
333
- {
334
- "action" : "EQUALS" ,
335
- "key" : "tenant_id" ,
336
- "value" : "345345435" ,
337
- }
338
- ],
339
- },
340
- },
341
- }
342
- }
319
+ def test_validate_rule_invalid_rule_type ():
320
+ # GIVEN an invalid rule type of empty list
321
+ # WHEN calling validate_rule
322
+ # THEN raise ConfigurationError
323
+ with pytest .raises (ConfigurationError , match = "Feature rule must be a dictionary" ):
324
+ RulesValidator .validate_rule (rule = [], rule_name = "dummy" , feature_name = "dummy" )
343
325
344
- rules = RulesValidator (feature = new_features )
345
- rules .validate ()
326
+
327
+ def test_validate_rule_invalid_rule_name ():
328
+ # GIVEN a rule name is empty
329
+ # WHEN calling validate_rule_name
330
+ # THEN raise ConfigurationError
331
+ with pytest .raises (ConfigurationError , match = "Rule name key must have a non-empty string" ):
332
+ RulesValidator .validate_rule_name (rule_name = "" , feature_name = "dummy" )
0 commit comments