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: Config. 21: 22: end_per_suite(_Config) -> 23: ok. 24: 25: init_per_group(_, Config) -> 26: meck:new(ejabberd_auth, [no_link]), 27: meck:expect(ejabberd_auth, try_register, 28: fun(#jid{user = <<"existing_user">>}, _) -> {error, exists}; 29: (#jid{user = <<"null_password_user">>}, _) -> {error, null_password}; 30: (#jid{server = <<"not_allowed_domain">>}, _) -> {error, not_allowed}; 31: (#jid{user = <<"invalid_jid_user">>}, _) -> {error, invalid_jid}; 32: (_, _) -> ok 33: end), 34: Config. 35: 36: end_per_group(_, _Config) -> 37: meck:unload(ejabberd_auth), 38: ok. 39: 40: init_per_testcase(_TestCase, Config) -> 41: Config. 42: 43: end_per_testcase(_TestCase, _Config) -> 44: ok. 45: 46: %% 47: %% Tests 48: %% 49: 50: import_users_from_valid_csv(Config) -> 51: % given 52: ValidCsvPath = data(Config, "valid.csv"), 53: % when 54: Result = ejabberd_admin:import_users(ValidCsvPath), 55: % then 56: ?assertEqual([{ok, <<"user">>}, 57: {exists, <<"existing_user">>}, 58: {null_password, <<"null_password_user">>}, 59: {not_allowed, <<"bad_domain_user">>}, 60: {invalid_jid, <<"invalid_jid_user">>}, 61: {bad_csv, <<"wrong,number,of,fields,line">>}], 62: Result). 63: 64: import_users_from_valid_csv_with_quoted_fields(Config) -> 65: % given 66: ValidCsvPath = data(Config, "valid_quoted.csv"), 67: % when 68: Result = ejabberd_admin:import_users(ValidCsvPath), 69: % then 70: ?assertEqual([{ok, <<"username,with,commas">>}], 71: Result). 72: 73: import_from_invalid_csv(_Config) -> 74: % given 75: NonExistingPath = "", 76: % then 77: ?assertError({badmatch, {error, enoent}}, 78: ejabberd_admin:import_users(NonExistingPath)).