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{user = <<"existing_user">>}, _) -> {error, exists}; 30: (#jid{user = <<"null_password_user">>}, _) -> {error, null_password}; 31: (#jid{server = <<"not_allowed_domain">>}, _) -> {error, not_allowed}; 32: (#jid{user = <<"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: % then 57: ?assertEqual([{ok, <<"user">>}, 58: {exists, <<"existing_user">>}, 59: {null_password, <<"null_password_user">>}, 60: {not_allowed, <<"bad_domain_user">>}, 61: {invalid_jid, <<"invalid_jid_user">>}, 62: {bad_csv, <<"wrong,number,of,fields,line">>}], 63: Result). 64: 65: import_users_from_valid_csv_with_quoted_fields(Config) -> 66: % given 67: ValidCsvPath = data(Config, "valid_quoted.csv"), 68: % when 69: Result = ejabberd_admin:import_users(ValidCsvPath), 70: % then 71: ?assertEqual([{ok, <<"username,with,commas">>}], 72: Result). 73: 74: import_from_invalid_csv(_Config) -> 75: % given 76: NonExistingPath = "", 77: % then 78: ?assertError({badmatch, {error, enoent}}, 79: ejabberd_admin:import_users(NonExistingPath)).