Path: blob/main/component/discovery/digitalocean/digitalocean_test.go
4095 views
package digitalocean12import (3"net/url"4"testing"5"time"67"github.com/grafana/agent/component/common/config"8"github.com/grafana/agent/pkg/river"9prom_common_config "github.com/prometheus/common/config"10"github.com/prometheus/common/model"11"github.com/stretchr/testify/require"12"gotest.tools/assert"13)1415func TestRiverUnmarshal(t *testing.T) {16var exampleRiverConfig = `17refresh_interval = "5m"18port = 818119bearer_token = "token"20`2122var args Arguments23err := river.Unmarshal([]byte(exampleRiverConfig), &args)24require.NoError(t, err)2526assert.Equal(t, 5*time.Minute, args.RefreshInterval)27assert.Equal(t, 8181, args.Port)28assert.Equal(t, "token", string(args.BearerToken))2930var fullerExampleRiverConfig = `31refresh_interval = "3m"32port = 911933proxy_url = "http://proxy:8080"34follow_redirects = true35enable_http2 = false36bearer_token = "token"37`38err = river.Unmarshal([]byte(fullerExampleRiverConfig), &args)39require.NoError(t, err)40assert.Equal(t, 3*time.Minute, args.RefreshInterval)41assert.Equal(t, 9119, args.Port)42assert.Equal(t, "http://proxy:8080", args.ProxyURL.String())43assert.Equal(t, true, args.FollowRedirects)44assert.Equal(t, false, args.EnableHTTP2)45}4647func TestBadRiverConfig(t *testing.T) {48var badConfigTooManyBearerTokens = `49refresh_interval = "5m"50port = 818151bearer_token = "token"52bearer_token_file = "/path/to/file.token"53`5455var args Arguments56err := river.Unmarshal([]byte(badConfigTooManyBearerTokens), &args)57require.ErrorContains(t, err, "exactly one of bearer_token or bearer_token_file must be specified")5859var badConfigMissingAuth = `60refresh_interval = "5m"61port = 818162`63var args2 Arguments64err = river.Unmarshal([]byte(badConfigMissingAuth), &args2)65require.ErrorContains(t, err, "exactly one of bearer_token or bearer_token_file must be specified")66}6768func TestConvert(t *testing.T) {69proxyUrl, _ := url.Parse("http://example:8080")70args := Arguments{71RefreshInterval: 5 * time.Minute,72Port: 8181,73BearerToken: "token",74ProxyURL: config.URL{75URL: proxyUrl,76},77FollowRedirects: false,78EnableHTTP2: false,79}8081converted := args.Convert()82assert.Equal(t, model.Duration(5*time.Minute), converted.RefreshInterval)83assert.Equal(t, 8181, converted.Port)84assert.Equal(t, prom_common_config.Secret("token"), converted.HTTPClientConfig.BearerToken)85assert.Equal(t, "http://example:8080", converted.HTTPClientConfig.ProxyURL.String())86assert.Equal(t, false, converted.HTTPClientConfig.FollowRedirects)87assert.Equal(t, false, converted.HTTPClientConfig.EnableHTTP2)88}899091