Skip to content

Commit 0915bfc

Browse files
amimasJohnVillalovos
authored andcommitted
test(api): validate feature flag strategy and scope deletion
Add functional tests to ensure that feature flag strategies and scopes can be removed using the `_destroy` flag in the update payload, as supported by the GitLab API.
1 parent 9a9322d commit 0915bfc

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/functional/api/test_project_feature_flags.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,52 @@ def test_delete_feature_flag(project, feature_flag):
5656
feature_flag.delete()
5757
with pytest.raises(exceptions.GitlabGetError):
5858
project.feature_flags.get(feature_flag.name)
59+
60+
61+
def test_delete_feature_flag_strategy(project, feature_flag):
62+
strategies = [
63+
{"name": "default", "parameters": {}},
64+
{"name": "userWithId", "parameters": {"userIds": "user1"}},
65+
]
66+
feature_flag.strategies = strategies
67+
feature_flag.save()
68+
69+
feature_flag = project.feature_flags.get(feature_flag.name)
70+
assert len(feature_flag.strategies) == 2
71+
72+
# Remove strategy using _destroy
73+
strategies = feature_flag.strategies
74+
for strategy in strategies:
75+
if strategy["name"] == "userWithId":
76+
strategy["_destroy"] = True
77+
feature_flag.save()
78+
79+
feature_flag = project.feature_flags.get(feature_flag.name)
80+
assert len(feature_flag.strategies) == 1
81+
assert feature_flag.strategies[0]["name"] == "default"
82+
83+
84+
def test_delete_feature_flag_scope(project, feature_flag):
85+
strategies = [
86+
{
87+
"name": "default",
88+
"parameters": {},
89+
"scopes": [{"environment_scope": "*"}, {"environment_scope": "production"}],
90+
}
91+
]
92+
feature_flag.strategies = strategies
93+
feature_flag.save()
94+
95+
feature_flag = project.feature_flags.get(feature_flag.name)
96+
assert len(feature_flag.strategies[0]["scopes"]) == 2
97+
98+
# Remove scope using _destroy
99+
strategies = feature_flag.strategies
100+
for scope in strategies[0]["scopes"]:
101+
if scope["environment_scope"] == "production":
102+
scope["_destroy"] = True
103+
feature_flag.save()
104+
105+
feature_flag = project.feature_flags.get(feature_flag.name)
106+
assert len(feature_flag.strategies[0]["scopes"]) == 1
107+
assert feature_flag.strategies[0]["scopes"][0]["environment_scope"] == "*"

0 commit comments

Comments
 (0)