fix(message transformation): forbid empty topic filter list
Fixes https://emqx.atlassian.net/browse/EMQX-12646
This commit is contained in:
parent
c7f4e85760
commit
e99fee68c0
|
@ -231,6 +231,8 @@ do_validate_unique_names([#{<<"name">> := Name} | _Rest], Acc) when is_map_key(N
|
||||||
do_validate_unique_names([#{<<"name">> := Name} | Rest], Acc) ->
|
do_validate_unique_names([#{<<"name">> := Name} | Rest], Acc) ->
|
||||||
do_validate_unique_names(Rest, Acc#{Name => true}).
|
do_validate_unique_names(Rest, Acc#{Name => true}).
|
||||||
|
|
||||||
|
validate_unique_topics([]) ->
|
||||||
|
{error, <<"at least one topic filter must be defined">>};
|
||||||
validate_unique_topics(Topics) ->
|
validate_unique_topics(Topics) ->
|
||||||
Grouped = maps:groups_from_list(
|
Grouped = maps:groups_from_list(
|
||||||
fun(T) -> T end,
|
fun(T) -> T end,
|
||||||
|
|
|
@ -87,6 +87,19 @@ schema_test_() ->
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
)},
|
)},
|
||||||
|
{"topics must be non-empty",
|
||||||
|
?_assertThrow(
|
||||||
|
{_Schema, [
|
||||||
|
#{
|
||||||
|
reason := <<"at least one topic filter must be defined", _/binary>>,
|
||||||
|
value := [],
|
||||||
|
kind := validation_error
|
||||||
|
}
|
||||||
|
]},
|
||||||
|
parse_and_check([
|
||||||
|
transformation(<<"foo">>, [dummy_operation()], #{<<"topics">> => []})
|
||||||
|
])
|
||||||
|
)},
|
||||||
{"names are unique",
|
{"names are unique",
|
||||||
?_assertThrow(
|
?_assertThrow(
|
||||||
{_Schema, [
|
{_Schema, [
|
||||||
|
|
Loading…
Reference in New Issue