Merge pull request #5940 from savonarola/mqtt-http-api-validations-fix
fix(mgmt api): allow empty clientid in publish
This commit is contained in:
commit
d2f4c55fd7
|
@ -1,13 +1,13 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[ {<<"4.3.[0-9]">>,
|
[ {<<"4\\.3\\.[0-9]+">>,
|
||||||
[ {apply,{minirest,stop_http,['http:management']}},
|
[ {apply,{minirest,stop_http,['http:management']}},
|
||||||
{apply,{minirest,stop_http,['https:management']}},
|
{apply,{minirest,stop_http,['https:management']}},
|
||||||
{restart_application, emqx_management}
|
{restart_application, emqx_management}
|
||||||
]},
|
]},
|
||||||
{<<".*">>, []}
|
{<<".*">>, []}
|
||||||
],
|
],
|
||||||
[ {<<"4.3.[0-9]">>,
|
[ {<<"4\\.3\\.[0-9]+">>,
|
||||||
[ {apply,{minirest,stop_http,['http:management']}},
|
[ {apply,{minirest,stop_http,['http:management']}},
|
||||||
{apply,{minirest,stop_http,['https:management']}},
|
{apply,{minirest,stop_http,['https:management']}},
|
||||||
{restart_application, emqx_management}
|
{restart_application, emqx_management}
|
||||||
|
|
|
@ -158,7 +158,7 @@ do_subscribe(ClientId, Topics, QoS) ->
|
||||||
_ -> ok
|
_ -> ok
|
||||||
end.
|
end.
|
||||||
|
|
||||||
do_publish(ClientId, _Topics, _Qos, _Retain, _Payload) when not is_binary(ClientId) ->
|
do_publish(ClientId, _Topics, _Qos, _Retain, _Payload) when not (is_binary(ClientId) or (ClientId =:= undefined)) ->
|
||||||
{ok, ?ERROR8, <<"bad clientid: must be string">>};
|
{ok, ?ERROR8, <<"bad clientid: must be string">>};
|
||||||
do_publish(_ClientId, [], _Qos, _Retain, _Payload) ->
|
do_publish(_ClientId, [], _Qos, _Retain, _Payload) ->
|
||||||
{ok, ?ERROR15, bad_topic};
|
{ok, ?ERROR15, bad_topic};
|
||||||
|
|
|
@ -447,6 +447,19 @@ t_pubsub(_) ->
|
||||||
after 100 ->
|
after 100 ->
|
||||||
false
|
false
|
||||||
end),
|
end),
|
||||||
|
|
||||||
|
% no clientid
|
||||||
|
{ok, Code} = request_api(post, api_path(["mqtt/publish"]), [], auth_header_(),
|
||||||
|
#{<<"topic">> => <<"mytopic">>,
|
||||||
|
<<"qos">> => 1,
|
||||||
|
<<"payload">> => <<"hello">>}),
|
||||||
|
?assert(receive
|
||||||
|
{publish, #{payload := <<"hello">>}} ->
|
||||||
|
true
|
||||||
|
after 100 ->
|
||||||
|
false
|
||||||
|
end),
|
||||||
|
|
||||||
%% json payload
|
%% json payload
|
||||||
{ok, Code} = request_api(post, api_path(["mqtt/publish"]), [], auth_header_(),
|
{ok, Code} = request_api(post, api_path(["mqtt/publish"]), [], auth_header_(),
|
||||||
#{<<"clientid">> => ClientId,
|
#{<<"clientid">> => ClientId,
|
||||||
|
@ -491,9 +504,9 @@ t_pubsub(_) ->
|
||||||
|
|
||||||
ok = emqtt:disconnect(C1),
|
ok = emqtt:disconnect(C1),
|
||||||
|
|
||||||
?assertEqual(2, emqx_metrics:val('messages.qos1.received') - Qos1Received),
|
?assertEqual(3, emqx_metrics:val('messages.qos1.received') - Qos1Received),
|
||||||
?assertEqual(2, emqx_metrics:val('messages.qos2.received') - Qos2Received),
|
?assertEqual(2, emqx_metrics:val('messages.qos2.received') - Qos2Received),
|
||||||
?assertEqual(4, emqx_metrics:val('messages.received') - Received).
|
?assertEqual(5, emqx_metrics:val('messages.received') - Received).
|
||||||
|
|
||||||
loop([]) -> [];
|
loop([]) -> [];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue