internal: add tests for isDirectPathEnabled
Change-Id: I67ab9d4b353aef8e6ebbfaaa7567b472d1387a31
Reviewed-on: https://code-review.googlesource.com/c/google-api-go-client/+/41691
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chris Broadfoot <cbro@google.com>
diff --git a/transport/grpc/dial_test.go b/transport/grpc/dial_test.go
index 91b98c7..e4ad071 100644
--- a/transport/grpc/dial_test.go
+++ b/transport/grpc/dial_test.go
@@ -18,6 +18,7 @@
"context"
"errors"
"net"
+ "os"
"testing"
"time"
@@ -64,3 +65,65 @@
t.Error("expected a call to expected dialer, didn't get one")
}
}
+
+func TestIsDirectPathEnabled(t *testing.T) {
+ for _, testcase := range []struct {
+ name string
+ endpoint string
+ envVar string
+ want bool
+ }{
+ {
+ name: "matches",
+ endpoint: "some-api",
+ envVar: "some-api",
+ want: true,
+ },
+ {
+ name: "does not match",
+ endpoint: "some-api",
+ envVar: "some-other-api",
+ want: false,
+ },
+ {
+ name: "matches in list",
+ endpoint: "some-api-2",
+ envVar: "some-api-1,some-api-2,some-api-3",
+ want: true,
+ },
+ {
+ name: "empty env var",
+ endpoint: "",
+ envVar: "",
+ want: false,
+ },
+ {
+ name: "trailing comma",
+ endpoint: "",
+ envVar: "foo,bar,",
+ want: false,
+ },
+ {
+ name: "dns schemes are allowed",
+ endpoint: "dns:///foo",
+ envVar: "dns:///foo",
+ want: true,
+ },
+ {
+ name: "non-dns schemes are disallowed",
+ endpoint: "https://foo",
+ envVar: "https://foo",
+ want: false,
+ },
+ } {
+ t.Run(testcase.name, func(t *testing.T) {
+ if err := os.Setenv("GOOGLE_CLOUD_ENABLE_DIRECT_PATH", testcase.envVar); err != nil {
+ t.Fatal(err)
+ }
+
+ if got := isDirectPathEnabled(testcase.endpoint); got != testcase.want {
+ t.Fatalf("got %v, want %v", got, testcase.want)
+ }
+ })
+ }
+}