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  }