Skip to content

Commit

Permalink
fix(dashboard): add test case & update change
Browse files Browse the repository at this point in the history
  • Loading branch information
lafirest committed Jan 31, 2024
1 parent c37097a commit 13df7fa
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 6 deletions.
19 changes: 13 additions & 6 deletions apps/emqx_dashboard/src/emqx_dashboard_listener.erl
Expand Up @@ -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}).
Expand All @@ -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">>).

Expand Down
33 changes: 33 additions & 0 deletions apps/emqx_dashboard/test/emqx_dashboard_SUITE.erl
Expand Up @@ -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").
Expand Down Expand Up @@ -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"]),
Expand Down
1 change: 1 addition & 0 deletions changes/ce/feat-12398.en.md
@@ -0,0 +1 @@
Exposed the `swagger_support` option in configuration for Dashboard to disable the swagger API document.

0 comments on commit 13df7fa

Please sign in to comment.