Просмотр исходного кода

fix(schema validation): forbid empty topic filter list

Thales Macedo Garitezi 1 год назад
Родитель
Сommit
e7351d949d

+ 1 - 1
apps/emqx_schema_validation/src/emqx_schema_validation.app.src

@@ -1,6 +1,6 @@
 {application, emqx_schema_validation, [
     {description, "EMQX Schema Validation"},
-    {vsn, "0.1.1"},
+    {vsn, "0.1.2"},
     {registered, [emqx_schema_validation_sup, emqx_schema_validation_registry]},
     {mod, {emqx_schema_validation_app, []}},
     {applications, [

+ 2 - 0
apps/emqx_schema_validation/src/emqx_schema_validation_schema.erl

@@ -259,6 +259,8 @@ do_validate_unique_schema_checks(
 do_validate_unique_schema_checks([_Check | Rest], Seen, Duplicated) ->
     do_validate_unique_schema_checks(Rest, Seen, Duplicated).
 
+validate_unique_topics([]) ->
+    {error, <<"at least one topic filter must be defined">>};
 validate_unique_topics(Topics) ->
     Grouped = maps:groups_from_list(
         fun(T) -> T end,

+ 13 - 0
apps/emqx_schema_validation/test/emqx_schema_validation_tests.erl

@@ -117,6 +117,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([
+                    validation(<<"foo">>, [sql_check()], #{<<"topics">> => []})
+                ])
+            )},
         {"foreach expression is not allowed",
             ?_assertThrow(
                 {_Schema, [

+ 1 - 0
changes/ee/fix-13420.en.md

@@ -0,0 +1 @@
+Added a schema validation to forbid empty topic filter lists when configuring a Schema Validation.