traefik/pkg/config/dynamic/config_test.go
2019-07-10 09:26:04 +02:00

37 lines
1.1 KiB
Go

package dynamic
import (
"reflect"
"testing"
"github.com/BurntSushi/toml"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDeepCopy(t *testing.T) {
cfg := &Configuration{}
_, err := toml.DecodeFile("./fixtures/sample.toml", &cfg)
require.NoError(t, err)
cfgCopy := cfg
assert.Equal(t, reflect.ValueOf(cfgCopy), reflect.ValueOf(cfg))
assert.Equal(t, reflect.ValueOf(cfgCopy), reflect.ValueOf(cfg))
assert.Equal(t, cfgCopy, cfg)
cfgDeepCopy := cfg.DeepCopy()
assert.NotEqual(t, reflect.ValueOf(cfgDeepCopy), reflect.ValueOf(cfg))
assert.Equal(t, reflect.TypeOf(cfgDeepCopy), reflect.TypeOf(cfg))
assert.Equal(t, cfgDeepCopy, cfg)
// Update cfg
cfg.HTTP.Routers["powpow"] = &Router{}
assert.Equal(t, reflect.ValueOf(cfgCopy), reflect.ValueOf(cfg))
assert.Equal(t, reflect.ValueOf(cfgCopy), reflect.ValueOf(cfg))
assert.Equal(t, cfgCopy, cfg)
assert.NotEqual(t, reflect.ValueOf(cfgDeepCopy), reflect.ValueOf(cfg))
assert.Equal(t, reflect.TypeOf(cfgDeepCopy), reflect.TypeOf(cfg))
assert.NotEqual(t, cfgDeepCopy, cfg)
}