@@ -508,22 +508,50 @@ func TestAIPStandardGetInfo(t *testing.T) {
508508}
509509
510510func TestAIPStandardDeleteInfo (t * testing.T ) {
511- resourceType := "google.cloud.secretmanager.v1/Secret"
511+ resource := & Resource {
512+ Type : "google.cloud.secretmanager.v1/Secret" ,
513+ Singular : "secret" ,
514+ }
515+ resourceWithoutSingular := & Resource {
516+ Type : "google.cloud.secretmanager.v1/SecretWithoutSingular" ,
517+ }
512518 resourceNameField := & Field {
513519 Name : "name" ,
514520 ResourceReference : & ResourceReference {
515- Type : resourceType ,
521+ Type : resource . Type ,
516522 },
517523 }
518- resource := & Resource {
519- Type : resourceType ,
520- Singular : "secret" ,
524+ resourceOtherNameField := & Field {
525+ Name : "other_name" ,
526+ ResourceReference : & ResourceReference {
527+ Type : resource .Type ,
528+ },
529+ }
530+ resourceNameNoSingularField := & Field {
531+ Name : "name" ,
532+ ResourceReference : & ResourceReference {
533+ Type : resourceWithoutSingular .Type ,
534+ },
521535 }
536+ resourceOtherNameNoSingularField := & Field {
537+ Name : "other_name" ,
538+ ResourceReference : & ResourceReference {
539+ Type : resourceWithoutSingular .Type ,
540+ },
541+ }
542+ nonExistentResourceField := & Field {
543+ Name : "name" ,
544+ ResourceReference : & ResourceReference {
545+ Type : "nonexistent.googleapis.com/NonExistent" ,
546+ },
547+ }
548+
522549 model := & API {
523- ResourceDefinitions : []* Resource {resource },
550+ ResourceDefinitions : []* Resource {resource , resourceWithoutSingular },
524551 State : & APIState {
525552 ResourceByType : map [string ]* Resource {
526- resourceType : resource ,
553+ resource .Type : resource ,
554+ resourceWithoutSingular .Type : resourceWithoutSingular ,
527555 },
528556 },
529557 }
@@ -545,6 +573,18 @@ func TestAIPStandardDeleteInfo(t *testing.T) {
545573 ResourceNameRequestField : resourceNameField ,
546574 },
547575 },
576+ {
577+ name : "valid simple delete with missing singular name on resource" ,
578+ method : & Method {
579+ Name : "DeleteSecret" ,
580+ InputType : & Message {Name : "DeleteSecretRequest" , Fields : []* Field {resourceNameNoSingularField }},
581+ ReturnsEmpty : true ,
582+ Model : model ,
583+ },
584+ want : & AIPStandardDeleteInfo {
585+ ResourceNameRequestField : resourceNameNoSingularField ,
586+ },
587+ },
548588 {
549589 name : "valid lro delete" ,
550590 method : & Method {
@@ -557,6 +597,18 @@ func TestAIPStandardDeleteInfo(t *testing.T) {
557597 ResourceNameRequestField : resourceNameField ,
558598 },
559599 },
600+ {
601+ name : "valid delete with other name matching singular" ,
602+ method : & Method {
603+ Name : "DeleteSecret" ,
604+ InputType : & Message {Name : "DeleteSecretRequest" , Fields : []* Field {resourceOtherNameField }},
605+ ReturnsEmpty : true ,
606+ Model : model ,
607+ },
608+ want : & AIPStandardDeleteInfo {
609+ ResourceNameRequestField : resourceOtherNameField ,
610+ },
611+ },
560612 {
561613 name : "incorrect method name" ,
562614 method : & Method {
@@ -582,16 +634,62 @@ func TestAIPStandardDeleteInfo(t *testing.T) {
582634 InputType : & Message {
583635 Name : "DeleteSecretRequest" ,
584636 Fields : []* Field {
585- {
586- Name : "name" ,
587- ResourceReference : & ResourceReference {Type : "nonexistent.googleapis.com/NonExistent" },
588- },
637+ nonExistentResourceField ,
589638 },
590639 },
591640 Model : model , // model's ResourceByType does not contain the nonexistent resource
592641 },
593642 want : nil ,
594643 },
644+ {
645+ name : "invalid delete with no matching field" ,
646+ method : & Method {
647+ Name : "DeleteSecret" ,
648+ InputType : & Message {
649+ Name : "DeleteSecretRequest" ,
650+ Fields : []* Field {
651+ nonExistentResourceField ,
652+ resourceOtherNameNoSingularField ,
653+ },
654+ },
655+ Model : model ,
656+ },
657+ want : nil ,
658+ },
659+ {
660+ name : "priority: name field with matching singular wins over other field with matching singular" ,
661+ method : & Method {
662+ Name : "DeleteSecret" ,
663+ InputType : & Message {
664+ Name : "DeleteSecretRequest" ,
665+ Fields : []* Field {
666+ resourceOtherNameField ,
667+ resourceNameField ,
668+ },
669+ },
670+ Model : model ,
671+ },
672+ want : & AIPStandardDeleteInfo {
673+ ResourceNameRequestField : resourceNameField ,
674+ },
675+ },
676+ {
677+ name : "priority: name field with empty singular wins over other field with matching singular" ,
678+ method : & Method {
679+ Name : "DeleteSecret" ,
680+ InputType : & Message {
681+ Name : "DeleteSecretRequest" ,
682+ Fields : []* Field {
683+ resourceOtherNameField ,
684+ resourceNameNoSingularField ,
685+ },
686+ },
687+ Model : model ,
688+ },
689+ want : & AIPStandardDeleteInfo {
690+ ResourceNameRequestField : resourceNameNoSingularField ,
691+ },
692+ },
595693 }
596694
597695 for _ , tc := range testCases {
0 commit comments