Path: blob/main/pkg/integrations/v2/subsystem_test.go
5317 views
package integrations12import (3"testing"45v1 "github.com/grafana/agent/pkg/integrations"6"github.com/grafana/agent/pkg/integrations/v2/common"7"github.com/stretchr/testify/require"8"gopkg.in/yaml.v2"9)1011func TestSubsystemOptions_Unmarshal(t *testing.T) {12setRegistered(t, map[Config]Type{13&testIntegrationA{}: TypeSingleton,14})1516RegisterLegacy(&legacyConfig{}, TypeSingleton, func(in v1.Config, mc common.MetricsConfig) UpgradedConfig {17return &legacyShim{Data: in, Common: mc}18})1920tt := []struct {21name string22in string23expectError string24}{25{26name: "invalid integration",27in: `28invalidintegration:29autoscrape:30enabled: true31`,32expectError: "line 2: field invalidintegration not found in type integrations.SubsystemOptions",33},34{35name: "invalid field",36in: `37test:38invalidfield: true39`,40expectError: "line 1: field invalidfield not found in type integrations.plain",41},42{43name: "invalid v1 field",44in: `45legacy:46invalidfield: true47`,48expectError: "line 1: field invalidfield not found",49},50}5152for _, tc := range tt {53t.Run(tc.name, func(t *testing.T) {54var so SubsystemOptions55err := yaml.UnmarshalStrict([]byte(tc.in), &so)5657var te *yaml.TypeError58require.ErrorAs(t, err, &te)59require.Len(t, te.Errors, 1)60require.Equal(t, tc.expectError, te.Errors[0])61})62}63}646566