rabbitmq-server/deps/rabbitmq_aws/test/rabbitmq_aws_json_tests.erl

96 lines
4.7 KiB
Erlang

-module(rabbitmq_aws_json_tests).
-include_lib("eunit/include/eunit.hrl").
parse_test_() ->
[
{"string decoding", fun() ->
Value =
"{\"requestId\":\"bda7fbdb-eddb-41fa-8626-7ba87923d690\",\"number\":128,\"enabled\":true,\"tagSet\":[{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"Environment\",\"value\":\"prod-us-east-1\"},{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"aws:cloudformation:logical-id\",\"value\":\"AutoScalingGroup\"},{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"aws:cloudformation:stack-name\",\"value\":\"prod-us-east-1-ecs-1\"}]}",
Expectation = [
{"requestId", "bda7fbdb-eddb-41fa-8626-7ba87923d690"},
{"number", 128},
{"enabled", true},
{"tagSet", [
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "Environment"},
{"value", "prod-us-east-1"},
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "aws:cloudformation:logical-id"},
{"value", "AutoScalingGroup"},
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "aws:cloudformation:stack-name"},
{"value", "prod-us-east-1-ecs-1"}
]}
],
Proplist = rabbitmq_aws_json:decode(Value),
?assertEqual(
proplists:get_value("requestId", Expectation),
proplists:get_value("requestId", Proplist)
),
?assertEqual(
proplists:get_value("number", Expectation), proplists:get_value("number", Proplist)
),
?assertEqual(
proplists:get_value("enabled", Expectation),
proplists:get_value("enabled", Proplist)
),
?assertEqual(
lists:usort(proplists:get_value("tagSet", Expectation)),
lists:usort(proplists:get_value("tagSet", Proplist))
)
end},
{"binary decoding", fun() ->
Value =
<<"{\"requestId\":\"bda7fbdb-eddb-41fa-8626-7ba87923d690\",\"number\":128,\"enabled\":true,\"tagSet\":[{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"Environment\",\"value\":\"prod-us-east-1\"},{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"aws:cloudformation:logical-id\",\"value\":\"AutoScalingGroup\"},{\"resourceId\":\"i-13a4abea\",\"resourceType\":\"instance\",\"key\":\"aws:cloudformation:stack-name\",\"value\":\"prod-us-east-1-ecs-1\"}]}">>,
Expectation = [
{"requestId", "bda7fbdb-eddb-41fa-8626-7ba87923d690"},
{"number", 128},
{"enabled", true},
{"tagSet", [
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "Environment"},
{"value", "prod-us-east-1"},
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "aws:cloudformation:logical-id"},
{"value", "AutoScalingGroup"},
{"resourceId", "i-13a4abea"},
{"resourceType", "instance"},
{"key", "aws:cloudformation:stack-name"},
{"value", "prod-us-east-1-ecs-1"}
]}
],
Proplist = rabbitmq_aws_json:decode(Value),
?assertEqual(
proplists:get_value("requestId", Expectation),
proplists:get_value("requestId", Proplist)
),
?assertEqual(
proplists:get_value("number", Expectation), proplists:get_value("number", Proplist)
),
?assertEqual(
proplists:get_value("enabled", Expectation),
proplists:get_value("enabled", Proplist)
),
?assertEqual(
lists:usort(proplists:get_value("tagSet", Expectation)),
lists:usort(proplists:get_value("tagSet", Proplist))
)
end},
{"list values", fun() ->
Value = "{\"misc\": [\"foo\", true, 123]\}",
Expectation = [{"misc", ["foo", true, 123]}],
?assertEqual(Expectation, rabbitmq_aws_json:decode(Value))
end},
{"empty objects", fun() ->
Value = "{\"tags\": [{}]}",
Expectation = [{"tags", [{}]}],
?assertEqual(Expectation, rabbitmq_aws_json:decode(Value))
end}
].