diff --git a/src/hex_registry.erl b/src/hex_registry.erl index 5f5fd45..e266d75 100644 --- a/src/hex_registry.erl +++ b/src/hex_registry.erl @@ -49,13 +49,12 @@ encode_names(Names) -> %% @private decode_names(Payload, no_verify) -> - #{packages := Packages} = hex_pb_names:decode_msg(Payload, 'Names'), - {ok, Packages}; + {ok, hex_pb_names:decode_msg(Payload, 'Names')}; decode_names(Payload, Repository) -> case hex_pb_names:decode_msg(Payload, 'Names') of - #{repository := Repository, packages := Packages} -> - {ok, Packages}; + #{repository := Repository, packages := _Packages} = Result -> + {ok, Result}; _ -> {error, unverified} end. @@ -80,13 +79,12 @@ encode_versions(Versions) -> %% @private decode_versions(Payload, no_verify) -> - #{packages := Packages} = hex_pb_versions:decode_msg(Payload, 'Versions'), - {ok, Packages}; + {ok, hex_pb_versions:decode_msg(Payload, 'Versions')}; decode_versions(Payload, Repository) -> case hex_pb_versions:decode_msg(Payload, 'Versions') of - #{repository := Repository, packages := Packages} -> - {ok, Packages}; + #{repository := Repository, packages := _Packages} = Result -> + {ok, Result}; _ -> {error, unverified} end. @@ -111,13 +109,12 @@ encode_package(Package) -> %% @private decode_package(Payload, no_verify, no_verify) -> - #{releases := Releases} = hex_pb_package:decode_msg(Payload, 'Package'), - {ok, Releases}; + {ok, hex_pb_package:decode_msg(Payload, 'Package')}; decode_package(Payload, Repository, Package) -> case hex_pb_package:decode_msg(Payload, 'Package') of - #{repository := Repository, name := Package, releases := Releases} -> - {ok, Releases}; + #{repository := Repository, name := Package, releases := _Releases} = Result -> + {ok, Result}; _ -> {error, unverified} end. diff --git a/src/hex_repo.erl b/src/hex_repo.erl index e764019..5ebe870 100644 --- a/src/hex_repo.erl +++ b/src/hex_repo.erl @@ -29,10 +29,12 @@ get_names(Config) when is_map(Config) -> Verify = maps:get(repo_verify_origin, Config, true), Decoder = fun(Data) -> - case Verify of - true -> hex_registry:decode_names(Data, repo_name(Config)); - false -> hex_registry:decode_names(Data, no_verify) - end + {ok, #{packages := Packages}} = + case Verify of + true -> hex_registry:decode_names(Data, repo_name(Config)); + false -> hex_registry:decode_names(Data, no_verify) + end, + {ok, Packages} end, get_protobuf(Config, <<"names">>, Decoder). @@ -55,10 +57,12 @@ get_names(Config) when is_map(Config) -> get_versions(Config) when is_map(Config) -> Verify = maps:get(repo_verify_origin, Config, true), Decoder = fun(Data) -> - case Verify of - true -> hex_registry:decode_versions(Data, repo_name(Config)); - false -> hex_registry:decode_versions(Data, no_verify) - end + {ok, #{packages := Packages}} = + case Verify of + true -> hex_registry:decode_versions(Data, repo_name(Config)); + false -> hex_registry:decode_versions(Data, no_verify) + end, + {ok, Packages} end, get_protobuf(Config, <<"versions">>, Decoder). @@ -81,10 +85,12 @@ get_versions(Config) when is_map(Config) -> get_package(Config, Name) when is_binary(Name) and is_map(Config) -> Verify = maps:get(repo_verify_origin, Config, true), Decoder = fun(Data) -> - case Verify of - true -> hex_registry:decode_package(Data, repo_name(Config), Name); - false -> hex_registry:decode_package(Data, no_verify, no_verify) - end + {ok, #{releases := Releases}} = + case Verify of + true -> hex_registry:decode_package(Data, repo_name(Config), Name); + false -> hex_registry:decode_package(Data, no_verify, no_verify) + end, + {ok, Releases} end, get_protobuf(Config, <<"packages/", Name/binary>>, Decoder). diff --git a/test/hex_registry_SUITE.erl b/test/hex_registry_SUITE.erl index a63ef22..8d647e3 100644 --- a/test/hex_registry_SUITE.erl +++ b/test/hex_registry_SUITE.erl @@ -24,8 +24,8 @@ names_test(_Config) -> packages => Packages }, Payload = hex_registry:build_names(Names, TestPrivateKey), - ?assertMatch({ok, Packages}, hex_registry:unpack_names(Payload, <<"hexpm">>, TestPublicKey)), - ?assertMatch({ok, Packages}, hex_registry:unpack_names(Payload, no_verify, TestPublicKey)), + ?assertMatch({ok, Names}, hex_registry:unpack_names(Payload, <<"hexpm">>, TestPublicKey)), + ?assertMatch({ok, Names}, hex_registry:unpack_names(Payload, no_verify, TestPublicKey)), ?assertMatch({error, unverified}, hex_registry:unpack_names(Payload, <<"other_repo">>, TestPublicKey)), ok. @@ -49,8 +49,8 @@ versions_test(_Config) -> packages => Packages }, Payload = hex_registry:build_versions(Versions, TestPrivateKey), - ?assertMatch({ok, Packages}, hex_registry:unpack_versions(Payload, <<"hexpm">>, TestPublicKey)), - ?assertMatch({ok, Packages}, hex_registry:unpack_versions(Payload, no_verify, TestPublicKey)), + ?assertMatch({ok, Versions}, hex_registry:unpack_versions(Payload, <<"hexpm">>, TestPublicKey)), + ?assertMatch({ok, Versions}, hex_registry:unpack_versions(Payload, no_verify, TestPublicKey)), ?assertMatch({error, unverified}, hex_registry:unpack_versions(Payload, <<"other_repo">>, TestPublicKey)), ok. @@ -90,8 +90,8 @@ package_test(_Config) -> releases => Releases }, Payload = hex_registry:build_package(Package, TestPrivateKey), - ?assertMatch({ok, Releases}, hex_registry:unpack_package(Payload, <<"hexpm">>, <<"foobar">>, TestPublicKey)), - ?assertMatch({ok, Releases}, hex_registry:unpack_package(Payload, no_verify, no_verify, TestPublicKey)), + ?assertMatch({ok, Package}, hex_registry:unpack_package(Payload, <<"hexpm">>, <<"foobar">>, TestPublicKey)), + ?assertMatch({ok, Package}, hex_registry:unpack_package(Payload, no_verify, no_verify, TestPublicKey)), ?assertMatch({error, unverified}, hex_registry:unpack_package(Payload, <<"other_repo">>, <<"foobar">>, TestPublicKey)), ?assertMatch({error, unverified}, hex_registry:unpack_package(Payload, <<"hexpm">>, <<"other_package">>, TestPublicKey)), ok. @@ -107,7 +107,7 @@ signed_test(_Config) -> Signed = hex_registry:sign_protobuf(Payload, TestPrivateKey), #{payload := Payload} = hex_registry:decode_signed(Signed), {ok, Payload} = hex_registry:decode_and_verify_signed(Signed, TestPublicKey), - {ok, []} = hex_registry:decode_names(Payload, <<"hexpm">>), + {ok, #{packages := []}} = hex_registry:decode_names(Payload, <<"hexpm">>), {error, bad_key} = hex_registry:decode_and_verify_signed(Signed, <<"bad">>),