github.com/googleapis/api-linter@v1.65.2/rules/aip0164/resource_expire_time_field_test.go (about) 1 package aip0164 2 3 import ( 4 "testing" 5 6 "github.com/googleapis/api-linter/rules/internal/testutils" 7 ) 8 9 func TestResourceExpireTimeField(t *testing.T) { 10 for _, test := range []struct { 11 desc string 12 MethodName string 13 ResourceField string 14 problems testutils.Problems 15 }{ 16 {"Valid", `UndeleteBook`, `google.protobuf.Timestamp purge_time = 1;`, nil}, 17 {"Valid", `UndeleteBookLegacyExpireTime`, `google.protobuf.Timestamp expire_time = 1;`, nil}, 18 {"Invalid", `UndeleteBook`, ``, testutils.Problems{{Message: "Resources supporting soft delete"}}}, 19 {"IrrelevantNoSoftDelete", `GetBook`, ``, nil}, 20 } { 21 t.Run(test.desc, func(t *testing.T) { 22 file := testutils.ParseProto3Tmpl(t, ` 23 import "google/protobuf/timestamp.proto"; 24 service Library { 25 rpc {{.MethodName}}({{.MethodName}}Request) returns (Book); 26 } 27 message Book { 28 {{.ResourceField}} 29 } 30 message {{.MethodName}}Request {} 31 `, test) 32 message := file.GetMessageTypes()[0] 33 problems := resourceExpireTimeField.Lint(file) 34 if diff := test.problems.SetDescriptor(message).Diff(problems); diff != "" { 35 t.Error(diff) 36 } 37 }) 38 } 39 }