diff options
| -rw-r--r-- | src/rabbit_table.erl | 5 | ||||
| -rw-r--r-- | test/unit_SUITE.erl | 31 |
2 files changed, 19 insertions, 17 deletions
diff --git a/src/rabbit_table.erl b/src/rabbit_table.erl index 5b67497afe..5154f91494 100644 --- a/src/rabbit_table.erl +++ b/src/rabbit_table.erl @@ -20,6 +20,9 @@ force_load/0, is_present/0, is_empty/0, needs_default_data/0, check_schema_integrity/1, clear_ram_only_tables/0, retry_timeout/0]). +%% for testing purposes +-export([definitions/0]). + -include("rabbit.hrl"). %%---------------------------------------------------------------------------- @@ -269,7 +272,7 @@ definitions() -> [{record_name, topic_permission}, {attributes, record_info(fields, topic_permission)}, {disc_copies, [node()]}, - {match, #topic_permission{topic_key = #topic_key{_='_'}, + {match, #topic_permission{topic_permission_key = #topic_permission_key{_='_'}, pattern = '_', _='_'}}]}, {rabbit_vhost, diff --git a/test/unit_SUITE.erl b/test/unit_SUITE.erl index 612d665f28..abba69e02a 100644 --- a/test/unit_SUITE.erl +++ b/test/unit_SUITE.erl @@ -86,19 +86,8 @@ init_per_testcase(TC, Config) when TC =:= decrypt_start_app; Config; init_per_testcase(topic_authorisation, Config) -> mnesia:start(), - mnesia:create_table(rabbit_topic_permission,[ - {record_name, topic_permission}, - {attributes, record_info(fields, topic_permission)} - ]), - mnesia:create_table(rabbit_user,[ - {record_name, internal_user}, - {attributes, record_info(fields, internal_user)} - ]), - mnesia:create_table(rabbit_vhost,[ - {record_name, vhost}, - {attributes, record_info(fields, vhost)} - ]), - {ok, Pool} = worker_pool_sup:start_link(1, worker_pool), + create_tables([rabbit_topic_permission, rabbit_user, rabbit_vhost]), + {ok, Pool} = worker_pool_sup:start_link(1, worker_pool:default_pool()), {ok, Registry} = rabbit_registry:start_link(), {ok, Event} = rabbit_event:start_link(), Config1 = rabbit_ct_helpers:set_config(Config,[ @@ -106,11 +95,19 @@ init_per_testcase(topic_authorisation, Config) -> {event_sup, Event} ]), file_handle_cache_stats:init(), - Config1; init_per_testcase(_, Config) -> Config. +create_tables(Tables) -> + AllTables = rabbit_table:definitions(), + [begin + ShortDefinition = [begin + {Field, proplists:get_value(Field, Definition)} + end || Field <- [record_name, attributes]], + mnesia:create_table(Name, ShortDefinition) + end || {Name, Definition} <- AllTables, proplists:is_defined(Name, Tables)]. + end_per_testcase(TC, _Config) when TC =:= decrypt_start_app; TC =:= decrypt_start_app_file; TC =:= decrypt_start_app_undefined -> @@ -549,13 +546,15 @@ topic_authorisation(_Config) -> write ), %% user has access to exchange but not on this vhost - false = rabbit_auth_backend_internal:check_resource_access( + %% let pass when there's no match + true = rabbit_auth_backend_internal:check_resource_access( User, Topic#resource{virtual_host = <<"fancyvhost">>}, write ), %% user does not have access to exchange - false = rabbit_auth_backend_internal:check_resource_access( + %% let pass when there's no match + true = rabbit_auth_backend_internal:check_resource_access( #auth_user{username = <<"dummy">>}, Topic, write |
