1: -module(ejabberd_admin_SUITE). 2: -compile([export_all, nowarn_export_all]). 3: 4: -include_lib("common_test/include/ct.hrl"). 5: -include_lib("eunit/include/eunit.hrl"). 6: -include("jlib.hrl"). 7: 8: -import(ejabberd_helper, [data/2]). 9: 10: 11: all() -> 12: [{group, import_users}]. 13: 14: groups() -> 15: [{import_users, [], [import_users_from_valid_csv, 16: import_users_from_valid_csv_with_quoted_fields, 17: import_from_invalid_csv]}]. 18: 19: init_per_suite(Config) -> 20: {ok, _} = application:ensure_all_started(jid), 21: Config. 22: 23: end_per_suite(_Config) -> 24: ok. 25: 26: init_per_group(_, Config) -> 27: meck:new(ejabberd_auth, [no_link]), 28: meck:expect(ejabberd_auth, try_register, 29: fun(#jid{luser = <<"existing_user">>}, _) -> {error, exists}; 30: (#jid{luser = <<"null_password_user">>}, _) -> {error, null_password}; 31: (#jid{lserver = <<"not_allowed_domain">>}, _) -> {error, not_allowed}; 32: (#jid{luser = <<"invalid_jid_user">>}, _) -> {error, invalid_jid}; 33: (_, _) -> ok 34: end), 35: Config. 36: 37: end_per_group(_, _Config) -> 38: meck:unload(ejabberd_auth), 39: ok. 40: 41: init_per_testcase(_TestCase, Config) -> 42: Config. 43: 44: end_per_testcase(_TestCase, _Config) -> 45: ok. 46: 47: %% 48: %% Tests 49: %% 50: 51: import_users_from_valid_csv(Config) -> 52: % given 53: ValidCsvPath = data(Config, "valid.csv"), 54: % when 55: Result = ejabberd_admin:import_users(ValidCsvPath), 56: SortedResult = lists:sort(Result), 57: % then 58: ?assertEqual([{bad_csv, [<<"wrong,number,of,fields,line">>]}, 59: {exists, [#jid{luser = <<"existing_user">>, 60: lserver = <<"localhost">>, 61: lresource = <<>>}]}, 62: {invalid_jid, [<<"invalid_jid_user,localhost,password">>]}, 63: {not_allowed, [#jid{luser = <<"bad_domain_user">>, 64: lserver = <<"not_allowed_domain">>, 65: lresource = <<>>}]}, 66: 67: {null_password, [#jid{luser = <<"null_password_user">>, 68: lserver = <<"localhost">>, 69: lresource = <<>>}]}, 70: {ok, [#jid{luser = <<"user">>, lserver = <<"localhost">>, lresource = <<>>}]}], 71: SortedResult). 72: 73: import_users_from_valid_csv_with_quoted_fields(Config) -> 74: % given 75: ValidCsvPath = data(Config, "valid_quoted.csv"), 76: % when 77: Result = ejabberd_admin:import_users(ValidCsvPath), 78: % then 79: ?assertEqual([{ok, [#jid{luser = <<"username,with,commas">>, 80: lserver = <<"localhost">>, 81: lresource = <<>>}]}], 82: Result). 83: 84: import_from_invalid_csv(_Config) -> 85: % given 86: NonExistingPath = "", 87: % then 88: ?assertError({badmatch, {error, file_not_found}}, 89: ejabberd_admin:import_users(NonExistingPath)).