From 53caec85044582e473f4ffb80b383e1a23b44be6 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Tue, 5 Nov 2019 11:32:35 +0800 Subject: [PATCH] Add more test cases for emqx_access_control --- test/emqx_access_control_SUITE.erl | 48 ++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/test/emqx_access_control_SUITE.erl b/test/emqx_access_control_SUITE.erl index 53bdba35d..8629c6e28 100644 --- a/test/emqx_access_control_SUITE.erl +++ b/test/emqx_access_control_SUITE.erl @@ -19,22 +19,52 @@ -compile(export_all). -compile(nowarn_export_all). +-include("emqx_mqtt.hrl"). -include_lib("eunit/include/eunit.hrl"). all() -> emqx_ct:all(?MODULE). -init_per_testcase(_TestCase, Config) -> +init_per_suite(Config) -> + emqx_ct_helpers:boot_modules([router, broker]), + emqx_ct_helpers:start_apps([]), Config. -end_per_testcase(_TestCase, Config) -> - Config. +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([]). -% t_authenticate(_) -> -% error('TODO'). +t_authenticate(_) -> + emqx_zone:set_env(zone, allow_anonymous, false), + ?assertMatch({error, _}, emqx_access_control:authenticate(clientinfo())), + emqx_zone:set_env(zone, allow_anonymous, true), + ?assertMatch({ok, _}, emqx_access_control:authenticate(clientinfo())). -% t_check_acl(_) -> -% error('TODO'). +t_check_acl(_) -> + emqx_zone:set_env(zone, acl_nomatch, deny), + application:set_env(emqx, enable_acl_cache, false), + Publish = ?PUBLISH_PACKET(?QOS_0, <<"t">>, 1, <<"payload">>), + ?assertEqual(deny, emqx_access_control:check_acl(clientinfo(), Publish, <<"t">>)), -% t_reload_acl(_) -> -% error('TODO'). + emqx_zone:set_env(zone, acl_nomatch, allow), + application:set_env(emqx, enable_acl_cache, true), + Publish = ?PUBLISH_PACKET(?QOS_0, <<"t">>, 1, <<"payload">>), + ?assertEqual(allow, emqx_access_control:check_acl(clientinfo(), Publish, <<"t">>)). +t_reload_acl(_) -> + ?assertEqual(ok, emqx_access_control:reload_acl()). + +%%-------------------------------------------------------------------- +%% Helper functions +%%-------------------------------------------------------------------- + +clientinfo() -> clientinfo(#{}). +clientinfo(InitProps) -> + maps:merge(#{zone => zone, + protocol => mqtt, + peerhost => {127,0,0,1}, + clientid => <<"clientid">>, + username => <<"username">>, + password => <<"passwd">>, + is_superuser => false, + peercert => undefined, + mountpoint => undefined + }, InitProps).