test(gw): add tests for authm data-mgmt
This commit is contained in:
parent
4eb27ce25b
commit
1e2eac0fce
|
@ -796,11 +796,12 @@ add_user(_, _, #{<<"user_id">> := _}) ->
|
||||||
add_user(_, _, _) ->
|
add_user(_, _, _) ->
|
||||||
serialize_error({missing_parameter, user_id}).
|
serialize_error({missing_parameter, user_id}).
|
||||||
|
|
||||||
update_user(ChainName, AuthenticatorID, UserID, UserInfo) ->
|
update_user(ChainName, AuthenticatorID, UserID, UserInfo0) ->
|
||||||
case maps:with([<<"password">>, <<"is_superuser">>], UserInfo) =:= #{} of
|
case maps:with([<<"password">>, <<"is_superuser">>], UserInfo0) =:= #{} of
|
||||||
true ->
|
true ->
|
||||||
serialize_error({missing_parameter, password});
|
serialize_error({missing_parameter, password});
|
||||||
false ->
|
false ->
|
||||||
|
UserInfo = emqx_map_lib:safe_atom_key_map(UserInfo0),
|
||||||
case emqx_authentication:update_user(ChainName, AuthenticatorID, UserID, UserInfo) of
|
case emqx_authentication:update_user(ChainName, AuthenticatorID, UserID, UserInfo) of
|
||||||
{ok, User} ->
|
{ok, User} ->
|
||||||
{200, User};
|
{200, User};
|
||||||
|
@ -907,7 +908,7 @@ serialize_error({bad_ssl_config, Details}) ->
|
||||||
message => binfmt("bad_ssl_config ~p", [Details])}};
|
message => binfmt("bad_ssl_config ~p", [Details])}};
|
||||||
serialize_error({missing_parameter, Detail}) ->
|
serialize_error({missing_parameter, Detail}) ->
|
||||||
{400, #{code => <<"MISSING_PARAMETER">>,
|
{400, #{code => <<"MISSING_PARAMETER">>,
|
||||||
message => binfmt("Missing required parameter", [Detail])}};
|
message => binfmt("Missing required parameter: ~p", [Detail])}};
|
||||||
serialize_error({invalid_parameter, Name}) ->
|
serialize_error({invalid_parameter, Name}) ->
|
||||||
{400, #{code => <<"INVALID_PARAMETER">>,
|
{400, #{code => <<"INVALID_PARAMETER">>,
|
||||||
message => binfmt("Invalid value for '~p'", [Name])}};
|
message => binfmt("Invalid value for '~p'", [Name])}};
|
||||||
|
|
|
@ -286,9 +286,7 @@ schema("/gateway/:name/authentication/users/:uid") ->
|
||||||
, 404 => error_codes([?NOT_FOUND], <<"Not Found">>)
|
, 404 => error_codes([?NOT_FOUND], <<"Not Found">>)
|
||||||
, 500 => error_codes([?INTERNAL_ERROR],
|
, 500 => error_codes([?INTERNAL_ERROR],
|
||||||
<<"Ineternal Server Error">>)
|
<<"Ineternal Server Error">>)
|
||||||
, 200 => emqx_dashboard_swagger:schema_with_example(
|
, 204 => <<"User Deleted">>
|
||||||
ref(emqx_authn_api, response_user),
|
|
||||||
emqx_authn_api:response_user_examples())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -335,7 +335,7 @@ with_authn(GwName0, Fun) ->
|
||||||
|
|
||||||
-spec with_listener_authn(binary(), binary(), function()) -> any().
|
-spec with_listener_authn(binary(), binary(), function()) -> any().
|
||||||
with_listener_authn(GwName0, Id, Fun) ->
|
with_listener_authn(GwName0, Id, Fun) ->
|
||||||
with_gateway(GwName0, fun(GwName) ->
|
with_gateway(GwName0, fun(GwName, _GwConf) ->
|
||||||
Authn = emqx_gateway_http:authn(GwName, Id),
|
Authn = emqx_gateway_http:authn(GwName, Id),
|
||||||
Fun(GwName, Authn)
|
Fun(GwName, Authn)
|
||||||
end).
|
end).
|
||||||
|
|
|
@ -207,6 +207,50 @@ t_authn(_) ->
|
||||||
{204, _} = request(get, "/gateway/stomp/authentication"),
|
{204, _} = request(get, "/gateway/stomp/authentication"),
|
||||||
{204, _} = request(delete, "/gateway/stomp").
|
{204, _} = request(delete, "/gateway/stomp").
|
||||||
|
|
||||||
|
t_authn_data_mgmt(_) ->
|
||||||
|
GwConf = #{name => <<"stomp">>},
|
||||||
|
{204, _} = request(post, "/gateway", GwConf),
|
||||||
|
{204, _} = request(get, "/gateway/stomp/authentication"),
|
||||||
|
|
||||||
|
AuthConf = #{mechanism => <<"password-based">>,
|
||||||
|
backend => <<"built-in-database">>,
|
||||||
|
user_id_type => <<"clientid">>
|
||||||
|
},
|
||||||
|
{204, _} = request(post, "/gateway/stomp/authentication", AuthConf),
|
||||||
|
{200, ConfResp} = request(get, "/gateway/stomp/authentication"),
|
||||||
|
assert_confs(AuthConf, ConfResp),
|
||||||
|
|
||||||
|
User1 = #{ user_id => <<"test">>
|
||||||
|
, password => <<"123456">>
|
||||||
|
, is_superuser => false
|
||||||
|
},
|
||||||
|
{201, _} = request(post, "/gateway/stomp/authentication/users", User1),
|
||||||
|
{200, #{data := [UserRespd1]}} = request(get, "/gateway/stomp/authentication/users"),
|
||||||
|
assert_confs(UserRespd1, User1),
|
||||||
|
|
||||||
|
{200, UserRespd2} = request(get,
|
||||||
|
"/gateway/stomp/authentication/users/test"),
|
||||||
|
assert_confs(UserRespd2, User1),
|
||||||
|
|
||||||
|
{200, UserRespd3} = request(put,
|
||||||
|
"/gateway/stomp/authentication/users/test",
|
||||||
|
#{password => <<"654321">>,
|
||||||
|
is_superuser => true}),
|
||||||
|
assert_confs(UserRespd3, User1#{is_superuser => true}),
|
||||||
|
|
||||||
|
{200, UserRespd4} = request(get,
|
||||||
|
"/gateway/stomp/authentication/users/test"),
|
||||||
|
assert_confs(UserRespd4, User1#{is_superuser => true}),
|
||||||
|
|
||||||
|
{204, _} = request(delete, "/gateway/stomp/authentication/users/test"),
|
||||||
|
|
||||||
|
{200, #{data := []}} = request(get,
|
||||||
|
"/gateway/stomp/authentication/users"),
|
||||||
|
|
||||||
|
{204, _} = request(delete, "/gateway/stomp/authentication"),
|
||||||
|
{204, _} = request(get, "/gateway/stomp/authentication"),
|
||||||
|
{204, _} = request(delete, "/gateway/stomp").
|
||||||
|
|
||||||
t_listeners(_) ->
|
t_listeners(_) ->
|
||||||
GwConf = #{name => <<"stomp">>},
|
GwConf = #{name => <<"stomp">>},
|
||||||
{204, _} = request(post, "/gateway", GwConf),
|
{204, _} = request(post, "/gateway", GwConf),
|
||||||
|
@ -262,6 +306,65 @@ t_listeners_authn(_) ->
|
||||||
assert_confs(AuthConf2, ConfResp3),
|
assert_confs(AuthConf2, ConfResp3),
|
||||||
{204, _} = request(delete, "/gateway/stomp").
|
{204, _} = request(delete, "/gateway/stomp").
|
||||||
|
|
||||||
|
t_listeners_authn_data_mgmt(_) ->
|
||||||
|
GwConf = #{name => <<"stomp">>,
|
||||||
|
listeners => [
|
||||||
|
#{name => <<"def">>,
|
||||||
|
type => <<"tcp">>,
|
||||||
|
bind => <<"61613">>
|
||||||
|
}]},
|
||||||
|
{204, _} = request(post, "/gateway", GwConf),
|
||||||
|
{200, ConfResp} = request(get, "/gateway/stomp"),
|
||||||
|
assert_confs(GwConf, ConfResp),
|
||||||
|
|
||||||
|
AuthConf = #{mechanism => <<"password-based">>,
|
||||||
|
backend => <<"built-in-database">>,
|
||||||
|
user_id_type => <<"clientid">>
|
||||||
|
},
|
||||||
|
Path = "/gateway/stomp/listeners/stomp:tcp:def/authentication",
|
||||||
|
{204, _} = request(post, Path, AuthConf),
|
||||||
|
{200, ConfResp2} = request(get, Path),
|
||||||
|
assert_confs(AuthConf, ConfResp2),
|
||||||
|
|
||||||
|
User1 = #{ user_id => <<"test">>
|
||||||
|
, password => <<"123456">>
|
||||||
|
, is_superuser => false
|
||||||
|
},
|
||||||
|
{201, _} = request(post,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users",
|
||||||
|
User1),
|
||||||
|
|
||||||
|
{200,
|
||||||
|
#{data := [UserRespd1]} } = request(
|
||||||
|
get,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users"),
|
||||||
|
assert_confs(UserRespd1, User1),
|
||||||
|
|
||||||
|
{200, UserRespd2} = request(
|
||||||
|
get,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users/test"),
|
||||||
|
assert_confs(UserRespd2, User1),
|
||||||
|
|
||||||
|
{200, UserRespd3} = request(
|
||||||
|
put,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users/test",
|
||||||
|
#{password => <<"654321">>, is_superuser => true}),
|
||||||
|
assert_confs(UserRespd3, User1#{is_superuser => true}),
|
||||||
|
|
||||||
|
{200, UserRespd4} = request(
|
||||||
|
get,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users/test"),
|
||||||
|
assert_confs(UserRespd4, User1#{is_superuser => true}),
|
||||||
|
|
||||||
|
{204, _} = request(
|
||||||
|
delete,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users/test"),
|
||||||
|
|
||||||
|
{200, #{data := []}} = request(
|
||||||
|
get,
|
||||||
|
"/gateway/stomp/listeners/stomp:tcp:def/authentication/users"),
|
||||||
|
{204, _} = request(delete, "/gateway/stomp").
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Asserts
|
%% Asserts
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue