added unit testing
This commit is contained in:
143
internal/client/client_test.go
Normal file
143
internal/client/client_test.go
Normal file
@@ -0,0 +1,143 @@
|
||||
package client_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
"git.kapelle.org/niklas/s3share/internal/client"
|
||||
"git.kapelle.org/niklas/s3share/internal/db"
|
||||
"git.kapelle.org/niklas/s3share/internal/s3"
|
||||
"git.kapelle.org/niklas/s3share/internal/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func setup(t *testing.T) (*client.Client, context.Context, *assert.Assertions) {
|
||||
|
||||
mockDb := db.NewMock()
|
||||
mockS3 := s3.NewMockS3()
|
||||
|
||||
service := client.NewClient(mockDb, mockS3)
|
||||
ctx := context.Background()
|
||||
assert := assert.New(t)
|
||||
|
||||
return service, ctx, assert
|
||||
}
|
||||
|
||||
func TestCreateShare(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
share, err := service.CreateShare(ctx, "test.txt")
|
||||
assert.NoError(err)
|
||||
assert.NotNil(share)
|
||||
assert.NotEmpty(share.Slug)
|
||||
assert.Equal("test.txt", share.Key)
|
||||
}
|
||||
|
||||
func TestCreateShareInvalidKey(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
_, err := service.CreateShare(ctx, "not_existing.txt")
|
||||
assert.Error(err)
|
||||
}
|
||||
|
||||
func TestGetShare(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
createdShare, err := service.CreateShare(ctx, "test.txt")
|
||||
|
||||
share, err := service.GetShare(ctx, createdShare.Slug)
|
||||
assert.NoError(err)
|
||||
assert.NotNil(share)
|
||||
assert.Equal(createdShare.Slug, share.Slug)
|
||||
assert.Equal("test.txt", share.Key)
|
||||
}
|
||||
|
||||
func TestGetShareNotFound(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
share, err := service.GetShare(ctx, "123456")
|
||||
assert.NoError(err)
|
||||
assert.Nil(share)
|
||||
}
|
||||
|
||||
func TestGetObjFromShare(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
createdShare, _ := service.CreateShare(ctx, "test.txt")
|
||||
|
||||
reader, err := service.GetObjectFromShare(ctx, createdShare)
|
||||
assert.NoError(err)
|
||||
assert.NotNil(reader)
|
||||
|
||||
content, err := ioutil.ReadAll(reader)
|
||||
assert.NoError(err)
|
||||
assert.Equal("test.txt", string(content))
|
||||
}
|
||||
|
||||
func TestGetObjFromShareNotFound(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
_, err := service.GetObjectFromShare(ctx, &types.Share{Slug: "123456"})
|
||||
assert.Error(err)
|
||||
}
|
||||
|
||||
func TestDeleteShare(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
createdShare, _ := service.CreateShare(ctx, "test.txt")
|
||||
|
||||
err := service.DeleteShare(ctx, createdShare.Slug)
|
||||
assert.NoError(err)
|
||||
|
||||
share, err := service.GetShare(ctx, createdShare.Slug)
|
||||
assert.NoError(err)
|
||||
assert.Nil(share)
|
||||
}
|
||||
|
||||
func TestDeleteShareNotFound(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
err := service.DeleteShare(ctx, "123456")
|
||||
assert.Error(err)
|
||||
}
|
||||
|
||||
func TestGetMetadata(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
metadata, err := service.GetObjectMetadata(ctx, "test.txt")
|
||||
assert.NoError(err)
|
||||
assert.NotNil(metadata)
|
||||
assert.Equal("test.txt", metadata.Filename)
|
||||
assert.Equal("text/plain", metadata.ContentType)
|
||||
assert.Equal(int64(8), metadata.Size)
|
||||
}
|
||||
|
||||
func TestGetMetadataNotFound(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
metadata, err := service.GetObjectMetadata(ctx, "not_existing.txt")
|
||||
assert.NoError(err)
|
||||
assert.Nil(metadata)
|
||||
}
|
||||
|
||||
func TestGetAllShares(t *testing.T) {
|
||||
service, ctx, assert := setup(t)
|
||||
|
||||
share, err := service.CreateShare(ctx, "test.txt")
|
||||
assert.NoError(err)
|
||||
|
||||
shares, err := service.GetAllShares(ctx)
|
||||
assert.NoError(err)
|
||||
assert.Len(shares, 1)
|
||||
|
||||
assert.Equal(share.Slug, shares[0].Slug)
|
||||
assert.Equal(share.Key, shares[0].Key)
|
||||
|
||||
_, err = service.CreateShare(ctx, "dir/test")
|
||||
assert.NoError(err)
|
||||
|
||||
shares, err = service.GetAllShares(ctx)
|
||||
assert.NoError(err)
|
||||
assert.Len(shares, 2)
|
||||
}
|
||||
Reference in New Issue
Block a user