Skip to content

Commit

Permalink
add tests for SetUserData in postgres/generic_meta_interactor
Browse files Browse the repository at this point in the history
  • Loading branch information
mashkin.m committed Apr 25, 2024
1 parent 5d661e5 commit 235aa42
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 4 deletions.
1 change: 0 additions & 1 deletion internal/databases/postgres/generic_meta_interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ func NewGenericMetaSetter() GenericMetaSetter {
return GenericMetaSetter{}
}

// TODO: Unit tests
func (ms GenericMetaSetter) SetUserData(backupName string, backupFolder storage.Folder, userData interface{}) error {
modifier := func(dto ExtendedMetadataDto) ExtendedMetadataDto {
dto.UserData = userData
Expand Down
75 changes: 72 additions & 3 deletions internal/databases/postgres/generic_meta_interactor_test.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package postgres_test

import (
"github.com/golang/mock/gomock"
"github.com/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/wal-g/wal-g/internal"
"github.com/wal-g/wal-g/internal/databases/postgres"
"github.com/wal-g/wal-g/internal/multistorage"
"github.com/wal-g/wal-g/internal/multistorage/stats"
"github.com/wal-g/wal-g/pkg/storages/memory"
"github.com/wal-g/wal-g/pkg/storages/storage"
"github.com/wal-g/wal-g/testtools"
"testing"
Expand All @@ -18,13 +23,12 @@ func TestFetch(t *testing.T) {
compressedSize := int64(100)
uncompressedSize := int64(10)
date := time.Date(2002, 3, 21, 0, 0, 0, 0, time.UTC)
isPermanent := false

testObject := postgres.ExtendedMetadataDto{
StartTime: date,
FinishTime: date,
Hostname: hostName,
IsPermanent: isPermanent,
IsPermanent: false,
UncompressedSize: uncompressedSize,
CompressedSize: compressedSize,
UserData: data,
Expand All @@ -37,7 +41,7 @@ func TestFetch(t *testing.T) {
Hostname: hostName,
StartTime: date,
FinishTime: date,
IsPermanent: isPermanent,
IsPermanent: false,
IncrementDetails: postgres.NewIncrementDetailsFetcher(postgres.Backup{
Backup: internal.Backup{Name: backupName, Folder: folder},
}),
Expand Down Expand Up @@ -73,3 +77,68 @@ func TestFetchReturnErrorWhenNotFoundMetadata(t *testing.T) {
assert.Error(t, err)
assert.IsType(t, storage.ObjectNotFoundError{}, err)
}

func TestSetUserData(t *testing.T) {
folder := testtools.CreateMockStorageFolder()
backupName := "test"
data := "Data"
hostName := "TestHost"
compressedSize := int64(100)
uncompressedSize := int64(10)
date := time.Date(2002, 3, 21, 0, 0, 0, 0, time.UTC)

testObject := postgres.ExtendedMetadataDto{
StartTime: date,
FinishTime: date,
Hostname: hostName,
IsPermanent: false,
UncompressedSize: uncompressedSize,
CompressedSize: compressedSize,
UserData: data,
}

newUserData := "NewUserData"

marshaller, _ := internal.NewDtoSerializer()
file, _ := marshaller.Marshal(testObject)
_ = folder.PutObject(internal.MetadataNameFromBackup(backupName), file)

setDataErr := postgres.NewGenericMetaSetter().SetUserData(backupName, folder, newUserData)
fetchResult, fetchErr := postgres.NewGenericMetaFetcher().Fetch(backupName, folder)

assert.NoError(t, setDataErr)
assert.NoError(t, fetchErr)
assert.Equal(t, fetchResult.UserData, newUserData)
}

func TestSetUserDataReturnErrorWhenNotFoundMetadata(t *testing.T) {
backupName := "test"
folder := testtools.CreateMockStorageFolder()
testObject := postgres.ExtendedMetadataDto{}

err := postgres.NewGenericMetaSetter().SetUserData(backupName, folder, testObject)

assert.Error(t, err)
assert.IsType(t, storage.ObjectNotFoundError{}, errors.Cause(err))
}

func TestSetUserDataReturnErrorWhenFolderIsMultiStorage(t *testing.T) {
backupName := "test"

mockCtrl := gomock.NewController(t)
t.Cleanup(mockCtrl.Finish)
statsCollectorMock := stats.NewMockCollector(mockCtrl)
statsCollectorMock.EXPECT().ReportOperationResult(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()

memFolders := map[string]storage.Folder{
"s1": memory.NewFolder("s1/", memory.NewKVS()),
"s2": memory.NewFolder("s2/", memory.NewKVS()),
}
folder := multistorage.NewFolder(memFolders, statsCollectorMock)
testObject := postgres.ExtendedMetadataDto{}

err := postgres.NewGenericMetaSetter().SetUserData(backupName, folder, testObject)

assert.Error(t, err)
assert.IsType(t, "failed to modify metadata", err.Error())
}

0 comments on commit 235aa42

Please sign in to comment.