github.com/googleapis/api-linter@v1.65.2/rules/aip0132/request_show_deleted_required_test.go (about) 1 package aip0132 2 3 import ( 4 "testing" 5 6 "github.com/googleapis/api-linter/rules/internal/testutils" 7 ) 8 9 func TestRequestShowDeletedRequired(t *testing.T) { 10 tests := []struct { 11 name string 12 Message string 13 Method string 14 Field string 15 problems testutils.Problems 16 }{ 17 {"Valid", "ListBooksRequest", "UndeleteBook", `bool show_deleted = 1;`, nil}, 18 {"Invalid", "ListBooksRequest", "UndeleteBook", ``, testutils.Problems{{Message: "show_deleted"}}}, 19 {"IrrelevantNoSoftDelete", "ListBooksRequest", "GetBook", ``, nil}, 20 {"IrrelevantMessage", "EnumerateBooksRequest", "UndeleteBook", "", nil}, 21 } 22 23 for _, test := range tests { 24 t.Run(test.name, func(t *testing.T) { 25 f := testutils.ParseProto3Tmpl(t, ` 26 service Library { 27 rpc {{.Method}}({{.Method}}Request) returns (Book); 28 } 29 message Book {} 30 message {{.Message}} { 31 {{.Field}} 32 } 33 message ListBooksResponse { 34 repeated Book books = 1; 35 } 36 message {{.Method}}Request {} 37 `, test) 38 problems := requestShowDeletedRequired.Lint(f) 39 if diff := test.problems.SetDescriptor(f.GetMessageTypes()[1]).Diff(problems); diff != "" { 40 t.Error(diff) 41 } 42 }) 43 } 44 } 45 46 // Regression test for https://github.com/googleapis/api-linter/issues/854. 47 func TestRequestShowDeletedRequired_NonMessageType(t *testing.T) { 48 f := testutils.ParseProto3Tmpl(t, ` 49 message ListBooksRequest {} 50 message ListBooksResponse { 51 repeated string books = 1; 52 } 53 `, nil) 54 problems := requestShowDeletedRequired.Lint(f) 55 if diff := (testutils.Problems{}).SetDescriptor(f.GetMessageTypes()[0]).Diff(problems); diff != "" { 56 t.Error(diff) 57 } 58 }