Skip to content

Commit e7b767f

Browse files
committed
test: assert list_services response uses proper protobuf structs
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
1 parent 4993d2d commit e7b767f

3 files changed

Lines changed: 40 additions & 4 deletions

File tree

test/integration/v1_reflection_test.exs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ 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+
assert {:ok, %Grpc.Reflection.V1.ListServiceResponse{service: service_list}} = run_request(message, ctx)
17+
assert Enum.all?(service_list, &match?(%Grpc.Reflection.V1.ServiceResponse{}, &1))
18+
19+
names = Enum.map(service_list, & &1.name)
1820

1921
assert names == [
2022
"helloworld.Greeter",

test/integration/v1alpha_reflection_test.exs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ 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+
assert {:ok, %Grpc.Reflection.V1alpha.ListServiceResponse{service: service_list}} = run_request(message, ctx)
17+
assert Enum.all?(service_list, &match?(%Grpc.Reflection.V1alpha.ServiceResponse{}, &1))
18+
19+
names = Enum.map(service_list, & &1.name)
1820

1921
assert names == [
2022
"helloworld.Greeter",

test/server/v1_test.exs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
defmodule GrpcReflection.Server.V1Test do
2+
@moduledoc false
3+
4+
use GrpcCase
5+
6+
defmodule Service do
7+
use GrpcReflection.Server, version: :v1
8+
end
9+
10+
setup do
11+
Service.put_services([Helloworld.Greeter.Service])
12+
:ok
13+
end
14+
15+
describe "reflect/2 list_services" do
16+
test "returns a ListServiceResponse struct, not a plain map" do
17+
assert {:ok, {:list_services_response, response}} =
18+
GrpcReflection.Server.V1.reflect(Service, {:list_services, ""})
19+
20+
assert %Grpc.Reflection.V1.ListServiceResponse{} = response,
21+
"expected a %Grpc.Reflection.V1.ListServiceResponse{} struct, got: #{inspect(response)}"
22+
end
23+
24+
test "service entries are ServiceResponse structs, not plain maps" do
25+
assert {:ok, {:list_services_response, %Grpc.Reflection.V1.ListServiceResponse{service: services}}} =
26+
GrpcReflection.Server.V1.reflect(Service, {:list_services, ""})
27+
28+
assert [%Grpc.Reflection.V1.ServiceResponse{name: "helloworld.Greeter"}] = services,
29+
"expected a list of %Grpc.Reflection.V1.ServiceResponse{} structs, got: #{inspect(services)}"
30+
end
31+
end
32+
end

0 commit comments

Comments
 (0)