cbecc40e48
* add first stepwise test env, Docker, with example transit test * update transit stepwise test * add other tests that use stepwise * cleanup test, make names different than just 'transit' * return the stderr if compile fails with error * minor cleanups * minor cleanups * go mod vendor * cleanups * remove some extra code, and un-export some fields/methods * update vendor * remove reference to vault.CoreConfig, which really wasn't used anyway * update with go mod vendor * restore Precheck method to test cases * clean up some networking things; create networks with UUID, clean up during teardown * vendor stepwise * Update sdk/testing/stepwise/environments/docker/environment.go haha thanks :D Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * Update sdk/testing/stepwise/environments/docker/environment.go Great catch, thanks Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * fix redundant name * update error message in test * Update builtin/credential/userpass/stepwise_test.go More explicit error checking and responding Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * Update builtin/logical/aws/stepwise_test.go `test` -> `testFunc` Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * Update builtin/logical/transit/stepwise_test.go Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * fix typos * update error messages to provide clarity * Update sdk/testing/stepwise/environments/docker/environment.go Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * update error handling / collection in Teardown * panic if GenerateUUID returns an error * Update sdk/testing/stepwise/environments/docker/environment.go Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> * Update builtin/credential/userpass/stepwise_test.go Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com> * Update builtin/logical/aws/stepwise_test.go Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com> * Update builtin/logical/transit/stepwise_test.go Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com> * Update sdk/testing/stepwise/environments/docker/environment.go Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com> * import ordering * standardize on dc from rc for cluster * lowercase name * CreateAPIClient -> NewAPIClient * testWait -> ensure * go mod cleanup * cleanups * move fields and method around * make start and dockerclusternode private; use better random serial number * use better random for SerialNumber * add a timeout to the context used for terminating the docker container * Use a constant for the Docker client version * rearrange import statements Co-authored-by: Michael Golowka <72365+pcman312@users.noreply.github.com> Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
100 lines
2.7 KiB
Go
100 lines
2.7 KiB
Go
package aws
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/vault/api"
|
|
"github.com/hashicorp/vault/sdk/testing/stepwise"
|
|
dockerEnvironment "github.com/hashicorp/vault/sdk/testing/stepwise/environments/docker"
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
func TestAccBackend_Stepwise_basic(t *testing.T) {
|
|
t.Parallel()
|
|
envOptions := &stepwise.MountOptions{
|
|
RegistryName: "aws-sec",
|
|
PluginType: stepwise.PluginTypeSecrets,
|
|
PluginName: "aws",
|
|
MountPathPrefix: "aws-sec",
|
|
}
|
|
roleName := "vault-stepwise-role"
|
|
stepwise.Run(t, stepwise.Case{
|
|
Precheck: func() { testAccStepwisePreCheck(t) },
|
|
Environment: dockerEnvironment.NewEnvironment("aws", envOptions),
|
|
Steps: []stepwise.Step{
|
|
testAccStepwiseConfig(t),
|
|
testAccStepwiseWritePolicy(t, roleName, testDynamoPolicy),
|
|
testAccStepwiseRead(t, "creds", roleName, []credentialTestFunc{listDynamoTablesTest}),
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccStepwiseConfig(t *testing.T) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.UpdateOperation,
|
|
Path: "config/root",
|
|
Data: map[string]interface{}{
|
|
"region": os.Getenv("AWS_DEFAULT_REGION"),
|
|
"access_key": os.Getenv("TEST_AWS_ACCESS_KEY"),
|
|
"secret_key": os.Getenv("TEST_AWS_SECRET_KEY"),
|
|
},
|
|
}
|
|
}
|
|
|
|
func testAccStepwiseWritePolicy(t *testing.T, name string, policy string) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.UpdateOperation,
|
|
Path: "roles/" + name,
|
|
Data: map[string]interface{}{
|
|
"policy_document": policy,
|
|
"credential_type": "iam_user",
|
|
},
|
|
}
|
|
}
|
|
|
|
func testAccStepwiseRead(t *testing.T, path, name string, credentialTests []credentialTestFunc) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.ReadOperation,
|
|
Path: path + "/" + name,
|
|
Assert: func(resp *api.Secret, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var d struct {
|
|
AccessKey string `mapstructure:"access_key"`
|
|
SecretKey string `mapstructure:"secret_key"`
|
|
STSToken string `mapstructure:"security_token"`
|
|
}
|
|
if err := mapstructure.Decode(resp.Data, &d); err != nil {
|
|
return err
|
|
}
|
|
t.Logf("[WARN] Generated credentials: %v", d)
|
|
for _, testFunc := range credentialTests {
|
|
err := testFunc(d.AccessKey, d.SecretKey, d.STSToken)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
}
|
|
|
|
func testAccStepwisePreCheck(t *testing.T) {
|
|
initSetup.Do(func() {
|
|
if v := os.Getenv("AWS_DEFAULT_REGION"); v == "" {
|
|
t.Logf("[INFO] Test: Using us-west-2 as test region")
|
|
os.Setenv("AWS_DEFAULT_REGION", "us-west-2")
|
|
}
|
|
|
|
// Ensure test variables are set
|
|
if v := os.Getenv("TEST_AWS_ACCESS_KEY"); v == "" {
|
|
t.Skip("TEST_AWS_ACCESS_KEY not set")
|
|
}
|
|
if v := os.Getenv("TEST_AWS_SECRET_KEY"); v == "" {
|
|
t.Skip("TEST_AWS_SECRET_KEY not set")
|
|
}
|
|
})
|
|
}
|