mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-29 01:32:33 +00:00
Add ENVs using NewTestDockerCluster (#27457)
* Add ENVs using NewTestDockerCluster Currently NewTestDockerCluster had no means for setting any environment variables. This makes it tricky to create test for functionality that require thems, like having to set AWS environment variables. DockerClusterOptions now exposes an option to pass extra enviroment variables to the containers, which are appended to the existing ones. * adding changelog * added test case for setting env variables to containers * fix changelog typo; env name * Update changelog/27457.txt Co-authored-by: akshya96 <87045294+akshya96@users.noreply.github.com> * adding the missing copyright --------- Co-authored-by: akshya96 <87045294+akshya96@users.noreply.github.com>
This commit is contained in:
3
changelog/27457.txt
Normal file
3
changelog/27457.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
```release-note:improvement
|
||||
sdk/helper: Allow setting environment variables when using NewTestDockerCluster
|
||||
```
|
||||
@@ -805,20 +805,23 @@ func (n *DockerClusterNode) Start(ctx context.Context, opts *DockerClusterOption
|
||||
}
|
||||
}
|
||||
|
||||
envs := []string{
|
||||
// For now we're using disable_mlock, because this is for testing
|
||||
// anyway, and because it prevents us using external plugins.
|
||||
"SKIP_SETCAP=true",
|
||||
"VAULT_LOG_FORMAT=json",
|
||||
"VAULT_LICENSE=" + opts.VaultLicense,
|
||||
}
|
||||
envs = append(envs, opts.Envs...)
|
||||
|
||||
r, err := dockhelper.NewServiceRunner(dockhelper.RunOptions{
|
||||
ImageRepo: n.ImageRepo,
|
||||
ImageTag: n.ImageTag,
|
||||
// We don't need to run update-ca-certificates in the container, because
|
||||
// we're providing the CA in the raft join call, and otherwise Vault
|
||||
// servers don't talk to one another on the API port.
|
||||
Cmd: append([]string{"server"}, opts.Args...),
|
||||
Env: []string{
|
||||
// For now we're using disable_mlock, because this is for testing
|
||||
// anyway, and because it prevents us using external plugins.
|
||||
"SKIP_SETCAP=true",
|
||||
"VAULT_LOG_FORMAT=json",
|
||||
"VAULT_LICENSE=" + opts.VaultLicense,
|
||||
},
|
||||
Cmd: append([]string{"server"}, opts.Args...),
|
||||
Env: envs,
|
||||
Ports: ports,
|
||||
ContainerName: n.Name(),
|
||||
NetworkName: opts.NetworkName,
|
||||
@@ -1089,6 +1092,7 @@ type DockerClusterOptions struct {
|
||||
CA *testcluster.CA
|
||||
VaultBinary string
|
||||
Args []string
|
||||
Envs []string
|
||||
StartProbe func(*api.Client) error
|
||||
Storage testcluster.ClusterStorage
|
||||
DisableTLS bool
|
||||
|
||||
38
sdk/helper/testcluster/docker/environment_test.go
Normal file
38
sdk/helper/testcluster/docker/environment_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// Copyright (c) HashiCorp, Inc.
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
package docker
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSettingEnvsToContainer(t *testing.T) {
|
||||
expectedEnv := "TEST_ENV=value1"
|
||||
expectedEnv2 := "TEST_ENV2=value2"
|
||||
opts := &DockerClusterOptions{
|
||||
ImageRepo: "hashicorp/vault",
|
||||
ImageTag: "latest",
|
||||
Envs: []string{expectedEnv, expectedEnv2},
|
||||
}
|
||||
cluster := NewTestDockerCluster(t, opts)
|
||||
defer cluster.Cleanup()
|
||||
|
||||
envs := cluster.GetActiveClusterNode().Container.Config.Env
|
||||
|
||||
if !findEnv(envs, expectedEnv) {
|
||||
t.Errorf("Missing ENV variable: %s", expectedEnv)
|
||||
}
|
||||
if !findEnv(envs, expectedEnv2) {
|
||||
t.Errorf("Missing ENV variable: %s", expectedEnv2)
|
||||
}
|
||||
}
|
||||
|
||||
func findEnv(envs []string, env string) bool {
|
||||
for _, e := range envs {
|
||||
if e == env {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user