test(rewrite): invalided topic rewrite rule

This commit is contained in:
JimMoen 2022-11-14 16:40:01 +08:00
parent 32a885017b
commit db08efa0ac
No known key found for this signature in database
GPG Key ID: 87A520B4F76BA86D
1 changed files with 25 additions and 0 deletions

View File

@ -30,6 +30,13 @@
{rewrite, sub, <<"c/#">>,<<"^c/(.+)$">>,<<"sub/%c/$1">>} {rewrite, sub, <<"c/#">>,<<"^c/(.+)$">>,<<"sub/%c/$1">>}
]). ]).
-define(BAD_RULES_1, [{rewrite, pub, <<"x/#">>,<<"^x/y/(.+)$">>,<<"z/y/+">>}]).
%% empty topic filter/name won't be ranched cased `emqx.conf` will be checked before emqx started
%% but we need this check for emqx-ee modules api
-define(BAD_RULES_2, [{rewrite, pub, <<"">>,<<"^x/y/(.+)$">>,<<"z/y/+">>}]).
-define(BAD_RULES_3, [{rewrite, pub, <<"name/#">>,<<"^name/(.+)$">>,<<"">>}]).
all() -> emqx_ct:all(?MODULE). all() -> emqx_ct:all(?MODULE).
init_per_suite(Config) -> init_per_suite(Config) ->
@ -83,11 +90,29 @@ t_mod_rewrite(_Config) ->
t_rewrite_rule(_Config) -> t_rewrite_rule(_Config) ->
{PubRules, SubRules} = emqx_mod_rewrite:compile_rules(?RULES), {PubRules, SubRules} = emqx_mod_rewrite:compile_rules(?RULES),
%% assert ordering
?assertMatch([{rewrite, <<"x/#">>, _, <<"z/y/$1">>},
{rewrite, <<"name/#">>, _, <<"pub/%u/$1">>},
{rewrite, <<"c/#">>, _, <<"pub/%c/$1">>}],
PubRules),
?assertMatch([{rewrite, <<"y/+/z/#">>, _, <<"y/z/$2">>},
{rewrite, <<"name/#">>, _, <<"sub/%u/$1">>},
{rewrite, <<"c/#">>, _, <<"sub/%c/$1">>}],
SubRules),
?assertEqual(<<"z/y/2">>, emqx_mod_rewrite:match_and_rewrite(<<"x/y/2">>, PubRules, [])), ?assertEqual(<<"z/y/2">>, emqx_mod_rewrite:match_and_rewrite(<<"x/y/2">>, PubRules, [])),
?assertEqual(<<"x/1/2">>, emqx_mod_rewrite:match_and_rewrite(<<"x/1/2">>, PubRules, [])), ?assertEqual(<<"x/1/2">>, emqx_mod_rewrite:match_and_rewrite(<<"x/1/2">>, PubRules, [])),
?assertEqual(<<"y/z/b">>, emqx_mod_rewrite:match_and_rewrite(<<"y/a/z/b">>, SubRules, [])), ?assertEqual(<<"y/z/b">>, emqx_mod_rewrite:match_and_rewrite(<<"y/a/z/b">>, SubRules, [])),
?assertEqual(<<"y/def">>, emqx_mod_rewrite:match_and_rewrite(<<"y/def">>, SubRules, [])). ?assertEqual(<<"y/def">>, emqx_mod_rewrite:match_and_rewrite(<<"y/def">>, SubRules, [])).
t_rewrite_bad_rule_1(_Config) ->
?assertEqual({[], []}, emqx_mod_rewrite:compile_rules(?BAD_RULES_1)).
t_rewrite_bad_rule_2(_Config) ->
?assertEqual({[], []}, emqx_mod_rewrite:compile_rules(?BAD_RULES_2)).
t_rewrite_bad_rule_3(_Config) ->
?assertEqual({[], []}, emqx_mod_rewrite:compile_rules(?BAD_RULES_3)).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Internal functions %% Internal functions
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------