fix: deny POST an existing resource
This commit is contained in:
parent
29c76d16d7
commit
7d2dd3d37d
|
@ -315,6 +315,16 @@ create_resource(#{}, Params) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
do_create_resource(Create, ParsedParams) ->
|
do_create_resource(Create, ParsedParams) ->
|
||||||
|
case maps:find(id, ParsedParams) of
|
||||||
|
{ok, ResId} ->
|
||||||
|
case emqx_rule_registry:find_resource(ResId) of
|
||||||
|
{ok, _} -> return({error, 400, <<"Already Exists">>});
|
||||||
|
not_found -> do_create_resource2(Create, ParsedParams)
|
||||||
|
end;
|
||||||
|
error -> do_create_resource2(Create, ParsedParams)
|
||||||
|
end.
|
||||||
|
|
||||||
|
do_create_resource2(Create, ParsedParams) ->
|
||||||
case emqx_rule_engine:Create(ParsedParams) of
|
case emqx_rule_engine:Create(ParsedParams) of
|
||||||
ok ->
|
ok ->
|
||||||
return(ok);
|
return(ok);
|
||||||
|
|
|
@ -600,13 +600,18 @@ t_show_action_api(_Config) ->
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_crud_resources_api(_Config) ->
|
t_crud_resources_api(_Config) ->
|
||||||
{ok, #{code := 0, data := Resources1}} =
|
ResParams = [
|
||||||
emqx_rule_engine_api:create_resource(#{},
|
{<<"name">>, <<"Simple Resource">>},
|
||||||
[{<<"name">>, <<"Simple Resource">>},
|
|
||||||
{<<"type">>, <<"built_in">>},
|
{<<"type">>, <<"built_in">>},
|
||||||
{<<"config">>, [{<<"a">>, 1}]},
|
{<<"config">>, [{<<"a">>, 1}]},
|
||||||
{<<"description">>, <<"Simple Resource">>}]),
|
{<<"description">>, <<"Simple Resource">>}
|
||||||
|
],
|
||||||
|
{ok, #{code := 0, data := Resources1}} =
|
||||||
|
emqx_rule_engine_api:create_resource(#{}, ResParams),
|
||||||
ResId = maps:get(id, Resources1),
|
ResId = maps:get(id, Resources1),
|
||||||
|
%% create again using given resource id returns error
|
||||||
|
{ok, #{code := 400, message := <<"Already Exists">>}} =
|
||||||
|
emqx_rule_engine_api:create_resource(#{}, [{<<"id">>, ResId} | ResParams]),
|
||||||
{ok, #{code := 0, data := Resources}} = emqx_rule_engine_api:list_resources(#{}, []),
|
{ok, #{code := 0, data := Resources}} = emqx_rule_engine_api:list_resources(#{}, []),
|
||||||
?assert(length(Resources) > 0),
|
?assert(length(Resources) > 0),
|
||||||
{ok, #{code := 0, data := Resources2}} = emqx_rule_engine_api:show_resource(#{id => ResId}, []),
|
{ok, #{code := 0, data := Resources2}} = emqx_rule_engine_api:show_resource(#{id => ResId}, []),
|
||||||
|
|
Loading…
Reference in New Issue