1// Copyright (C) 2019 Storj Labs, Inc.
2// See LICENSE for copying information.
3
4package trust_test
5
6import (
7	"fmt"
8	"strings"
9	"testing"
10
11	"github.com/stretchr/testify/assert"
12	"github.com/stretchr/testify/require"
13
14	"storj.io/common/testrand"
15	"storj.io/storj/storagenode/trust"
16)
17
18func TestSourcesConfig(t *testing.T) {
19	var sources trust.Sources
20	assert.Equal(t, "trust-sources", sources.Type())
21	assert.Equal(t, "", sources.String())
22
23	// Assert that comma separated sources can be set
24	require.NoError(t, sources.Set("some-file,12ugxzSYW7UA1n7jfVyJHV2zL5TL1x5fSYZb48y7jZ1r3bLhbfo@127.0.0.1:12345"))
25	assert.Equal(t, "some-file,12ugxzSYW7UA1n7jfVyJHV2zL5TL1x5fSYZb48y7jZ1r3bLhbfo@127.0.0.1:12345", sources.String())
26
27	// Assert that a failure to set does not modify the current sources
28	require.Error(t, sources.Set("@"))
29	assert.Equal(t, "some-file,12ugxzSYW7UA1n7jfVyJHV2zL5TL1x5fSYZb48y7jZ1r3bLhbfo@127.0.0.1:12345", sources.String())
30
31	// Assert the source was sources correctly
32	if assert.Len(t, sources, 2) {
33		assert.Equal(t, "some-file", sources[0].String())
34		assert.Equal(t, "12ugxzSYW7UA1n7jfVyJHV2zL5TL1x5fSYZb48y7jZ1r3bLhbfo@127.0.0.1:12345", sources[1].String())
35	}
36}
37
38func TestExclusionsConfig(t *testing.T) {
39	exclusion0 := fmt.Sprintf("%s@", testrand.NodeID())
40	exclusion1 := "foo.test"
41	exclusion2 := fmt.Sprintf("%s@bar.test:7777", testrand.NodeID())
42
43	exclusionConfig := strings.Join([]string{exclusion0, exclusion1, exclusion2}, ",")
44
45	var exclusions trust.Exclusions
46	assert.Equal(t, "trust-exclusions", exclusions.Type())
47	assert.Equal(t, "", exclusions.String())
48
49	// Assert that comma separated exclusions can be set
50	require.NoError(t, exclusions.Set(exclusionConfig))
51	assert.Equal(t, exclusionConfig, exclusions.String())
52
53	// Assert that a failure to set does not modify the current exclusions
54	require.Error(t, exclusions.Set("foo.test:7777"))
55	assert.Equal(t, exclusionConfig, exclusions.String())
56
57	// Assert the source was sources correctly
58	if assert.Len(t, exclusions.Rules, 3) {
59		assert.Equal(t, exclusion0, exclusions.Rules[0].String())
60		assert.Equal(t, exclusion1, exclusions.Rules[1].String())
61		assert.Equal(t, exclusion2, exclusions.Rules[2].String())
62	}
63}
64