1
0
Fork 0
telegraf/plugins/secretstores/docker/docker_test.go
Daniel Baumann 4978089aab
Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-24 07:26:29 +02:00

144 lines
3.5 KiB
Go

package docker
import (
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
)
func TestSampleConfig(t *testing.T) {
plugin := &Docker{}
require.NotEmpty(t, plugin.SampleConfig())
}
func TestInitFail(t *testing.T) {
plugin := &Docker{}
require.ErrorContains(t, plugin.Init(), "id missing")
}
func TestPathNonExistent(t *testing.T) {
plugin := &Docker{
ID: "non_existent_path_test",
Path: "non/existent/path",
}
require.ErrorContainsf(t, plugin.Init(), "accessing directory", "accessing directory %q failed: %v", plugin.Path, plugin.Init())
}
func TestSetNotAvailable(t *testing.T) {
testdir, err := filepath.Abs("testdata")
require.NoError(t, err, "testdata cannot be found")
plugin := &Docker{
ID: "set_path_test",
Path: testdir,
}
require.NoError(t, plugin.Init())
// Try to Store the secrets, which this plugin should not let
secret := map[string]string{
"secret-file-1": "TryToSetThis",
}
for k, v := range secret {
require.ErrorContains(t, plugin.Set(k, v), "secret-store does not support creating secrets")
}
}
func TestListGet(t *testing.T) {
// secret files name and their content to compare under the `testdata` directory
secrets := map[string]string{
"secret-file-1": "IWontTell",
"secret_file_2": "SuperDuperSecret!23",
"secretFile": "foobar",
}
testdir, err := filepath.Abs("testdata")
require.NoError(t, err, "testdata cannot be found")
// Initialize the plugin
plugin := &Docker{
ID: "test_list_get",
Path: testdir,
}
require.NoError(t, plugin.Init())
// List the Secrets
keys, err := plugin.List()
require.NoError(t, err)
require.Len(t, keys, len(secrets))
// check if the returned array from List() is the same
// as the name of secret files
for secretFileName := range secrets {
require.Contains(t, keys, secretFileName)
}
// Get the secrets
for _, k := range keys {
value, err := plugin.Get(k)
require.NoError(t, err)
v, found := secrets[k]
require.Truef(t, found, "unexpected secret requested that was not found: %q", k)
require.Equal(t, v, string(value))
}
}
func TestResolver(t *testing.T) {
// Secret Value Name to Resolve
secretFileName := "secret-file-1"
// Secret Value to Resolve To
secretVal := "IWontTell"
testdir, err := filepath.Abs("testdata")
require.NoError(t, err, "testdata cannot be found")
// Initialize the plugin
plugin := &Docker{
ID: "test_resolver",
Path: testdir,
}
require.NoError(t, plugin.Init())
// Get the resolver
resolver, err := plugin.GetResolver(secretFileName)
require.NoError(t, err)
require.NotNil(t, resolver)
s, dynamic, err := resolver()
require.NoError(t, err)
require.False(t, dynamic)
require.Equal(t, secretVal, string(s))
}
func TestResolverInvalid(t *testing.T) {
testdir, err := filepath.Abs("testdata")
require.NoError(t, err, "testdata cannot be found")
// Initialize the plugin
plugin := &Docker{
ID: "test_invalid_resolver",
Path: testdir,
}
require.NoError(t, plugin.Init())
// Get the resolver
resolver, err := plugin.GetResolver("foo")
require.NoError(t, err)
require.NotNil(t, resolver)
_, _, err = resolver()
require.ErrorContains(t, err, "cannot read the secret's value under the directory:")
}
func TestGetNonExistent(t *testing.T) {
testdir, err := filepath.Abs("testdata")
require.NoError(t, err, "testdata cannot be found")
// Initialize the plugin
plugin := &Docker{
ID: "test_nonexistent_get",
Path: testdir,
}
require.NoError(t, plugin.Init())
// Get the resolver
_, err = plugin.Get("foo")
require.ErrorContains(t, err, "cannot read the secret's value under the directory")
}