...
1 package aipreflect
2
3 import (
4 "testing"
5
6 examplefreightv1 "go.einride.tech/aip/proto/gen/einride/example/freight/v1"
7 "google.golang.org/protobuf/proto"
8 "gotest.tools/v3/assert"
9 )
10
11 func TestValidateResourceReferences(t *testing.T) {
12 t.Parallel()
13 for _, tt := range []struct {
14 name string
15 message proto.Message
16 errorContains string
17 }{
18 {
19 name: "empty",
20 message: &examplefreightv1.Shipment{},
21 },
22
23 {
24 name: "valid",
25 message: &examplefreightv1.Shipment{
26 OriginSite: "shippers/1/sites/1",
27 DestinationSite: "shippers/1/sites/2",
28 },
29 },
30
31 {
32 name: "valid repeated empty",
33 message: &examplefreightv1.BatchGetSitesRequest{},
34 },
35
36 {
37 name: "valid repeated",
38 message: &examplefreightv1.BatchGetSitesRequest{
39 Names: []string{
40 "shippers/1/sites/1",
41 "shippers/1/sites/2",
42 },
43 },
44 },
45
46 {
47 name: "invalid",
48 message: &examplefreightv1.Shipment{
49 OriginSite: "shippers/1",
50 DestinationSite: "shippers/1/sites/2",
51 },
52 errorContains: "value 'shippers/1' of field origin_site is not a valid resource reference" +
53 " for freight-example.einride.tech/Site",
54 },
55
56 {
57 name: "invalid nested",
58 message: &examplefreightv1.CreateShipmentRequest{
59 Shipment: &examplefreightv1.Shipment{
60 OriginSite: "shippers/1",
61 DestinationSite: "shippers/1/sites/2",
62 },
63 },
64 errorContains: "value 'shippers/1' of field shipment.origin_site is not a valid resource reference" +
65 " for freight-example.einride.tech/Site",
66 },
67
68 {
69 name: "invalid repeated",
70 message: &examplefreightv1.BatchGetSitesRequest{
71 Names: []string{
72 "shippers/1/sites/1",
73 "shippers/1",
74 },
75 },
76 errorContains: "value 'shippers/1' of field names[1] is not a valid resource reference" +
77 " for freight-example.einride.tech/Site",
78 },
79 } {
80 tt := tt
81 t.Run(tt.name, func(t *testing.T) {
82 t.Parallel()
83 err := ValidateResourceReferences(tt.message)
84 if tt.errorContains != "" {
85 assert.ErrorContains(t, err, tt.errorContains)
86 } else {
87 assert.NilError(t, err)
88 }
89 })
90 }
91 }
92
View as plain text