...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package conversion_test
16
17 import (
18 "testing"
19
20 "github.com/google/go-cmp/cmp"
21 "google.golang.org/protobuf/proto"
22 "google.golang.org/protobuf/types/known/structpb"
23
24 core "github.com/emissary-ingress/emissary/v3/pkg/api/envoy/config/core/v3"
25 discovery "github.com/emissary-ingress/emissary/v3/pkg/api/envoy/service/discovery/v3"
26 "github.com/emissary-ingress/emissary/v3/pkg/envoy-control-plane/conversion"
27 )
28
29 func TestConversion(t *testing.T) {
30 pb := &discovery.DiscoveryRequest{
31 VersionInfo: "test",
32 Node: &core.Node{Id: "proxy"},
33 }
34 st, err := conversion.MessageToStruct(pb)
35 if err != nil {
36 t.Fatalf("unexpected error %v", err)
37 }
38 pbst := map[string]*structpb.Value{
39 "version_info": {Kind: &structpb.Value_StringValue{StringValue: "test"}},
40 "node": {Kind: &structpb.Value_StructValue{StructValue: &structpb.Struct{
41 Fields: map[string]*structpb.Value{
42 "id": {Kind: &structpb.Value_StringValue{StringValue: "proxy"}},
43 },
44 }}},
45 }
46 if !cmp.Equal(st.Fields, pbst, cmp.Comparer(proto.Equal)) {
47 t.Errorf("MessageToStruct(%v) => got %v, want %v", pb, st.Fields, pbst)
48 }
49
50 out := &discovery.DiscoveryRequest{}
51 err = conversion.StructToMessage(st, out)
52 if err != nil {
53 t.Fatalf("unexpected error %v", err)
54 }
55 if !cmp.Equal(pb, out, cmp.Comparer(proto.Equal)) {
56 t.Errorf("StructToMessage(%v) => got %v, want %v", st, out, pb)
57 }
58
59 if _, err = conversion.MessageToStruct(nil); err == nil {
60 t.Error("MessageToStruct(nil) => got no error")
61 }
62
63 if err = conversion.StructToMessage(nil, &discovery.DiscoveryRequest{}); err == nil {
64 t.Error("StructToMessage(nil) => got no error")
65 }
66 }
67
View as plain text