//go:build darwin || linux || windows package os import ( "testing" "github.com/stretchr/testify/require" "github.com/influxdata/telegraf/internal/choice" ) // In docker, access to the keyring is disabled by default see // https://docs.docker.com/engine/security/seccomp/. // You will see the following error then. const dockerErr = "opening keyring failed: Specified keyring backend not available" func TestSampleConfig(t *testing.T) { plugin := &OS{} require.NotEmpty(t, plugin.SampleConfig()) } func TestInitFail(t *testing.T) { tests := []struct { name string plugin *OS expected string }{ { name: "invalid id", plugin: &OS{}, expected: "id missing", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := tt.plugin.Init() require.ErrorContains(t, err, tt.expected) }) } } func TestResolverInvalid(t *testing.T) { plugin := &OS{ID: "test"} // In docker, access to the keyring is disabled by default // see https://docs.docker.com/engine/security/seccomp/. err := plugin.Init() if err != nil && err.Error() == dockerErr { t.Skip("Kernel keyring not available!") } require.NoError(t, err) // Make sure the key does not exist and try to read that key testKey := "foobar secret key" keys, err := plugin.List() require.NoError(t, err) for choice.Contains(testKey, keys) { testKey += "x" } // Get the resolver resolver, err := plugin.GetResolver(testKey) require.NoError(t, err) require.NotNil(t, resolver) _, _, err = resolver() require.Error(t, err) } func TestGetNonExisting(t *testing.T) { plugin := &OS{ID: "test"} // In docker, access to the keyring is disabled by default // see https://docs.docker.com/engine/security/seccomp/. err := plugin.Init() if err != nil && err.Error() == dockerErr { t.Skip("Kernel keyring not available!") } require.NoError(t, err) // Make sure the key does not exist and try to read that key testKey := "foobar secret key" keys, err := plugin.List() require.NoError(t, err) for choice.Contains(testKey, keys) { testKey += "x" } _, err = plugin.Get(testKey) require.EqualError(t, err, "The specified item could not be found in the keyring") }