Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/discovery/digitalocean/digitalocean_test.go
4095 views
1
package digitalocean
2
3
import (
4
"net/url"
5
"testing"
6
"time"
7
8
"github.com/grafana/agent/component/common/config"
9
"github.com/grafana/agent/pkg/river"
10
prom_common_config "github.com/prometheus/common/config"
11
"github.com/prometheus/common/model"
12
"github.com/stretchr/testify/require"
13
"gotest.tools/assert"
14
)
15
16
func TestRiverUnmarshal(t *testing.T) {
17
var exampleRiverConfig = `
18
refresh_interval = "5m"
19
port = 8181
20
bearer_token = "token"
21
`
22
23
var args Arguments
24
err := river.Unmarshal([]byte(exampleRiverConfig), &args)
25
require.NoError(t, err)
26
27
assert.Equal(t, 5*time.Minute, args.RefreshInterval)
28
assert.Equal(t, 8181, args.Port)
29
assert.Equal(t, "token", string(args.BearerToken))
30
31
var fullerExampleRiverConfig = `
32
refresh_interval = "3m"
33
port = 9119
34
proxy_url = "http://proxy:8080"
35
follow_redirects = true
36
enable_http2 = false
37
bearer_token = "token"
38
`
39
err = river.Unmarshal([]byte(fullerExampleRiverConfig), &args)
40
require.NoError(t, err)
41
assert.Equal(t, 3*time.Minute, args.RefreshInterval)
42
assert.Equal(t, 9119, args.Port)
43
assert.Equal(t, "http://proxy:8080", args.ProxyURL.String())
44
assert.Equal(t, true, args.FollowRedirects)
45
assert.Equal(t, false, args.EnableHTTP2)
46
}
47
48
func TestBadRiverConfig(t *testing.T) {
49
var badConfigTooManyBearerTokens = `
50
refresh_interval = "5m"
51
port = 8181
52
bearer_token = "token"
53
bearer_token_file = "/path/to/file.token"
54
`
55
56
var args Arguments
57
err := river.Unmarshal([]byte(badConfigTooManyBearerTokens), &args)
58
require.ErrorContains(t, err, "exactly one of bearer_token or bearer_token_file must be specified")
59
60
var badConfigMissingAuth = `
61
refresh_interval = "5m"
62
port = 8181
63
`
64
var args2 Arguments
65
err = river.Unmarshal([]byte(badConfigMissingAuth), &args2)
66
require.ErrorContains(t, err, "exactly one of bearer_token or bearer_token_file must be specified")
67
}
68
69
func TestConvert(t *testing.T) {
70
proxyUrl, _ := url.Parse("http://example:8080")
71
args := Arguments{
72
RefreshInterval: 5 * time.Minute,
73
Port: 8181,
74
BearerToken: "token",
75
ProxyURL: config.URL{
76
URL: proxyUrl,
77
},
78
FollowRedirects: false,
79
EnableHTTP2: false,
80
}
81
82
converted := args.Convert()
83
assert.Equal(t, model.Duration(5*time.Minute), converted.RefreshInterval)
84
assert.Equal(t, 8181, converted.Port)
85
assert.Equal(t, prom_common_config.Secret("token"), converted.HTTPClientConfig.BearerToken)
86
assert.Equal(t, "http://example:8080", converted.HTTPClientConfig.ProxyURL.String())
87
assert.Equal(t, false, converted.HTTPClientConfig.FollowRedirects)
88
assert.Equal(t, false, converted.HTTPClientConfig.EnableHTTP2)
89
}
90
91