fix(tests): fix ee import auth mnesia fail
This commit is contained in:
parent
05b43fa147
commit
5009ec0c34
|
@ -596,6 +596,26 @@ do_export_extra_data() ->
|
||||||
do_export_extra_data() -> [].
|
do_export_extra_data() -> [].
|
||||||
-endif.
|
-endif.
|
||||||
|
|
||||||
|
-ifdef(EMQX_ENTERPRISE).
|
||||||
|
import(Filename, OverridesJson) ->
|
||||||
|
case file:read_file(Filename) of
|
||||||
|
{ok, Json} ->
|
||||||
|
Imported = emqx_json:decode(Json, [return_maps]),
|
||||||
|
Overrides = emqx_json:decode(OverridesJson, [return_maps]),
|
||||||
|
Data = maps:merge(Imported, Overrides),
|
||||||
|
Version = to_version(maps:get(<<"version">>, Data)),
|
||||||
|
read_global_auth_type(Data),
|
||||||
|
try
|
||||||
|
do_import_data(Data, Version),
|
||||||
|
logger:debug("The emqx data has been imported successfully"),
|
||||||
|
ok
|
||||||
|
catch Class:Reason:Stack ->
|
||||||
|
logger:error("The emqx data import failed: ~0p", [{Class, Reason, Stack}]),
|
||||||
|
{error, import_failed}
|
||||||
|
end;
|
||||||
|
Error -> Error
|
||||||
|
end.
|
||||||
|
-else.
|
||||||
import(Filename, OverridesJson) ->
|
import(Filename, OverridesJson) ->
|
||||||
case file:read_file(Filename) of
|
case file:read_file(Filename) of
|
||||||
{ok, Json} ->
|
{ok, Json} ->
|
||||||
|
@ -620,6 +640,7 @@ import(Filename, OverridesJson) ->
|
||||||
end;
|
end;
|
||||||
Error -> Error
|
Error -> Error
|
||||||
end.
|
end.
|
||||||
|
-endif.
|
||||||
|
|
||||||
do_import_data(Data, Version) ->
|
do_import_data(Data, Version) ->
|
||||||
do_import_extra_data(Data, Version),
|
do_import_extra_data(Data, Version),
|
||||||
|
@ -651,6 +672,7 @@ flag_to_boolean(<<"off">>) -> false;
|
||||||
flag_to_boolean(Other) -> Other.
|
flag_to_boolean(Other) -> Other.
|
||||||
-endif.
|
-endif.
|
||||||
|
|
||||||
|
-ifndef(EMQX_ENTERPRISE).
|
||||||
is_version_supported(Data, Version) ->
|
is_version_supported(Data, Version) ->
|
||||||
case { maps:get(<<"auth_clientid">>, Data, [])
|
case { maps:get(<<"auth_clientid">>, Data, [])
|
||||||
, maps:get(<<"auth_username">>, Data, [])
|
, maps:get(<<"auth_username">>, Data, [])
|
||||||
|
@ -662,7 +684,7 @@ is_version_supported(Data, Version) ->
|
||||||
is_version_supported2("4.1") ->
|
is_version_supported2("4.1") ->
|
||||||
true;
|
true;
|
||||||
is_version_supported2("4.3") ->
|
is_version_supported2("4.3") ->
|
||||||
true;
|
true;
|
||||||
is_version_supported2(Version) ->
|
is_version_supported2(Version) ->
|
||||||
case re:run(Version, "^4.[02].\\d+$", [{capture, none}]) of
|
case re:run(Version, "^4.[02].\\d+$", [{capture, none}]) of
|
||||||
match ->
|
match ->
|
||||||
|
@ -670,12 +692,13 @@ is_version_supported2(Version) ->
|
||||||
[4, 2, N] -> N >= 11;
|
[4, 2, N] -> N >= 11;
|
||||||
[4, 0, N] -> N >= 13;
|
[4, 0, N] -> N >= 13;
|
||||||
_ -> false
|
_ -> false
|
||||||
catch
|
catch
|
||||||
_ : _ -> false
|
_ : _ -> false
|
||||||
end;
|
end;
|
||||||
nomatch ->
|
nomatch ->
|
||||||
false
|
false
|
||||||
end.
|
end.
|
||||||
|
-endif.
|
||||||
|
|
||||||
read_global_auth_type(Data) ->
|
read_global_auth_type(Data) ->
|
||||||
case {maps:get(<<"auth_mnesia">>, Data, []), maps:get(<<"acl_mnesia">>, Data, [])} of
|
case {maps:get(<<"auth_mnesia">>, Data, []), maps:get(<<"acl_mnesia">>, Data, [])} of
|
||||||
|
@ -686,6 +709,18 @@ read_global_auth_type(Data) ->
|
||||||
do_read_global_auth_type(Data)
|
do_read_global_auth_type(Data)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
-ifdef(EMQX_ENTERPRISE).
|
||||||
|
do_read_global_auth_type(Data) ->
|
||||||
|
case Data of
|
||||||
|
#{<<"auth.mnesia.as">> := <<"username">>} ->
|
||||||
|
application:set_env(emqx_auth_mnesia, as, username);
|
||||||
|
#{<<"auth.mnesia.as">> := <<"clientid">>} ->
|
||||||
|
application:set_env(emqx_auth_mnesia, as, clientid);
|
||||||
|
_ ->
|
||||||
|
ok
|
||||||
|
end.
|
||||||
|
|
||||||
|
-else.
|
||||||
do_read_global_auth_type(Data) ->
|
do_read_global_auth_type(Data) ->
|
||||||
case Data of
|
case Data of
|
||||||
#{<<"auth.mnesia.as">> := <<"username">>} ->
|
#{<<"auth.mnesia.as">> := <<"username">>} ->
|
||||||
|
@ -703,6 +738,7 @@ do_read_global_auth_type(Data) ->
|
||||||
[]),
|
[]),
|
||||||
error(import_failed)
|
error(import_failed)
|
||||||
end.
|
end.
|
||||||
|
-endif.
|
||||||
|
|
||||||
get_old_type() ->
|
get_old_type() ->
|
||||||
{ok, Type} = application:get_env(emqx_auth_mnesia, as),
|
{ok, Type} = application:get_env(emqx_auth_mnesia, as),
|
||||||
|
|
|
@ -25,19 +25,6 @@
|
||||||
-include_lib("emqx/include/emqx_mqtt.hrl").
|
-include_lib("emqx/include/emqx_mqtt.hrl").
|
||||||
-include_lib("emqx_auth_mnesia/include/emqx_auth_mnesia.hrl").
|
-include_lib("emqx_auth_mnesia/include/emqx_auth_mnesia.hrl").
|
||||||
|
|
||||||
-ifdef(EMQX_ENTERPRISE).
|
|
||||||
|
|
||||||
matrix() ->
|
|
||||||
[ {username, "e4.2.9"}
|
|
||||||
, {clientid, "e4.1.1"}
|
|
||||||
, {username, "e4.1.1"}
|
|
||||||
].
|
|
||||||
|
|
||||||
all() ->
|
|
||||||
[t_matrix].
|
|
||||||
|
|
||||||
-else. %% ! EMQX_ENTERPRISE
|
|
||||||
|
|
||||||
matrix() ->
|
matrix() ->
|
||||||
[{ImportAs, Version} || ImportAs <- [clientid, username]
|
[{ImportAs, Version} || ImportAs <- [clientid, username]
|
||||||
, Version <- ["v4.2.10", "v4.1.5"]].
|
, Version <- ["v4.2.10", "v4.1.5"]].
|
||||||
|
@ -45,8 +32,6 @@ matrix() ->
|
||||||
all() ->
|
all() ->
|
||||||
[t_import_4_0, t_import_4_1, t_import_4_2].
|
[t_import_4_0, t_import_4_1, t_import_4_2].
|
||||||
|
|
||||||
-endif. %% EMQX_ENTERPRISE
|
|
||||||
|
|
||||||
groups() ->
|
groups() ->
|
||||||
[{username, [], cases()}, {clientid, [], cases()}].
|
[{username, [], cases()}, {clientid, [], cases()}].
|
||||||
|
|
||||||
|
@ -70,7 +55,40 @@ end_per_testcase(_, _Config) ->
|
||||||
{atomic,ok} = mnesia:clear_table(emqx_acl),
|
{atomic,ok} = mnesia:clear_table(emqx_acl),
|
||||||
{atomic,ok} = mnesia:clear_table(emqx_user),
|
{atomic,ok} = mnesia:clear_table(emqx_user),
|
||||||
ok.
|
ok.
|
||||||
|
-ifdef(EMQX_ENTERPRISE).
|
||||||
|
t_import_4_0(Config) ->
|
||||||
|
Overrides = emqx_json:encode(#{<<"auth.mnesia.as">> => atom_to_binary(clientid)}),
|
||||||
|
?assertMatch(ok, do_import("e4.0.10.json", Config, Overrides)),
|
||||||
|
timer:sleep(100),
|
||||||
|
ct:pal("---~p~n", [ets:tab2list(emqx_user)]),
|
||||||
|
test_import(username, {<<"emqx_username">>, <<"public">>}),
|
||||||
|
test_import(clientid, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
|
||||||
|
Overrides1 = emqx_json:encode(#{<<"auth.mnesia.as">> => atom_to_binary(username)}),
|
||||||
|
?assertMatch(ok, do_import("e4.0.10.json", Config, Overrides1)),
|
||||||
|
timer:sleep(100),
|
||||||
|
test_import(username, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
test_import(username, {<<"emqx_username">>, <<"public">>}).
|
||||||
|
t_import_4_1(Config) ->
|
||||||
|
Overrides = emqx_json:encode(#{<<"auth.mnesia.as">> => atom_to_binary(clientid)}),
|
||||||
|
?assertMatch(ok, do_import("e4.1.1.json", Config, Overrides)),
|
||||||
|
timer:sleep(100),
|
||||||
|
test_import(clientid, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
test_import(clientid, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
|
||||||
|
Overrides1 = emqx_json:encode(#{<<"auth.mnesia.as">> => atom_to_binary(username)}),
|
||||||
|
?assertMatch(ok, do_import("e4.1.1.json", Config, Overrides1)),
|
||||||
|
timer:sleep(100),
|
||||||
|
test_import(username, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
test_import(clientid, {<<"emqx_clientid">>, <<"public">>}).
|
||||||
|
|
||||||
|
t_import_4_2(Config) ->
|
||||||
|
?assertMatch(ok, do_import("e4.2.9.json", Config, "{}")),
|
||||||
|
timer:sleep(100),
|
||||||
|
test_import(username, {<<"emqx_c">>, <<"public">>}),
|
||||||
|
test_import(clientid, {<<"emqx_clientid">>, <<"public">>}).
|
||||||
|
|
||||||
|
-else.
|
||||||
t_import_4_0(Config) ->
|
t_import_4_0(Config) ->
|
||||||
?assertMatch(ok, do_import("v4.0.11-no-auth.json", Config)),
|
?assertMatch(ok, do_import("v4.0.11-no-auth.json", Config)),
|
||||||
timer:sleep(100),
|
timer:sleep(100),
|
||||||
|
@ -131,6 +149,7 @@ t_import_4_2(Config) ->
|
||||||
access = allow
|
access = allow
|
||||||
}],
|
}],
|
||||||
lists:sort(ets:tab2list(emqx_acl))).
|
lists:sort(ets:tab2list(emqx_acl))).
|
||||||
|
-endif.
|
||||||
|
|
||||||
do_import(File, Config) ->
|
do_import(File, Config) ->
|
||||||
do_import(File, Config, "{}").
|
do_import(File, Config, "{}").
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
"version":"4.0",
|
||||||
|
"users":[
|
||||||
|
{
|
||||||
|
"username":"admin",
|
||||||
|
"tags":"administrator",
|
||||||
|
"password":"Tc7LLR/wbleSDfRkENwtN2CxYbU="
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schemas":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"rules":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"resources":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"date":"2021-04-16 18:35:21",
|
||||||
|
"blacklist":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"auth_clientid":[
|
||||||
|
|
||||||
|
],
|
||||||
|
"auth_mnesia":[
|
||||||
|
{
|
||||||
|
"password":"ZWZhMWYzNzVkNzYxOTRmYTUxYTM1NTZhOTdlNjQxZTYxNjg1ZjkxNGQ0NDY5NzlkYTUwYTU1MWE0MzMzZmZkNw==",
|
||||||
|
"login":"emqx_c",
|
||||||
|
"is_superuser":true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"auth_username": [
|
||||||
|
{
|
||||||
|
"password": "ARLrzTRhZTI1MzgxNjdjMDU5ODFhZDU3ZTdmNzJiOWM5MWUwMTFkNDk4OGUyZWUyYmU0ZTE2ZTg2OWNhMGQyYWQ5ZmU=",
|
||||||
|
"username": "emqx_username"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"apps":[
|
||||||
|
{
|
||||||
|
"status":true,
|
||||||
|
"secret":"public",
|
||||||
|
"name":"Default",
|
||||||
|
"id":"admin",
|
||||||
|
"expired":"undefined",
|
||||||
|
"desc":"Application user"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"acl_mnesia":[
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"version": "4.1",
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"tags": "administrator",
|
||||||
|
"password": "m2grkhqiXmsYb0MtOHSi+JXsmck="
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schemas": [],
|
||||||
|
"rules": [],
|
||||||
|
"resources": [],
|
||||||
|
"date": "2021-04-08 12:12:02",
|
||||||
|
"blacklist": [],
|
||||||
|
"auth_username": [],
|
||||||
|
"auth_mnesia": [
|
||||||
|
{
|
||||||
|
"password": "ARLrzTRhZTI1MzgxNjdjMDU5ODFhZDU3ZTdmNzJiOWM5MWUwMTFkNDk4OGUyZWUyYmU0ZTE2ZTg2OWNhMGQyYWQ5ZmU=",
|
||||||
|
"login": "emqx_c",
|
||||||
|
"is_superuser": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"auth_clientid": [
|
||||||
|
{
|
||||||
|
"password": "ARLrzTRhZTI1MzgxNjdjMDU5ODFhZDU3ZTdmNzJiOWM5MWUwMTFkNDk4OGUyZWUyYmU0ZTE2ZTg2OWNhMGQyYWQ5ZmU=",
|
||||||
|
"clientid": "emqx_clientid"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"apps": [
|
||||||
|
{
|
||||||
|
"status": true,
|
||||||
|
"secret": "public",
|
||||||
|
"name": "Default",
|
||||||
|
"id": "admin",
|
||||||
|
"expired": "undefined",
|
||||||
|
"desc": "Application user"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"acl_mnesia": [
|
||||||
|
{
|
||||||
|
"topic": "Topic/A",
|
||||||
|
"login": "emqx_c",
|
||||||
|
"allow": true,
|
||||||
|
"action": "sub"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"topic": "Topic/A",
|
||||||
|
"login": "emqx_c",
|
||||||
|
"allow": true,
|
||||||
|
"action": "pub"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
{
|
||||||
|
"version": "4.2",
|
||||||
|
"date": "2021-04-08 12:11:53",
|
||||||
|
"modules": [
|
||||||
|
{
|
||||||
|
"id": "module:d32ee5e4",
|
||||||
|
"type": "internal_acl",
|
||||||
|
"config": {
|
||||||
|
"acl_rule_file": "etc/acl.conf"
|
||||||
|
},
|
||||||
|
"enabled": true,
|
||||||
|
"created_at": "undefined",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "module:ea216644",
|
||||||
|
"type": "presence",
|
||||||
|
"config": {
|
||||||
|
"qos": 0
|
||||||
|
},
|
||||||
|
"enabled": true,
|
||||||
|
"created_at": "undefined",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "module:f7deaca2",
|
||||||
|
"type": "recon",
|
||||||
|
"config": {},
|
||||||
|
"enabled": true,
|
||||||
|
"created_at": "undefined",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "module:8f63640c",
|
||||||
|
"type": "retainer",
|
||||||
|
"config": {
|
||||||
|
"storage_type": "ram",
|
||||||
|
"max_retained_messages": 0,
|
||||||
|
"max_payload_size": "1MB",
|
||||||
|
"expiry_interval": 0
|
||||||
|
},
|
||||||
|
"enabled": true,
|
||||||
|
"created_at": "undefined",
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rules": [],
|
||||||
|
"resources": [],
|
||||||
|
"blacklist": [],
|
||||||
|
"apps": [
|
||||||
|
{
|
||||||
|
"id": "admin",
|
||||||
|
"secret": "public",
|
||||||
|
"name": "Default",
|
||||||
|
"desc": "Application user",
|
||||||
|
"status": true,
|
||||||
|
"expired": "undefined"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"users": [
|
||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"password": "uZGCSOEcLJIbJWgtZn8igEsnlCE=",
|
||||||
|
"tags": "administrator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"auth_mnesia": [
|
||||||
|
{
|
||||||
|
"login": "emqx_c",
|
||||||
|
"type": "username",
|
||||||
|
"password": "ARLrzTRhZTI1MzgxNjdjMDU5ODFhZDU3ZTdmNzJiOWM5MWUwMTFkNDk4OGUyZWUyYmU0ZTE2ZTg2OWNhMGQyYWQ5ZmU=",
|
||||||
|
"created_at": 1617883912202
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "emqx_clientid",
|
||||||
|
"type": "clientid",
|
||||||
|
"password": "ARLrzTRhZTI1MzgxNjdjMDU5ODFhZDU3ZTdmNzJiOWM5MWUwMTFkNDk4OGUyZWUyYmU0ZTE2ZTg2OWNhMGQyYWQ5ZmU=",
|
||||||
|
"created_at": 1617883912629
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"acl_mnesia": [
|
||||||
|
{
|
||||||
|
"type": "username",
|
||||||
|
"type_value": "emqx_c",
|
||||||
|
"topic": "Topic/A",
|
||||||
|
"action": "pubsub",
|
||||||
|
"access": "allow",
|
||||||
|
"created_at": 1617883911747
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"schemas": [],
|
||||||
|
"configs": [],
|
||||||
|
"listeners_state": []
|
||||||
|
}
|
Loading…
Reference in New Issue