@@ -10,6 +10,8 @@ defmodule EnableFeatureFlagCommandTest do
10
10
11
11
@ command RabbitMQ.CLI.Ctl.Commands.EnableFeatureFlagCommand
12
12
@ feature_flag :ff_from_enable_ff_testsuite
13
+ @ experimental_flag :ff_from_enable_ff_testsuite_experimental
14
+ @ usage_exit_code RabbitMQ.CLI.Core.ExitCodes . exit_usage ( )
13
15
14
16
setup_all do
15
17
RabbitMQ.CLI.Core.Distribution . start ( )
@@ -22,6 +24,11 @@ defmodule EnableFeatureFlagCommandTest do
22
24
desc: ~c" My feature flag" ,
23
25
provided_by: :EnableFeatureFlagCommandTest ,
24
26
stability: :stable
27
+ } ,
28
+ @ experimental_flag => % {
29
+ desc: ~c" An **experimental** feature!" ,
30
+ provided_by: :EnableFeatureFlagCommandTest ,
31
+ stability: :experimental
25
32
}
26
33
}
27
34
@@ -35,7 +42,9 @@ defmodule EnableFeatureFlagCommandTest do
35
42
36
43
{
37
44
:ok ,
38
- opts: % { node: get_rabbit_hostname ( ) , experimental: false } , feature_flag: @ feature_flag
45
+ opts: % { node: get_rabbit_hostname ( ) , experimental: false } ,
46
+ feature_flag: @ feature_flag ,
47
+ experimental_flag: @ experimental_flag
39
48
}
40
49
end
41
50
@@ -63,6 +72,16 @@ defmodule EnableFeatureFlagCommandTest do
63
72
assert match? ( { :badrpc , _ } , @ command . run ( [ "na" ] , opts ) )
64
73
end
65
74
75
+ test "run: enabling an experimental flag requires '--experimental'" , context do
76
+ experimental_flag = Atom . to_string ( context [ :experimental_flag ] )
77
+ assert match? (
78
+ { :error , @ usage_exit_code , _ } ,
79
+ @ command . run ( [ experimental_flag ] , context [ :opts ] )
80
+ )
81
+ opts = Map . put ( context [ :opts ] , :experimental , true )
82
+ assert @ command . run ( [ experimental_flag ] , opts ) == :ok
83
+ end
84
+
66
85
test "run: enabling the same feature flag twice is idempotent" , context do
67
86
enable_feature_flag ( context [ :feature_flag ] )
68
87
assert @ command . run ( [ Atom . to_string ( context [ :feature_flag ] ) ] , context [ :opts ] ) == :ok
@@ -75,6 +94,12 @@ defmodule EnableFeatureFlagCommandTest do
75
94
assert list_feature_flags ( :enabled ) |> Map . has_key? ( context [ :feature_flag ] )
76
95
end
77
96
97
+ test "run: enabling all feature flags with '--experimental' returns an error" , context do
98
+ enable_feature_flag ( context [ :feature_flag ] )
99
+ opts = Map . put ( context [ :opts ] , :experimental , true )
100
+ assert match? ( { :error , @ usage_exit_code , _ } , @ command . run ( [ "all" ] , opts ) )
101
+ end
102
+
78
103
test "banner" , context do
79
104
assert @ command . banner ( [ context [ :feature_flag ] ] , context [ :opts ] ) =~
80
105
~r/ Enabling feature flag \" #{ context [ :feature_flag ] } \" \. \. \. /
0 commit comments