Skip to content

Commit

Permalink
Add tests for Config structure
Browse files Browse the repository at this point in the history
  • Loading branch information
Acconut committed Mar 11, 2016
1 parent be8fd83 commit 2e44bad
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 3 deletions.
8 changes: 7 additions & 1 deletion config.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tusd

import (
"errors"
"log"
"net/url"
"os"
Expand Down Expand Up @@ -56,8 +57,13 @@ func (config *Config) validate() error {

if config.StoreComposer == nil {
config.StoreComposer = newStoreComposerFromDataStore(config.DataStore)
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
Expand Down
58 changes: 58 additions & 0 deletions config_test.go
Original file line number Diff line number Diff line change
@@ -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())
}
6 changes: 5 additions & 1 deletion cors_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ import (
)

func TestCORS(t *testing.T) {
handler, _ := NewHandler(Config{})
store := NewStoreComposer()
store.UseCore(zeroStore{})
handler, _ := NewHandler(Config{
StoreComposer: store,
})

(&httpTest{
Name: "Preflight request",
Expand Down
5 changes: 4 additions & 1 deletion options_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import (
)

func TestOptions(t *testing.T) {
store := NewStoreComposer()
store.UseCore(zeroStore{})
handler, _ := NewHandler(Config{
MaxSize: 400,
StoreComposer: store,
MaxSize: 400,
})

(&httpTest{
Expand Down

0 comments on commit 2e44bad

Please sign in to comment.