From c89c00aed0d970aab0ab6e0041acb873fb610e66 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Mon, 18 Apr 2022 15:22:18 +0800 Subject: [PATCH] test: clean cache api for all clients or specific client --- .../test/emqx_authz_api_cache_SUITE.erl | 79 +++++++++++++++++++ .../test/emqx_mgmt_api_clients_SUITE.erl | 4 +- 2 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 apps/emqx_authz/test/emqx_authz_api_cache_SUITE.erl diff --git a/apps/emqx_authz/test/emqx_authz_api_cache_SUITE.erl b/apps/emqx_authz/test/emqx_authz_api_cache_SUITE.erl new file mode 100644 index 000000000..306fe3f13 --- /dev/null +++ b/apps/emqx_authz/test/emqx_authz_api_cache_SUITE.erl @@ -0,0 +1,79 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020-2022 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_authz_api_cache_SUITE). + +-compile(nowarn_export_all). +-compile(export_all). + +-import(emqx_dashboard_api_test_helpers, [request/2, uri/1]). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +all() -> + emqx_common_test_helpers:all(?MODULE). + +groups() -> + []. + +init_per_suite(Config) -> + ok = emqx_common_test_helpers:start_apps( + [emqx_conf, emqx_authz, emqx_dashboard, emqx_management], + fun set_special_configs/1 + ), + Config. + +end_per_suite(_Config) -> + {ok, _} = emqx:update_config( + [authorization], + #{ + <<"no_match">> => <<"allow">>, + <<"cache">> => #{<<"enable">> => <<"true">>}, + <<"sources">> => [] + } + ), + ok = stop_apps([emqx_resource, emqx_connector]), + emqx_common_test_helpers:stop_apps([emqx_dashboard, emqx_authz, emqx_conf, emqx_management]), + ok. + +set_special_configs(emqx_dashboard) -> + emqx_dashboard_api_test_helpers:set_default_config(); +set_special_configs(emqx_authz) -> + {ok, _} = emqx:update_config([authorization, cache, enable], true), + {ok, _} = emqx:update_config([authorization, no_match], deny), + {ok, _} = emqx:update_config([authorization, sources], []), + ok; +set_special_configs(_App) -> + ok. + +t_clean_cahce(_) -> + {ok, C} = emqtt:start_link([{clientid, <<"emqx0">>}, {username, <<"emqx0">>}]), + {ok, _} = emqtt:connect(C), + {ok, _, _} = emqtt:subscribe(C, <<"a/b/c">>, 0), + ok = emqtt:publish(C, <<"a/b/c">>, <<"{\"x\":1,\"y\":1}">>, 0), + + {ok, 200, Result3} = request(get, uri(["clients", "emqx0", "authorization", "cache"])), + ?assertEqual(2, length(jsx:decode(Result3))), + + request(delete, uri(["authorization", "cache"])), + + {ok, 200, Result4} = request(get, uri(["clients", "emqx0", "authorization", "cache"])), + ?assertEqual(0, length(jsx:decode(Result4))), + + ok. + +stop_apps(Apps) -> + lists:foreach(fun application:stop/1, Apps). diff --git a/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl index 80f236fed..295bb0e9e 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_clients_SUITE.erl @@ -76,9 +76,9 @@ t_clients(_) -> AfterKickoutResponse2 = emqx_mgmt_api_test_util:request_api(get, Client2Path), ?assertEqual({error, {"HTTP/1.1", 404, "Not Found"}}, AfterKickoutResponse2), - %% get /clients/:clientid/authz_cache should has no authz cache + %% get /clients/:clientid/authorization/cache should has no authz cache Client1AuthzCachePath = emqx_mgmt_api_test_util:api_path(["clients", - binary_to_list(ClientId1), "authz_cache"]), + binary_to_list(ClientId1), "authorization", "cache"]), {ok, Client1AuthzCache} = emqx_mgmt_api_test_util:request_api(get, Client1AuthzCachePath), ?assertEqual("[]", Client1AuthzCache),