fix: avoid 'rule_test' api crash

This commit is contained in:
EMQ-YangM 2022-05-05 17:27:23 +08:00
parent 28b7021322
commit 685b06eeed
2 changed files with 28 additions and 1 deletions

View File

@ -278,7 +278,9 @@ replace_sql_clrf(#{<<"sql">> := SQL} = Params) ->
{error, {parse_error, Reason}} ->
{400, #{code => 'BAD_REQUEST', message => err_msg(Reason)}};
{error, nomatch} ->
{412, #{code => 'NOT_MATCH', message => <<"SQL Not Match">>}}
{412, #{code => 'NOT_MATCH', message => <<"SQL Not Match">>}};
{error, Reason} ->
{400, #{code => 'BAD_REQUEST', message => err_msg(Reason)}}
end
).

View File

@ -80,4 +80,29 @@ t_crud_rule_api(_Config) ->
{404, #{code := _, message := _Message}},
emqx_rule_engine_api:'/rules/:id'(get, #{bindings => #{id => RuleID}})
),
?assertMatch(
{400, #{
code := 'BAD_REQUEST',
message := <<"{select_and_transform_error,{error,{decode_json_failed,", _/binary>>
}},
emqx_rule_engine_api:'/rule_test'(post, test_rule_params())
),
ok.
test_rule_params() ->
#{
body => #{
<<"context">> =>
#{
<<"clientid">> => <<"c_emqx">>,
<<"event_type">> => <<"message_publish">>,
<<"payload">> => <<"{\"msg\": \"hel">>,
<<"qos">> => 1,
<<"topic">> => <<"t/a">>,
<<"username">> => <<"u_emqx">>
},
<<"sql">> =>
<<"SELECT\n payload.msg\nFROM\n \"t/#\"">>
}
}.