@@ -970,6 +970,8 @@ func (r *fakeResolver) Resolve(_ context.Context, name string) (instance.ConnNam
970970func TestDialerSuccessfullyDialsDnsTxtRecord (t * testing.T ) {
971971 inst := mock .NewFakeCSQLInstance (
972972 "my-project" , "my-region" , "my-instance" ,
973+ mock .WithDNSMapping ("db.example.com" , "INSTANCE" , "CUSTOM_SAN" ),
974+ mock .WithDNSMapping ("db2.example.com" , "INSTANCE" , "CUSTOM_SAN" ),
973975 )
974976 wantName , _ := instance .ParseConnNameWithDomainName ("my-project:my-region:my-instance" , "db.example.com" )
975977 wantName2 , _ := instance .ParseConnNameWithDomainName ("my-project:my-region:my-instance" , "db2.example.com" )
@@ -1046,9 +1048,11 @@ func TestDialerUpdatesAutomaticallyAfterDnsChange(t *testing.T) {
10461048 // SRV record and connect to the correct instance.
10471049 inst := mock .NewFakeCSQLInstance (
10481050 "my-project" , "my-region" , "my-instance" ,
1051+ mock .WithDNS ("update.example.com" ),
10491052 )
10501053 inst2 := mock .NewFakeCSQLInstance (
10511054 "my-project" , "my-region" , "my-instance2" ,
1055+ mock .WithDNS ("update.example.com" ),
10521056 )
10531057 r := & changingResolver {
10541058 stage : new (int32 ),
@@ -1104,42 +1108,85 @@ func TestDialerUpdatesAutomaticallyAfterDnsChange(t *testing.T) {
11041108
11051109func TestDialerChecksSubjectAlternativeNameAndSucceeds (t * testing.T ) {
11061110
1107- // Create an instance with custom SAN 'db.example.com'
1108- inst := mock .NewFakeCSQLInstanceWithSan (
1109- "my-project" , "my-region" , "my-instance" , []string {"db.example.com" },
1110- mock .WithDNS ("db.example.com" ),
1111- mock .WithServerCAMode ("GOOGLE_MANAGED_CAS_CA" ),
1112- )
1111+ tcs := []struct {
1112+ name string
1113+ legacy bool
1114+ icn string
1115+ dn string
1116+ }{{
1117+ name : "domainName DnsName older" ,
1118+ legacy : true ,
1119+ icn : "my-project:my-region:my-instance" ,
1120+ }, {
1121+ name : "domainName DnsNames newer" ,
1122+ legacy : false ,
1123+ icn : "my-project:my-region:my-instance" ,
1124+ },
1125+ {
1126+ name : "InstanceConnectionName DnsName older" ,
1127+ legacy : true ,
1128+ icn : "my-project:my-region:my-instance" ,
1129+ dn : "db.example.com" ,
1130+ }, {
1131+ name : "InstanceConnectionName DnsNames newer" ,
1132+ legacy : false ,
1133+ icn : "my-project:my-region:my-instance" ,
1134+ dn : "db.example.com" ,
1135+ }}
1136+ for _ , tc := range tcs {
1137+ t .Run (tc .name , func (t * testing.T ) {
1138+ // Create an instance with custom SAN 'db.example.com'
1139+ var inst mock.FakeCSQLInstance
1140+ if tc .legacy || tc .dn == "" {
1141+ inst = mock .NewFakeCSQLInstance (
1142+ "my-project" , "my-region" , "my-instance" ,
1143+ mock .WithDNS ("db.example.com" ),
1144+ mock .WithServerCAMode ("GOOGLE_MANAGED_CAS_CA" ),
1145+ )
1146+ } else {
1147+ inst = mock .NewFakeCSQLInstance (
1148+ "my-project" , "my-region" , "my-instance" ,
1149+ mock .WithDNSMapping ("db.example.com" , "INSTANCE" , "CUSTOM_SAN" ),
1150+ mock .WithServerCAMode ("GOOGLE_MANAGED_CAS_CA" ),
1151+ )
1152+ }
11131153
1114- wantName , _ := instance .ParseConnNameWithDomainName ("my-project:my-region:my-instance" , "db.example.com" )
1115- d := setupDialer (t , setupConfig {
1116- testInstance : inst ,
1117- reqs : []* mock.Request {
1118- mock .InstanceGetSuccess (inst , 1 ),
1119- mock .CreateEphemeralSuccess (inst , 1 ),
1120- },
1121- dialerOptions : []Option {
1122- WithTokenSource (mock.EmptyTokenSource {}),
1123- WithResolver (& fakeResolver {
1124- entries : map [string ]instance.ConnName {
1125- "db.example.com" : wantName ,
1154+ wantName , _ := instance .ParseConnNameWithDomainName (tc .icn , tc .dn )
1155+ d := setupDialer (t , setupConfig {
1156+ testInstance : inst ,
1157+ reqs : []* mock.Request {
1158+ mock .InstanceGetSuccess (inst , 1 ),
1159+ mock .CreateEphemeralSuccess (inst , 1 ),
11261160 },
1127- }),
1128- },
1129- })
1161+ dialerOptions : []Option {
1162+ WithTokenSource (mock.EmptyTokenSource {}),
1163+ WithResolver (& fakeResolver {
1164+ entries : map [string ]instance.ConnName {
1165+ "db.example.com" : wantName ,
1166+ "my-project:my-region:my-instance" : wantName ,
1167+ },
1168+ }),
1169+ },
1170+ })
1171+ dnOrIcn := tc .icn
1172+ if tc .dn != "" {
1173+ dnOrIcn = tc .dn
1174+ }
11301175
1131- // Dial db.example.com
1132- testSuccessfulDial (
1133- context .Background (), t , d ,
1134- "db.example.com" ,
1135- )
1176+ // Dial db.example.com
1177+ testSuccessfulDial (
1178+ context .Background (), t , d ,
1179+ dnOrIcn ,
1180+ )
1181+ })
1182+ }
11361183}
11371184
11381185func TestDialerChecksSubjectAlternativeNameAndFails (t * testing.T ) {
11391186
11401187 // Create an instance with custom SAN 'db.example.com'
1141- inst := mock .NewFakeCSQLInstanceWithSan (
1142- "my-project" , "my-region" , "my-instance" , [] string { "db.example.com" },
1188+ inst := mock .NewFakeCSQLInstance (
1189+ "my-project" , "my-region" , "my-instance" ,
11431190 mock .WithDNS ("db.example.com" ),
11441191 mock .WithServerCAMode ("GOOGLE_MANAGED_CAS_CA" ),
11451192 )
@@ -1207,8 +1254,8 @@ func TestDialerRefreshesAfterRotateCACerts(t *testing.T) {
12071254 }
12081255 for _ , tc := range tcs {
12091256 t .Run (tc .desc , func (t * testing.T ) {
1210- inst := mock .NewFakeCSQLInstanceWithSan (
1211- "my-project" , "my-region" , "my-instance" , [] string { "db.example.com" },
1257+ inst := mock .NewFakeCSQLInstance (
1258+ "my-project" , "my-region" , "my-instance" ,
12121259 mock .WithDNS ("db.example.com" ),
12131260 mock .WithServerCAMode ("GOOGLE_MANAGED_CAS_CA" ),
12141261 )
0 commit comments