// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 package signalfxreceiver import ( "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config/confighttp" "go.opentelemetry.io/collector/config/configtls" "go.opentelemetry.io/collector/confmap/confmaptest" "github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/signalfxreceiver/internal/metadata" ) func TestLoadConfig(t *testing.T) { t.Parallel() cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) require.NoError(t, err) tests := []struct { id component.ID expected component.Config }{ { id: component.NewIDWithName(metadata.Type, ""), expected: createDefaultConfig(), }, { id: component.NewIDWithName(metadata.Type, "allsettings"), expected: &Config{ HTTPServerSettings: confighttp.HTTPServerSettings{ Endpoint: "localhost:9943", }, AccessTokenPassthroughConfig: splunk.AccessTokenPassthroughConfig{ AccessTokenPassthrough: true, }, }, }, { id: component.NewIDWithName(metadata.Type, "tls"), expected: &Config{ HTTPServerSettings: confighttp.HTTPServerSettings{ Endpoint: ":9943", TLSSetting: &configtls.TLSServerSetting{ TLSSetting: configtls.TLSSetting{ CertFile: "/test.crt", KeyFile: "/test.key", }, }, }, AccessTokenPassthroughConfig: splunk.AccessTokenPassthroughConfig{ AccessTokenPassthrough: false, }, }, }, } for _, tt := range tests { t.Run(tt.id.String(), func(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig() sub, err := cm.Sub(tt.id.String()) require.NoError(t, err) require.NoError(t, component.UnmarshalConfig(sub, cfg)) assert.NoError(t, component.ValidateConfig(cfg)) assert.Equal(t, tt.expected, cfg) }) } } func TestCreateInvalidHTTPEndpoint(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig().(*Config) cfg.Endpoint = "" err := cfg.Validate() assert.EqualError(t, err, "empty endpoint") } func TestCreateNoPortEndpoint(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig().(*Config) cfg.Endpoint = "localhost:" err := cfg.Validate() assert.EqualError(t, err, `endpoint port is not a number: strconv.ParseInt: parsing "": invalid syntax`) } func TestCreateLargePortEndpoint(t *testing.T) { factory := NewFactory() cfg := factory.CreateDefaultConfig().(*Config) cfg.Endpoint = "localhost:65536" err := cfg.Validate() assert.EqualError(t, err, "port number must be between 1 and 65535") }