68 lines
2.7 KiB
Erlang
68 lines
2.7 KiB
Erlang
%%--------------------------------------------------------------------
|
|
%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved.
|
|
%%
|
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
|
%% you may not use this file except in compliance with the License.
|
|
%% You may obtain a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing, software
|
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
%% See the License for the specific language governing permissions and
|
|
%% limitations under the License.
|
|
%%--------------------------------------------------------------------
|
|
|
|
-module(emqx_mountpoint_SUITE).
|
|
|
|
-compile(export_all).
|
|
-compile(nowarn_export_all).
|
|
|
|
-import(emqx_mountpoint,
|
|
[ mount/2
|
|
, unmount/2
|
|
, replvar/2
|
|
]).
|
|
|
|
-include_lib("emqx/include/emqx.hrl").
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
|
|
all() -> emqx_ct:all(?MODULE).
|
|
|
|
t_mount(_) ->
|
|
Msg = emqx_message:make(<<"clientid">>, <<"topic">>, <<"payload">>),
|
|
TopicFilters = [{<<"topic">>, #{qos => 2}}],
|
|
?assertEqual(<<"topic">>, mount(undefined, <<"topic">>)),
|
|
?assertEqual(Msg, mount(undefined, Msg)),
|
|
?assertEqual(TopicFilters, mount(undefined, TopicFilters)),
|
|
?assertEqual(<<"device/1/topic">>,
|
|
mount(<<"device/1/">>, <<"topic">>)),
|
|
?assertEqual(Msg#message{topic = <<"device/1/topic">>},
|
|
mount(<<"device/1/">>, Msg)),
|
|
?assertEqual([{<<"device/1/topic">>, #{qos => 2}}],
|
|
mount(<<"device/1/">>, TopicFilters)).
|
|
|
|
t_unmount(_) ->
|
|
Msg = emqx_message:make(<<"clientid">>, <<"device/1/topic">>, <<"payload">>),
|
|
?assertEqual(<<"topic">>, unmount(undefined, <<"topic">>)),
|
|
?assertEqual(Msg, unmount(undefined, Msg)),
|
|
?assertEqual(<<"topic">>, unmount(<<"device/1/">>, <<"device/1/topic">>)),
|
|
?assertEqual(Msg#message{topic = <<"topic">>}, unmount(<<"device/1/">>, Msg)),
|
|
?assertEqual(<<"device/1/topic">>, unmount(<<"device/2/">>, <<"device/1/topic">>)),
|
|
?assertEqual(Msg#message{topic = <<"device/1/topic">>}, unmount(<<"device/2/">>, Msg)).
|
|
|
|
t_replvar(_) ->
|
|
?assertEqual(undefined, replvar(undefined, #{})),
|
|
?assertEqual(<<"mount/user/clientid/">>,
|
|
replvar(<<"mount/%u/%c/">>,
|
|
#{clientid => <<"clientid">>,
|
|
username => <<"user">>
|
|
})),
|
|
?assertEqual(<<"mount/%u/clientid/">>,
|
|
replvar(<<"mount/%u/%c/">>,
|
|
#{clientid => <<"clientid">>,
|
|
username => undefined
|
|
})).
|
|
|