fix(dashboard): add test case & update change

This commit is contained in:
firest 2024-01-31 13:02:01 +08:00
parent c37097a150
commit 13df7fa46e
3 changed files with 47 additions and 6 deletions

View File

@ -149,12 +149,13 @@ remove_sensitive_data(Conf0) ->
post_config_update(_, {change_i18n_lang, _}, _NewConf, _OldConf, _AppEnvs) ->
delay_job(regenerate);
post_config_update(_, _Req, NewConf, OldConf, _AppEnvs) ->
SwaggerSupport = diff_swagger_support(NewConf, OldConf),
OldHttp = get_listener(http, OldConf),
OldHttps = get_listener(https, OldConf),
NewHttp = get_listener(http, NewConf),
NewHttps = get_listener(https, NewConf),
{StopHttp, StartHttp} = diff_listeners(http, OldHttp, NewHttp),
{StopHttps, StartHttps} = diff_listeners(https, OldHttps, NewHttps),
{StopHttp, StartHttp} = diff_listeners(http, OldHttp, NewHttp, SwaggerSupport),
{StopHttps, StartHttps} = diff_listeners(https, OldHttps, NewHttps, SwaggerSupport),
Stop = maps:merge(StopHttp, StopHttps),
Start = maps:merge(StartHttp, StartHttps),
delay_job({update_listeners, Stop, Start}).
@ -168,10 +169,16 @@ delay_job(Msg) ->
get_listener(Type, Conf) ->
emqx_utils_maps:deep_get([listeners, Type], Conf, undefined).
diff_listeners(_, Listener, Listener) -> {#{}, #{}};
diff_listeners(Type, undefined, Start) -> {#{}, #{Type => Start}};
diff_listeners(Type, Stop, undefined) -> {#{Type => Stop}, #{}};
diff_listeners(Type, Stop, Start) -> {#{Type => Stop}, #{Type => Start}}.
diff_swagger_support(NewConf, OldConf) ->
maps:get(swagger_support, NewConf, true) =:=
maps:get(swagger_support, OldConf, true).
diff_listeners(_, undefined, undefined, _) -> {#{}, #{}};
diff_listeners(_, Listener, Listener, true) -> {#{}, #{}};
diff_listeners(Type, undefined, Start, _) -> {#{}, #{Type => Start}};
diff_listeners(Type, Stop, undefined, _) -> {#{Type => Stop}, #{}};
diff_listeners(Type, Listener, Listener, false) -> {#{Type => Listener}, #{Type => Listener}};
diff_listeners(Type, Stop, Start, _) -> {#{Type => Stop}, #{Type => Start}}.
-define(DIR, <<"dashboard">>).

View File

@ -31,6 +31,7 @@
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("emqx/include/emqx.hrl").
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
-include("emqx_dashboard.hrl").
-define(CONTENT_TYPE, "application/x-www-form-urlencoded").
@ -188,6 +189,38 @@ t_swagger_json(_Config) ->
),
ok.
t_disable_swagger_json(_Config) ->
Url = ?HOST ++ "/api-docs/index.html",
?assertMatch(
{ok, {{"HTTP/1.1", 200, "OK"}, __, _}},
httpc:request(get, {Url, []}, [], [{body_format, binary}])
),
DashboardCfg = emqx:get_raw_config([dashboard]),
DashboardCfg2 = DashboardCfg#{<<"swagger_support">> => false},
emqx:update_config([dashboard], DashboardCfg2),
?retry(
_Sleep = 1000,
_Attempts = 5,
?assertMatch(
{ok, {{"HTTP/1.1", 404, "Not Found"}, _, _}},
httpc:request(get, {Url, []}, [], [{body_format, binary}])
)
),
DashboardCfg3 = DashboardCfg#{<<"swagger_support">> => true},
emqx:update_config([dashboard], DashboardCfg3),
?retry(
_Sleep0 = 1000,
_Attempts0 = 5,
?assertMatch(
{ok, {{"HTTP/1.1", 200, "OK"}, __, _}},
httpc:request(get, {Url, []}, [], [{body_format, binary}])
)
),
ok.
t_cli(_Config) ->
[mria:dirty_delete(?ADMIN, Admin) || Admin <- mnesia:dirty_all_keys(?ADMIN)],
emqx_dashboard_cli:admins(["add", "username", "password_ww2"]),

View File

@ -0,0 +1 @@
Exposed the `swagger_support` option in configuration for Dashboard to disable the swagger API document.