Test tag attribution by configuring from within the test-suite
Put the necessary configuration in the test itself, testing a more complex assortment of tag queries, rather than in the configuration file. Introduce another user into the LDAP server for this test. Revert the `management` tag query, in the configuration file, to a trivial constant query.
This commit is contained in:
parent
b19915b617
commit
45a5ff0311
|
|
@ -38,7 +38,6 @@
|
|||
]}},
|
||||
{tag_queries, [{monitor, {constant, true}},
|
||||
{administrator, {constant, false}},
|
||||
{management,
|
||||
{exists, "cn=${username},ou=Faculty,dc=Computer Science,dc=Engineering"}}]}
|
||||
{management, {constant, false}}]}
|
||||
]}
|
||||
].
|
||||
|
|
|
|||
|
|
@ -35,6 +35,12 @@ cn: Charlie
|
|||
sn: Charlie Boy
|
||||
userPassword: password
|
||||
|
||||
dn: cn=Edward,ou=people,dc=example,dc=com
|
||||
objectClass: person
|
||||
cn: Edward
|
||||
sn: Ed
|
||||
userPassword: password
|
||||
|
||||
dn: cn=John Doe,ou=people,dc=example,dc=com
|
||||
objectClass: person
|
||||
cn: John Doe
|
||||
|
|
|
|||
|
|
@ -88,6 +88,34 @@ internal_followed_ldap_and_internal_test_() ->
|
|||
{"Internal, LDAP&Internal Tags", tag_check([monitor, management, foo])}
|
||||
]}.
|
||||
|
||||
tag_attribution_test_() ->
|
||||
{setup,
|
||||
fun () ->
|
||||
%% Configuration parameter under test.
|
||||
Cfg = [{tag_queries,
|
||||
[{administrator, {constant, false}},
|
||||
%% Query result for tag `management` is FALSE
|
||||
%% because this object does NOT exist.
|
||||
{management,
|
||||
{exists, "cn=${username},ou=Faculty,dc=Computer Science,dc=Engineering"}},
|
||||
{monitor, {constant, true}},
|
||||
%% Query result for tag `normal` is TRUE because
|
||||
%% this object exists.
|
||||
{normal,
|
||||
{exists, "cn=${username},ou=people,dc=example,dc=com"}}]}],
|
||||
%% Configure only the LDAP backend then set it up with tag
|
||||
%% queries.
|
||||
ok = application:set_env(rabbit, auth_backends, [rabbit_auth_backend_ldap]),
|
||||
set_env(Cfg)
|
||||
end,
|
||||
fun (_) ->
|
||||
set_env(base_login_env()),
|
||||
ok = application:unset_env(rabbit, auth_backends)
|
||||
end,
|
||||
[ { %% Test that the user is attributed all the tags for which the
|
||||
%% corresponding query should succeed.
|
||||
"LDAP Tag attribution", tag_check(<<"Edward">>, <<"password">>, [monitor, normal])}]
|
||||
}.
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
|
|
@ -199,13 +227,16 @@ permission_match() ->
|
|||
{?ALICE, B(<<"xch-Alice-abc123">>), fail}]).
|
||||
|
||||
tag_check(Tags) ->
|
||||
tag_check(<<?ALICE_NAME>>, <<"password">>, Tags).
|
||||
|
||||
tag_check(Username, Password, Tags)
|
||||
when is_binary(Username), is_binary(Password), is_list(Tags) ->
|
||||
fun() ->
|
||||
{ok, User} = rabbit_access_control:check_user_pass_login(
|
||||
<< ?ALICE_NAME >>, <<"password">>),
|
||||
Username, Password),
|
||||
?assertEqual(Tags, User#user.tags)
|
||||
end.
|
||||
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
test_resource_funs(PTRs) -> [test_resource_fun(PTR) || PTR <- PTRs].
|
||||
|
|
|
|||
Loading…
Reference in New Issue