Skip to content

Commit 0f3ceb7

Browse files
yordismjheilmann
andauthored
test: assert list_services response uses proper protobuf structs (#78)
* test: assert list_services response uses proper protobuf structs Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * test: move reflect/2 struct assertions into server_test.exs Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> * fix: downgrade reflection request logs to debug Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> --------- Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com> Co-authored-by: Michael Heilmann <mjheilmann@users.noreply.github.com>
1 parent 6a33c15 commit 0f3ceb7

3 files changed

Lines changed: 39 additions & 4 deletions

File tree

test/integration/v1_reflection_test.exs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ defmodule GrpcReflection.V1ReflectionTest do
1313

1414
test "listing services", ctx do
1515
message = {:list_services, ""}
16-
assert {:ok, %{service: service_list}} = run_request(message, ctx)
17-
names = Enum.map(service_list, &Map.get(&1, :name))
16+
17+
assert {:ok, %Grpc.Reflection.V1.ListServiceResponse{service: service_list}} =
18+
run_request(message, ctx)
19+
20+
assert Enum.all?(service_list, &match?(%Grpc.Reflection.V1.ServiceResponse{}, &1))
21+
22+
names = Enum.map(service_list, & &1.name)
1823

1924
assert names == [
2025
"helloworld.Greeter",

test/integration/v1alpha_reflection_test.exs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ defmodule GrpcReflection.V1alphaReflectionTest do
1313

1414
test "listing services", ctx do
1515
message = {:list_services, ""}
16-
assert {:ok, %{service: service_list}} = run_request(message, ctx)
17-
names = Enum.map(service_list, &Map.get(&1, :name))
16+
17+
assert {:ok, %Grpc.Reflection.V1alpha.ListServiceResponse{service: service_list}} =
18+
run_request(message, ctx)
19+
20+
assert Enum.all?(service_list, &match?(%Grpc.Reflection.V1alpha.ServiceResponse{}, &1))
21+
22+
names = Enum.map(service_list, & &1.name)
1823

1924
assert names == [
2025
"helloworld.Greeter",

test/service/server_test.exs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,31 @@ defmodule GrpcReflection.ServerTest do
2727
Service.get_by_filename(filename)
2828
end
2929

30+
describe "reflect/2 list_services" do
31+
setup do
32+
Service.put_services([Helloworld.Greeter.Service])
33+
:ok
34+
end
35+
36+
test "returns a ListServiceResponse struct, not a plain map" do
37+
assert {:ok, {:list_services_response, response}} =
38+
GrpcReflection.Server.V1.reflect(Service, {:list_services, ""})
39+
40+
assert %Grpc.Reflection.V1.ListServiceResponse{} = response,
41+
"expected a %Grpc.Reflection.V1.ListServiceResponse{} struct, got: #{inspect(response)}"
42+
end
43+
44+
test "service entries are ServiceResponse structs, not plain maps" do
45+
assert {:ok,
46+
{:list_services_response,
47+
%Grpc.Reflection.V1.ListServiceResponse{service: services}}} =
48+
GrpcReflection.Server.V1.reflect(Service, {:list_services, ""})
49+
50+
assert [%Grpc.Reflection.V1.ServiceResponse{name: "helloworld.Greeter"}] = services,
51+
"expected a list of %Grpc.Reflection.V1.ServiceResponse{} structs, got: #{inspect(services)}"
52+
end
53+
end
54+
3055
describe "reflection state testing" do
3156
setup do
3257
Service.put_services([

0 commit comments

Comments
 (0)