2018-08-03 14:15:52 +01:00
|
|
|
// Copyright (C) 2018 Storj Labs, Inc.
|
|
|
|
// See LICENSE for copying information.
|
2018-08-01 13:57:37 +01:00
|
|
|
package overlay
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"net/url"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"storj.io/storj/pkg/kademlia"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestRun(t *testing.T) {
|
|
|
|
config := Config{}
|
|
|
|
bctx := context.Background()
|
|
|
|
kad := &kademlia.Kademlia{}
|
|
|
|
var key kademlia.CtxKey
|
|
|
|
|
|
|
|
cases := []struct {
|
|
|
|
testName string
|
|
|
|
testFunc func()
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
testName: "Run with nil",
|
|
|
|
testFunc: func() {
|
|
|
|
err := config.Run(bctx, nil)
|
|
|
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Equal(t, err.Error(), "overlay error: programmer error: kademlia responsibility unstarted")
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
testName: "Run with nil, pass pointer to Kademlia in context",
|
|
|
|
testFunc: func() {
|
|
|
|
ctx := context.WithValue(bctx, key, kad)
|
|
|
|
err := config.Run(ctx, nil)
|
|
|
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Equal(t, err.Error(), "overlay error: database scheme not supported: ")
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
testName: "db scheme redis conn fail",
|
|
|
|
testFunc: func() {
|
|
|
|
ctx := context.WithValue(bctx, key, kad)
|
|
|
|
var config = Config{DatabaseURL: "redis://somedir/overlay.db/?db=1"}
|
|
|
|
err := config.Run(ctx, nil)
|
|
|
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Equal(t, err.Error(), "redis error: ping failed%!(EXTRA *net.OpError=dial tcp: address somedir: missing port in address)")
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
testName: "db scheme bolt conn fail",
|
|
|
|
testFunc: func() {
|
|
|
|
ctx := context.WithValue(bctx, key, kad)
|
|
|
|
var config = Config{DatabaseURL: "bolt://somedir/overlay.db"}
|
|
|
|
err := config.Run(ctx, nil)
|
|
|
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.Equal(t, err.Error(), "open /overlay.db: permission denied")
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, c := range cases {
|
|
|
|
t.Run(c.testName, func(t *testing.T) {
|
|
|
|
c.testFunc()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestUrlPwd(t *testing.T) {
|
|
|
|
res := urlPwd(nil)
|
|
|
|
|
|
|
|
assert.Equal(t, res, "")
|
|
|
|
|
|
|
|
uinfo := url.UserPassword("testUser", "testPassword")
|
|
|
|
|
|
|
|
uri := url.URL{User: uinfo}
|
|
|
|
|
|
|
|
res = urlPwd(&uri)
|
|
|
|
|
|
|
|
assert.Equal(t, res, "testPassword")
|
|
|
|
}
|