@@ -695,6 +695,12 @@ func TestUnitBuildClientConfigureFn_withDomainNameOverride(t *testing.T) {
695695 defer os .Unsetenv (domainNameOverrideEnv )
696696 }
697697
698+ if hadPreviousEnvVar {
699+ defer os .Setenv (hasCorrectDomainNameEnv , prevEnvVar )
700+ } else {
701+ defer os .Unsetenv (hasCorrectDomainNameEnv )
702+ }
703+
698704 os .Setenv (domainNameOverrideEnv , "0r4-c10ud.com" )
699705 assert .Equal (t , "0r4-c10ud.com" , getEnvSettingWithBlankDefault (domainNameOverrideEnv ))
700706 configProvider := oci_common .DefaultConfigProvider ()
@@ -732,6 +738,61 @@ func TestUnitBuildClientConfigureFn_withDomainNameOverride(t *testing.T) {
732738 assert .Equal (t , `DUMMY_ENDPOINT` , baseClient .Host )
733739}
734740
741+ // ensure a custom domain that has already override with more than 2 dots can be targeted and expected http client settings are preserved
742+ func TestUnitBuildClientConfigureFn_withDomainNameOverrideAndCorrectDomainName (t * testing.T ) {
743+
744+ prevEnvVar , hadPreviousEnvVar := os .LookupEnv (domainNameOverrideEnv )
745+ if hadPreviousEnvVar {
746+ defer os .Setenv (domainNameOverrideEnv , prevEnvVar )
747+ } else {
748+ defer os .Unsetenv (domainNameOverrideEnv )
749+ }
750+
751+ if hadPreviousEnvVar {
752+ defer os .Setenv (hasCorrectDomainNameEnv , prevEnvVar )
753+ } else {
754+ defer os .Unsetenv (hasCorrectDomainNameEnv )
755+ }
756+
757+ os .Setenv (domainNameOverrideEnv , "oc.0r4-c10ud.com" )
758+ os .Setenv (hasCorrectDomainNameEnv , "oc.0r4-c10ud.com" )
759+ assert .Equal (t , "oc.0r4-c10ud.com" , getEnvSettingWithBlankDefault (domainNameOverrideEnv ))
760+ assert .Equal (t , "oc.0r4-c10ud.com" , getEnvSettingWithBlankDefault (hasCorrectDomainNameEnv ))
761+ configProvider := oci_common .DefaultConfigProvider ()
762+ httpClient := buildHttpClient ()
763+ configureClientFn , err := buildConfigureClientFn (configProvider , httpClient )
764+ assert .NoError (t , err )
765+
766+ baseClient := & oci_common.BaseClient {}
767+ baseClient .Host = "https://svc.region.oc.0r4-c10ud.com"
768+ err = configureClientFn (baseClient )
769+ assert .NoError (t , err )
770+
771+ // verify transport settings are unchanged
772+ tr := httpClient .Transport .(* http.Transport )
773+ assert .NotNil (t , tr .TLSClientConfig )
774+ assert .Equal (t , uint16 (tls .VersionTLS12 ), tr .TLSClientConfig .MinVersion , "expected min tls 1.2" )
775+ assert .NotNil (t , tr .Proxy , "expected http.ProxyFromEnvironment fn" )
776+ assert .Nil (t , tr .TLSClientConfig .RootCAs )
777+
778+ // verify url has expected domain
779+ assert .Equal (t , `https://svc.region.oc.0r4-c10ud.com` , baseClient .Host )
780+
781+ // verify subdomains are preserved
782+ baseClient = & oci_common.BaseClient {}
783+ baseClient .Host = "avnzdivwaadfa-management.kms.us-phoenix-1.oraclecloud.com"
784+ err = configureClientFn (baseClient )
785+ assert .NoError (t , err )
786+ assert .Equal (t , `avnzdivwaadfa-management.kms.us-phoenix-1.oc.0r4-c10ud.com` , baseClient .Host )
787+
788+ // verify non-match preserves original url
789+ baseClient = & oci_common.BaseClient {}
790+ baseClient .Host = "DUMMY_ENDPOINT"
791+ err = configureClientFn (baseClient )
792+ assert .NoError (t , err )
793+ assert .Equal (t , `DUMMY_ENDPOINT` , baseClient .Host )
794+ }
795+
735796// ensure use_obo_token env var results in `opc-obo-token` http header injection
736797func TestUnitBuildClientConfigureFn_interceptor (t * testing.T ) {
737798
0 commit comments