Skip to content

Commit

Permalink
adding unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Tulsishah committed Apr 17, 2024
1 parent fb6566e commit e74054d
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 74 deletions.
131 changes: 84 additions & 47 deletions internal/storage/storage_handle_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,21 @@ func (t *StorageHandleTest) TearDown() {
t.fakeStorage.ShutDown()
}

func (t *StorageHandleTest) invokeAndVerifyStorageHandle(sc storageutil.StorageClientConfig) {
func (t *StorageHandleTest) invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc storageutil.StorageClientConfig) {
sc.DisableAuth = true
handleCreated, err := NewStorageHandle(context.Background(), sc)
AssertEq(nil, err)
AssertNe(nil, handleCreated)
}

func (t *StorageHandleTest) invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc storageutil.StorageClientConfig) {
handleCreated, err := NewStorageHandle(context.Background(), sc)

AssertNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
AssertEq(nil, handleCreated)
}

func (t *StorageHandleTest) TestBucketHandleWhenBucketExistsWithEmptyBillingProject() {
storageHandle := t.fakeStorage.CreateStorageHandle()
bucketHandle := storageHandle.BucketHandle(TestBucketName, "")
Expand Down Expand Up @@ -87,118 +96,146 @@ func (t *StorageHandleTest) TestBucketHandleWhenBucketDoesNotExistWithNonEmptyBi
AssertEq(nil, bucketHandle.Bucket)
}

