Update HTTP API tests

This relaxes assert_list/2 assertion to
not require the size of an actually returned list element
to be exactly equal to the size of the expected one.

Sometimes it makes perfect sense to not assert on
every single key but only a subset, and with this
change, it now will be possible.

Individual tests may choose to assert on all
keys by listing them explicitly.
This commit is contained in:
Michael Klishin 2024-08-24 14:50:37 -04:00
parent c41c27de06
commit 768b2f6925
3 changed files with 26 additions and 16 deletions

View File

@ -268,7 +268,10 @@ atomize_map_keys(I) ->
%% @todo There wasn't a specific order before; now there is; maybe we shouldn't have one?
assert_list(Exp, Act) ->
case length(Exp) == length(Act) of
%% allow actual map to include keys we do not assert on
%% but not the other way around: we may want to only assert on a subset
%% of keys
case length(Act) >= length(Exp) of
true -> ok;
false -> error({expected, Exp, actual, Act})
end,

View File

@ -1152,21 +1152,24 @@ queues_test(Config) ->
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}},
arguments => #{'x-queue-type' => <<"classic">>}
},
#{name => <<"foo">>,
vhost => <<"downvhost">>,
state => <<"stopped">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}}], DownQueues),
arguments => #{'x-queue-type' => <<"classic">>}
}], DownQueues),
assert_item(#{name => <<"foo">>,
vhost => <<"downvhost">>,
state => <<"stopped">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}}, DownQueue),
arguments => #{'x-queue-type' => <<"classic">>}
}, DownQueue),
http_put(Config, "/queues/badvhost/bar", Good, ?NOT_FOUND),
http_put(Config, "/queues/%2F/bar",
@ -1188,21 +1191,21 @@ queues_test(Config) ->
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{},
arguments => #{'x-queue-type' => <<"classic">>},
storage_version => 2},
#{name => <<"foo">>,
vhost => <<"/">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{},
arguments => #{'x-queue-type' => <<"classic">>},
storage_version => 2}], Queues),
assert_item(#{name => <<"foo">>,
vhost => <<"/">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{},
arguments => #{'x-queue-type' => <<"classic">>},
storage_version => 2}, Queue),
http_delete(Config, "/queues/%2F/foo", {group, '2xx'}),
@ -2242,7 +2245,8 @@ exclusive_queue_test(Config) ->
durable => false,
auto_delete => false,
exclusive => true,
arguments => #{}}, Queue),
arguments => #{'x-queue-type' => <<"classic">>}
}, Queue),
true
end),
amqp_channel:close(Ch),
@ -2809,7 +2813,7 @@ columns_test(Config) ->
http_delete(Config, Path, [{group, '2xx'}, 404]),
http_put(Config, Path, [{arguments, [{<<"x-message-ttl">>, TTL}]}],
{group, '2xx'}),
Item = #{arguments => #{'x-message-ttl' => TTL}, name => <<"columns.test">>},
Item = #{arguments => #{'x-message-ttl' => TTL, 'x-queue-type' => <<"classic">>}, name => <<"columns.test">>},
?AWAIT(
begin

View File

@ -381,21 +381,23 @@ queues_test(Config) ->
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}},
arguments => #{'x-queue-type' => <<"classic">>}
},
#{name => <<"foo">>,
vhost => <<"downvhost">>,
state => <<"stopped">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}}], DownQueues),
arguments => #{'x-queue-type' => <<"classic">>}
}], DownQueues),
assert_item(#{name => <<"foo">>,
vhost => <<"downvhost">>,
state => <<"stopped">>,
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{}}, DownQueue),
arguments => #{'x-queue-type' => <<"classic">>}}, DownQueue),
http_put(Config, "/queues/badvhost/bar", Good, ?NOT_FOUND),
http_put(Config, "/queues/%2F/bar",
@ -418,7 +420,7 @@ queues_test(Config) ->
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{},
arguments => #{'x-queue-type' => <<"classic">>},
node => NodeBin},
#{name => <<"foo">>,
vhost => <<"/">>,
@ -495,7 +497,7 @@ queues_enable_totals_test(Config) ->
durable => true,
auto_delete => false,
exclusive => false,
arguments => #{},
arguments => #{'x-queue-type' => <<"classic">>},
node => NodeBin,
messages => 1,
messages_ready => 1,
@ -882,7 +884,8 @@ exclusive_queue_test(Config) ->
durable => false,
auto_delete => false,
exclusive => true,
arguments => #{}}, Queue),
arguments => #{'x-queue-type' => <<"classic">>}
}, Queue),
amqp_channel:close(Ch),
close_connection(Conn),
passed.
@ -1514,7 +1517,7 @@ columns_test(Config) ->
http_delete(Config, Path, [{group, '2xx'}, 404]),
http_put(Config, Path, [{arguments, [{<<"x-message-ttl">>, TTL}]}],
{group, '2xx'}),
Item = #{arguments => #{'x-message-ttl' => TTL}, name => <<"columns.test">>},
Item = #{arguments => #{'x-message-ttl' => TTL, 'x-queue-type' => <<"classic">>}, name => <<"columns.test">>},
timer:sleep(2000),
[Item] = http_get(Config, "/queues?columns=arguments.x-message-ttl,name", ?OK),
Item = http_get(Config, "/queues/%2F/columns.test?columns=arguments.x-message-ttl,name", ?OK),