summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_table.erl5
-rw-r--r--test/unit_SUITE.erl31
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