func (t *StorageHandleTest) TestNewStorageHandleHttp2Disabled() {
func (t *StorageHandleTest) TestNewStorageHandleHttp2DisabledWhenDisableAuthIsTrue() {
sc := storageutil.GetDefaultStorageClientConfig() // by default http1 enabled

t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleHttp2DisabledWhenDisableAuthIsFalse() {
sc := storageutil.GetDefaultStorageClientConfig() // by default http1 enabled

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleHttp2EnabledWhenDisableAuthIsTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ClientProtocol = mountpkg.HTTP2

t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleHttp2Enabled() {
func (t *StorageHandleTest) TestNewStorageHandleHttp2EnabledWhenDisableAuthIsFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ClientProtocol = mountpkg.HTTP2

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWithZeroMaxConnsPerHost() {
func (t *StorageHandleTest) TestNewStorageHandleWithZeroMaxConnsPerHostWhenDisableAuthIsTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.MaxConnsPerHost = 0

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenUserAgentIsSet() {
func (t *StorageHandleTest) TestNewStorageHandleWithZeroMaxConnsPerHostWhenDisableAuthIsFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.MaxConnsPerHost = 0

t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenUserAgentIsSetWhenDisableAuthIsTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.UserAgent = "gcsfuse/unknown (Go version go1.20-pre3 cl/474093167 +a813be86df) appName (GPN:Gcsfuse-DLC)"

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWithCustomEndpoint() {
func (t *StorageHandleTest) TestNewStorageHandleWhenUserAgentIsSetWhenDisableAuthIsFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.UserAgent = "gcsfuse/unknown (Go version go1.20-pre3 cl/474093167 +a813be86df) appName (GPN:Gcsfuse-DLC)"

t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWithCustomEndpointWhenDisableAuthIsTrue() {
url, err := url.Parse(storageutil.CustomEndpoint)
AssertEq(nil, err)
sc := storageutil.GetDefaultStorageClientConfig()
sc.CustomEndpoint = url

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

// This will fail while fetching the token-source, since key-file doesn't exist.
func (t *StorageHandleTest) TestNewStorageHandleWhenCustomEndpointIsNil() {
func (t *StorageHandleTest) TestNewStorageHandleWhenCustomEndpointIsNilAndDisableAuthIsTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.CustomEndpoint = nil

handleCreated, err := NewStorageHandle(context.Background(), sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

AssertNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
AssertEq(nil, handleCreated)
func (t *StorageHandleTest) TestNewStorageHandleWhenCustomEndpointIsNilAndDisableAuthIsFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.CustomEndpoint = nil

t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenCustomEndpointIsNotNilAndDisableAuthIsFalse() {
url, err := url.Parse(storageutil.CustomEndpoint)
AssertEq(nil, err)
sc := storageutil.GetDefaultStorageClientConfig()
sc.CustomEndpoint = url

t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenKeyFileIsEmpty() {
func (t *StorageHandleTest) TestNewStorageHandleWhenKeyFileIsEmptyAndDisableAuthTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.KeyFile = ""

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenReuseTokenUrlFalse() {
func (t *StorageHandleTest) TestNewStorageHandleWhenReuseTokenUrlFalseAndDisableAuthTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ReuseTokenFromUrl = false

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenTokenUrlIsSet() {
func (t *StorageHandleTest) TestNewStorageHandleWhenReuseTokenUrlFalseAndDisableAuthFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.TokenUrl = storageutil.CustomTokenUrl
sc.ReuseTokenFromUrl = false

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWhenJsonReadEnabled() {
func (t *StorageHandleTest) TestNewStorageHandleWhenTokenUrlIsSetAndDisableAuthTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ExperimentalEnableJsonRead = true
sc.TokenUrl = storageutil.CustomTokenUrl

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWithInvalidClientProtocol() {
func (t *StorageHandleTest) TestNewStorageHandleWhenTokenUrlIsSetAndDisableAuthFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ExperimentalEnableJsonRead = true
sc.ClientProtocol = "test-protocol"

handleCreated, err := NewStorageHandle(context.Background(), sc)
sc.TokenUrl = storageutil.CustomTokenUrl

AssertNe(nil, err)
AssertEq(nil, handleCreated)
AssertTrue(strings.Contains(err.Error(), "invalid client-protocol requested: test-protocol"))
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestCreateGRPCClientHandle() {
func (t *StorageHandleTest) TestNewStorageHandleWhenJsonReadEnabledAndDisableAuthTrue() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ClientProtocol = mountpkg.GRPC

handleCreated, err := createGRPCClientHandle(context.Background(), &sc)
sc.ExperimentalEnableJsonRead = true

AssertEq(nil, err)
AssertNe(nil, handleCreated)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsTrue(sc)
}

func (t *StorageHandleTest) TestCreateHTTPClientHandle() {
func (t *StorageHandleTest) TestNewStorageHandleWhenJsonReadEnabledAndDisableAuthFalse() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ExperimentalEnableJsonRead = true

handleCreated, err := createHTTPClientHandle(context.Background(), &sc)

AssertEq(nil, err)
AssertNe(nil, handleCreated)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestNewStorageHandleWithGRPCClientProtocol() {
sc := storageutil.GetDefaultStorageClientConfig()
sc.ClientProtocol = mountpkg.GRPC

t.invokeAndVerifyStorageHandle(sc)
t.invokeAndVerifyStorageHandleWhenDisableAuthIsFalse(sc)
}

func (t *StorageHandleTest) TestCreateGRPCClientHandle_WithHTTPClientProtocol() {
Expand Down
59 changes: 32 additions & 27 deletions internal/storage/storageutil/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package storageutil

import (
"net/http"
"net/url"
"testing"

"github.com/jacobsa/oglematchers"
Expand Down Expand Up @@ -47,54 +46,60 @@ func (t *clientTest) validateProxyInTransport(httpClient *http.Client) {

// Tests

func (t *clientTest) TestCreateTokenSrcWithCustomEndpoint() {
url, err := url.Parse(CustomEndpoint)
AssertEq(nil, err)
sc := GetDefaultStorageClientConfig()
sc.CustomEndpoint = url
func (t *clientTest) TestCreateHttpClientWithHttp1WhenDisableAuthTrue() {
sc := GetDefaultStorageClientConfig() // By default http1 enabled
sc.DisableAuth = true

tokenSrc, err := CreateTokenSource(&sc)
// Act: this method add tokenSource and clientOptions.
httpClient, err := CreateHttpClient(&sc)

ExpectEq(nil, err)
ExpectNe(nil, &tokenSrc)
ExpectNe(nil, httpClient)
ExpectEq(sc.HttpClientTimeout, httpClient.Timeout)
}

func (t *clientTest) TestCreateTokenSrcWhenCustomEndpointIsNil() {
func (t *clientTest) TestCreateHttpClientWithHttp2WhenDisableAuthTrue() {
sc := GetDefaultStorageClientConfig()
sc.CustomEndpoint = nil
sc.DisableAuth = true

// It will try to create the actual auth token and fail since key-file doesn't exist.
tokenSrc, err := CreateTokenSource(&sc)
// Act: this method add tokenSource and clientOptions.
httpClient, err := CreateHttpClient(&sc)

ExpectNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
ExpectEq(nil, tokenSrc)
ExpectEq(nil, err)
ExpectNe(nil, httpClient)
ExpectEq(sc.HttpClientTimeout, httpClient.Timeout)
}

func (t *clientTest) TestCreateHttpClientWithHttp1() {
func (t *clientTest) TestCreateHttpClientWithHttp1WhenDisableAuthFalse() {
sc := GetDefaultStorageClientConfig() // By default http1 enabled

// Act: this method add tokenSource and clientOptions.
httpClient, err := CreateHttpClient(&sc)

ExpectEq(nil, err)
ExpectNe(nil, httpClient)
ExpectNe(nil, httpClient.Transport)
t.validateProxyInTransport(httpClient)
ExpectEq(sc.HttpClientTimeout, httpClient.Timeout)
AssertNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
AssertEq(nil, httpClient)
}

func (t *clientTest) TestCreateHttpClientWithHttp2() {
func (t *clientTest) TestCreateHttpClientWithHttp2WhenDisableAuthFalse() {
sc := GetDefaultStorageClientConfig()

// Act: this method add tokenSource and clientOptions.
httpClient, err := CreateHttpClient(&sc)

ExpectEq(nil, err)
ExpectNe(nil, httpClient)
ExpectNe(nil, httpClient.Transport)
t.validateProxyInTransport(httpClient)
ExpectEq(sc.HttpClientTimeout, httpClient.Timeout)
AssertNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
AssertEq(nil, httpClient)
}

func (t *clientTest) TestCreateTokenSrc() {
sc := GetDefaultStorageClientConfig()

tokenSrc, err := CreateTokenSource(&sc)

AssertNe(nil, err)
ExpectThat(err, oglematchers.Error(oglematchers.HasSubstr("no such file or directory")))
ExpectNe(nil, &tokenSrc)
}

func (t *clientTest) TestStripScheme() {
Expand Down

0 comments on commit e74054d

Please sign in to comment.