Add tests for Config structure
This commit is contained in:
parent
be8fd83d0d
commit
2e44bad1b0
|
@ -1,6 +1,7 @@
|
||||||
package tusd
|
package tusd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
@ -56,8 +57,13 @@ func (config *Config) validate() error {
|
||||||
|
|
||||||
if config.StoreComposer == nil {
|
if config.StoreComposer == nil {
|
||||||
config.StoreComposer = newStoreComposerFromDataStore(config.DataStore)
|
config.StoreComposer = newStoreComposerFromDataStore(config.DataStore)
|
||||||
|
config.DataStore = nil
|
||||||
} else if config.DataStore != nil {
|
} else if config.DataStore != nil {
|
||||||
// TODO: consider returning an error
|
return errors.New("tusd: either StoreComposer or DataStore may be set in Config, but not both")
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.StoreComposer.Core == nil {
|
||||||
|
return errors.New("tusd: StoreComposer in Config needs to contain a non-nil core")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
package tusd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
type zeroStore struct{}
|
||||||
|
|
||||||
|
func (store zeroStore) NewUpload(info FileInfo) (string, error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
func (store zeroStore) WriteChunk(id string, offset int64, src io.Reader) (int64, error) {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (store zeroStore) GetInfo(id string) (FileInfo, error) {
|
||||||
|
return FileInfo{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfig(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
config := Config{
|
||||||
|
DataStore: zeroStore{},
|
||||||
|
BasePath: "files",
|
||||||
|
}
|
||||||
|
|
||||||
|
a.Nil(config.validate())
|
||||||
|
a.NotNil(config.Logger)
|
||||||
|
a.NotNil(config.StoreComposer)
|
||||||
|
a.Equal("/files/", config.BasePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfigEmptyCore(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
|
||||||
|
config := Config{
|
||||||
|
StoreComposer: NewStoreComposer(),
|
||||||
|
}
|
||||||
|
|
||||||
|
a.Error(config.validate())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfigStoreAndComposer(t *testing.T) {
|
||||||
|
a := assert.New(t)
|
||||||
|
composer := NewStoreComposer()
|
||||||
|
composer.UseCore(zeroStore{})
|
||||||
|
|
||||||
|
config := Config{
|
||||||
|
StoreComposer: composer,
|
||||||
|
DataStore: zeroStore{},
|
||||||
|
}
|
||||||
|
|
||||||
|
a.Error(config.validate())
|
||||||
|
}
|
|
@ -8,7 +8,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCORS(t *testing.T) {
|
func TestCORS(t *testing.T) {
|
||||||
handler, _ := NewHandler(Config{})
|
store := NewStoreComposer()
|
||||||
|
store.UseCore(zeroStore{})
|
||||||
|
handler, _ := NewHandler(Config{
|
||||||
|
StoreComposer: store,
|
||||||
|
})
|
||||||
|
|
||||||
(&httpTest{
|
(&httpTest{
|
||||||
Name: "Preflight request",
|
Name: "Preflight request",
|
||||||
|
|
|
@ -8,8 +8,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestOptions(t *testing.T) {
|
func TestOptions(t *testing.T) {
|
||||||
|
store := NewStoreComposer()
|
||||||
|
store.UseCore(zeroStore{})
|
||||||
handler, _ := NewHandler(Config{
|
handler, _ := NewHandler(Config{
|
||||||
MaxSize: 400,
|
StoreComposer: store,
|
||||||
|
MaxSize: 400,
|
||||||
})
|
})
|
||||||
|
|
||||||
(&httpTest{
|
(&httpTest{
|
||||||
|
|
Loading…
Reference in New Issue