@@ -31,38 +31,27 @@ suite() ->
3131
3232init_per_suite (Config ) ->
3333 ok = application :load (rabbitmq_mqtt ),
34+ meck :new (rabbit_runtime_parameters , [passthrough , no_link ]),
3435 Config .
3536end_per_suite (Config ) ->
3637 ok = application :unload (rabbitmq_mqtt ),
38+ meck :unload (rabbit_runtime_parameters ),
3739 Config .
3840init_per_group (_ , Config ) -> Config .
3941end_per_group (_ , Config ) -> Config .
40- init_per_testcase (get_vhost , Config ) ->
41- mnesia :start (),
42- mnesia :create_table (rabbit_runtime_parameters , [
43- {attributes , record_info (fields , runtime_parameters )},
44- {record_name , runtime_parameters }]),
45- meck :new (rabbit_feature_flags , [passthrough , no_link ]),
46- meck :expect (
47- rabbit_feature_flags , is_enabled ,
48- fun
49- (khepri_db , _ ) -> false ;
50- (FeatureNames , _ ) -> meck :passthrough ([FeatureNames ])
51- end ),
52- Config ;
5342init_per_testcase (_ , Config ) -> Config .
54- end_per_testcase (get_vhost , Config ) ->
55- meck :unload (rabbit_feature_flags ),
56- mnesia :stop (),
57- Config ;
5843end_per_testcase (_ , Config ) -> Config .
5944
6045ignore_colons (B ) -> application :set_env (rabbitmq_mqtt , ignore_colons_in_username , B ).
6146
6247ignores_colons_in_username_if_option_set (_Config ) ->
63- ignore_colons (true ),
64- ? assertEqual ({rabbit_mqtt_util :env (vhost ), <<" a:b:c" >>},
65- rabbit_mqtt_processor :get_vhost_username (<<" a:b:c" >>)).
48+ clear_vhost_global_parameters (),
49+ ignore_colons (true ),
50+ ? assertEqual (undefined ,
51+ rabbit_mqtt_processor :get_vhost_username (<<" a:b:c" >>)),
52+ ? assertEqual ({plugin_configuration_or_default_vhost ,
53+ {rabbit_mqtt_util :env (vhost ), <<" a:b:c" >>}},
54+ rabbit_mqtt_processor :get_vhost (<<" a:b:c" >>, none , 1883 )).
6655
6756interprets_colons_in_username_if_option_not_set (_Config ) ->
6857 ignore_colons (false ),
@@ -150,26 +139,32 @@ get_vhost(_Config) ->
150139
151140 % % certificate user, port/vhost parameter but no mapping, cert/vhost mapping
152141 % % should use cert/vhost mapping
153- set_global_parameter (mqtt_default_vhosts , [
154- {<<" O=client,CN=dummy" >>, <<" somevhost" >>},
155- {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
156- ]),
157- set_global_parameter (mqtt_port_to_vhost_mapping , [
158- {<<" 1884" >>, <<" othervhost" >>}
159- ]),
142+ set_global_parameters (
143+ [{mqtt_default_vhosts ,
144+ [
145+ {<<" O=client,CN=dummy" >>, <<" somevhost" >>},
146+ {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
147+ ]},
148+ {mqtt_port_to_vhost_mapping ,
149+ [
150+ {<<" 1884" >>, <<" othervhost" >>}
151+ ]}]),
160152 {_ , {<<" somevhost" >>, <<" guest" >>}} = rabbit_mqtt_processor :get_vhost (<<" guest" >>, <<" O=client,CN=dummy" >>, 1883 ),
161153 clear_vhost_global_parameters (),
162154
163155 % % certificate user, port/vhost parameter, cert/vhost parameter
164156 % % cert/vhost parameter takes precedence
165- set_global_parameter (mqtt_default_vhosts , [
166- {<<" O=client,CN=dummy" >>, <<" cert-somevhost" >>},
167- {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
168- ]),
169- set_global_parameter (mqtt_port_to_vhost_mapping , [
170- {<<" 1883" >>, <<" port-vhost" >>},
171- {<<" 1884" >>, <<" othervhost" >>}
172- ]),
157+ set_global_parameters (
158+ [{mqtt_default_vhosts ,
159+ [
160+ {<<" O=client,CN=dummy" >>, <<" cert-somevhost" >>},
161+ {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
162+ ]},
163+ {mqtt_port_to_vhost_mapping ,
164+ [
165+ {<<" 1883" >>, <<" port-vhost" >>},
166+ {<<" 1884" >>, <<" othervhost" >>}
167+ ]}]),
173168 {_ , {<<" cert-somevhost" >>, <<" guest" >>}} = rabbit_mqtt_processor :get_vhost (<<" guest" >>, <<" O=client,CN=dummy" >>, 1883 ),
174169 clear_vhost_global_parameters (),
175170
@@ -179,28 +174,30 @@ get_vhost(_Config) ->
179174
180175 % % not a certificate user, port/vhost parameter, cert/vhost parameter
181176 % % port/vhost mapping is used, as cert/vhost should not be used
182- set_global_parameter (mqtt_default_vhosts , [
183- {<<" O=cert" >>, <<" cert-somevhost" >>},
184- {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
185- ]),
186- set_global_parameter (mqtt_port_to_vhost_mapping , [
187- {<<" 1883" >>, <<" port-vhost" >>},
188- {<<" 1884" >>, <<" othervhost" >>}
189- ]),
177+ set_global_parameters (
178+ [{mqtt_default_vhosts ,
179+ [
180+ {<<" O=cert" >>, <<" cert-somevhost" >>},
181+ {<<" O=client,CN=otheruser" >>, <<" othervhost" >>}
182+ ]},
183+ {mqtt_port_to_vhost_mapping ,
184+ [
185+ {<<" 1883" >>, <<" port-vhost" >>},
186+ {<<" 1884" >>, <<" othervhost" >>}
187+ ]}]),
190188 {_ , {<<" port-vhost" >>, <<" guest" >>}} = rabbit_mqtt_processor :get_vhost (<<" guest" >>, none , 1883 ),
191189 clear_vhost_global_parameters (),
192190 ok .
193191
194192set_global_parameter (Key , Term ) ->
195- InsertParameterFun = fun () ->
196- mnesia :write (rabbit_runtime_parameters , # runtime_parameters {key = Key , value = Term }, write )
197- end ,
193+ set_global_parameters ([{Key , Term }]).
198194
199- {atomic , ok } = mnesia :transaction (InsertParameterFun ).
195+ set_global_parameters (KVList ) ->
196+ meck :expect (
197+ rabbit_runtime_parameters , value_global ,
198+ fun (Key ) -> proplists :get_value (Key , KVList , not_found ) end ).
200199
201200clear_vhost_global_parameters () ->
202- DeleteParameterFun = fun () ->
203- ok = mnesia :delete (rabbit_runtime_parameters , mqtt_default_vhosts , write ),
204- ok = mnesia :delete (rabbit_runtime_parameters , mqtt_port_to_vhost_mapping , write )
205- end ,
206- {atomic , ok } = mnesia :transaction (DeleteParameterFun ).
201+ meck :expect (
202+ rabbit_runtime_parameters , value_global ,
203+ fun (_ ) -> not_found end ).
0 commit comments