1// Copyright (C) 2019 Storj Labs, Inc.
2// See LICENSE for copying information.
3
4package trust_test
5
6import (
7	"context"
8	"testing"
9
10	"github.com/stretchr/testify/assert"
11	"github.com/stretchr/testify/require"
12
13	"storj.io/storj/storagenode/trust"
14)
15
16func TestStaticURLSource(t *testing.T) {
17	url := makeSatelliteURL("domain.test")
18
19	for _, tt := range []struct {
20		name    string
21		url     string
22		err     string
23		entries []trust.Entry
24	}{
25		{
26			name: "incomplete satellite URL",
27			url:  "domain.test:7777",
28			err:  "static source: invalid satellite URL: must contain an ID",
29		},
30		{
31			name: "good satellite URL",
32			url:  url.String(),
33			entries: []trust.Entry{
34				{
35					SatelliteURL:  url,
36					Authoritative: true,
37				},
38			},
39		},
40	} {
41		tt := tt // quiet linting
42		t.Run(tt.name, func(t *testing.T) {
43			source, err := trust.NewStaticURLSource(tt.url)
44			if tt.err != "" {
45				require.EqualError(t, err, tt.err)
46				return
47			}
48			require.NoError(t, err)
49
50			require.True(t, source.Static(), "static source is not static")
51			require.Equal(t, tt.url, source.String(), "static source string should match url")
52
53			entries, err := source.FetchEntries(context.Background())
54			require.NoError(t, err)
55			assert.Equal(t, tt.entries, entries)
56		})
57	}
58}
59