diff --git a/internal/storage/bucket_handle_test.go b/internal/storage/bucket_handle_test.go index 671bfb7cfb..68ae584c2e 100644 --- a/internal/storage/bucket_handle_test.go +++ b/internal/storage/bucket_handle_test.go @@ -49,6 +49,16 @@ var ContentDisposition string = "ContentDisposition" // Hence, we are not writing tests for these flows. // https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/vendor/github.com/fsouza/fake-gcs-server/fakestorage/object.go#L515 +func objectsToObjectNames(objects []*gcs.Object) (objectNames []string) { + objectNames = make([]string, len(objects)) + for i, object := range objects { + if object != nil { + objectNames[i] = object.Name + } + } + return +} + type BucketHandleTest struct { suite.Suite bucketHandle *bucketHandle @@ -447,13 +457,9 @@ func (testSuite *BucketHandleTest) TestListObjectMethodWithPrefixObjectExist() { }) assert.Nil(testSuite.T(), err) - assert.Equal(testSuite.T(), 4, len(obj.Objects)) - assert.Equal(testSuite.T(), 1, len(obj.CollapsedRuns)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, obj.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, obj.Objects[1].Name) - assert.Equal(testSuite.T(), TestObjectName, obj.Objects[2].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectSubRootFolderName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(obj.Objects)) assert.Equal(testSuite.T(), TestObjectGeneration, obj.Objects[0].Generation) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, obj.CollapsedRuns[0]) + assert.Equal(testSuite.T(), []string{TestObjectSubRootFolderName}, obj.CollapsedRuns) } func (testSuite *BucketHandleTest) TestListObjectMethodWithPrefixObjectDoesNotExist() { @@ -484,12 +490,8 @@ func (testSuite *BucketHandleTest) TestListObjectMethodWithIncludeTrailingDelimi }) assert.Nil(testSuite.T(), err) - assert.Equal(testSuite.T(), 3, len(obj.Objects)) - assert.Equal(testSuite.T(), 1, len(obj.CollapsedRuns)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, obj.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectName, obj.Objects[1].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, obj.Objects[2].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, obj.CollapsedRuns[0]) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(obj.Objects)) + assert.Equal(testSuite.T(), []string{TestObjectSubRootFolderName}, obj.CollapsedRuns) } // If Delimiter is empty, all the objects will appear with same prefix. @@ -505,12 +507,7 @@ func (testSuite *BucketHandleTest) TestListObjectMethodWithEmptyDelimiter() { }) assert.Nil(testSuite.T(), err) - assert.Equal(testSuite.T(), 5, len(obj.Objects)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, obj.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, obj.Objects[1].Name) - assert.Equal(testSuite.T(), TestSubObjectName, obj.Objects[2].Name) - assert.Equal(testSuite.T(), TestObjectName, obj.Objects[3].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, obj.Objects[4].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectSubRootFolderName, TestSubObjectName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(obj.Objects)) assert.Equal(testSuite.T(), TestObjectGeneration, obj.Objects[0].Generation) assert.Nil(testSuite.T(), obj.CollapsedRuns) } @@ -539,12 +536,7 @@ func (testSuite *BucketHandleTest) TestListObjectMethodForMaxResult() { // Validate that 5 objects are listed when MaxResults is passed 5. assert.Nil(testSuite.T(), err) - assert.Equal(testSuite.T(), 5, len(fiveObj.Objects)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, fiveObj.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, fiveObj.Objects[1].Name) - assert.Equal(testSuite.T(), TestSubObjectName, fiveObj.Objects[2].Name) - assert.Equal(testSuite.T(), TestObjectName, fiveObj.Objects[3].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, fiveObj.Objects[4].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectSubRootFolderName, TestSubObjectName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(fiveObj.Objects)) assert.Nil(testSuite.T(), fiveObj.CollapsedRuns) // Note: The behavior is different in real GCS storage JSON API. In real API, @@ -554,10 +546,7 @@ func (testSuite *BucketHandleTest) TestListObjectMethodForMaxResult() { // This is because fake storage doesn'testSuite support pagination and hence maxResults // has no affect. assert.Nil(testSuite.T(), err2) - assert.Equal(testSuite.T(), 3, len(threeObj.Objects)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, threeObj.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectName, threeObj.Objects[1].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, threeObj.Objects[2].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(threeObj.Objects)) assert.Equal(testSuite.T(), 1, len(threeObj.CollapsedRuns)) } @@ -586,12 +575,7 @@ func (testSuite *BucketHandleTest) TestListObjectMethodWithMissingMaxResult() { // Validate that all objects (5) are listed when MaxResults is not passed. assert.Nil(testSuite.T(), err2) - assert.Equal(testSuite.T(), 5, len(fiveObjWithoutMaxResults.Objects)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, fiveObjWithoutMaxResults.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, fiveObjWithoutMaxResults.Objects[1].Name) - assert.Equal(testSuite.T(), TestSubObjectName, fiveObjWithoutMaxResults.Objects[2].Name) - assert.Equal(testSuite.T(), TestObjectName, fiveObjWithoutMaxResults.Objects[3].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, fiveObjWithoutMaxResults.Objects[4].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectSubRootFolderName, TestSubObjectName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(fiveObjWithoutMaxResults.Objects)) assert.Nil(testSuite.T(), fiveObjWithoutMaxResults.CollapsedRuns) } @@ -622,12 +606,7 @@ func (testSuite *BucketHandleTest) TestListObjectMethodWithZeroMaxResult() { // Validate that all objects (5) are listed when MaxResults is 0. This has // same behavior as not passing MaxResults in request. assert.Nil(testSuite.T(), err2) - assert.Equal(testSuite.T(), 5, len(fiveObjWithZeroMaxResults.Objects)) - assert.Equal(testSuite.T(), TestObjectRootFolderName, fiveObjWithZeroMaxResults.Objects[0].Name) - assert.Equal(testSuite.T(), TestObjectSubRootFolderName, fiveObjWithZeroMaxResults.Objects[1].Name) - assert.Equal(testSuite.T(), TestSubObjectName, fiveObjWithZeroMaxResults.Objects[2].Name) - assert.Equal(testSuite.T(), TestObjectName, fiveObjWithZeroMaxResults.Objects[3].Name) - assert.Equal(testSuite.T(), TestGzipObjectName, fiveObjWithZeroMaxResults.Objects[4].Name) + assert.Equal(testSuite.T(), []string{TestObjectRootFolderName, TestObjectSubRootFolderName, TestSubObjectName, TestObjectName, TestGzipObjectName}, objectsToObjectNames(fiveObjWithZeroMaxResults.Objects)) assert.Nil(testSuite.T(), fiveObjWithZeroMaxResults.CollapsedRuns) }