d8e0a13aae
* update gofumpt to 0.3.1 and reformat the repo * output the version of the formatter we're using
83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
package userpass
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
|
|
stepwise "github.com/hashicorp/vault-testing-stepwise"
|
|
dockerEnvironment "github.com/hashicorp/vault-testing-stepwise/environments/docker"
|
|
"github.com/hashicorp/vault/api"
|
|
"github.com/hashicorp/vault/sdk/helper/policyutil"
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
func TestAccBackend_stepwise_UserCrud(t *testing.T) {
|
|
customPluginName := "my-userpass"
|
|
envOptions := &stepwise.MountOptions{
|
|
RegistryName: customPluginName,
|
|
PluginType: stepwise.PluginTypeCredential,
|
|
PluginName: "userpass",
|
|
MountPathPrefix: customPluginName,
|
|
}
|
|
stepwise.Run(t, stepwise.Case{
|
|
Environment: dockerEnvironment.NewEnvironment(customPluginName, envOptions),
|
|
Steps: []stepwise.Step{
|
|
testAccStepwiseUser(t, "web", "password", "foo"),
|
|
testAccStepwiseReadUser(t, "web", "foo"),
|
|
testAccStepwiseDeleteUser(t, "web"),
|
|
testAccStepwiseReadUser(t, "web", ""),
|
|
},
|
|
})
|
|
}
|
|
|
|
func testAccStepwiseUser(
|
|
t *testing.T, name string, password string, policies string,
|
|
) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.UpdateOperation,
|
|
Path: "users/" + name,
|
|
Data: map[string]interface{}{
|
|
"password": password,
|
|
"policies": policies,
|
|
},
|
|
}
|
|
}
|
|
|
|
func testAccStepwiseDeleteUser(t *testing.T, name string) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.DeleteOperation,
|
|
Path: "users/" + name,
|
|
}
|
|
}
|
|
|
|
func testAccStepwiseReadUser(t *testing.T, name string, policies string) stepwise.Step {
|
|
return stepwise.Step{
|
|
Operation: stepwise.ReadOperation,
|
|
Path: "users/" + name,
|
|
Assert: func(resp *api.Secret, err error) error {
|
|
if resp == nil {
|
|
if policies == "" {
|
|
return nil
|
|
}
|
|
|
|
return fmt.Errorf("unexpected nil response")
|
|
}
|
|
|
|
var d struct {
|
|
Policies []string `mapstructure:"policies"`
|
|
}
|
|
if err := mapstructure.Decode(resp.Data, &d); err != nil {
|
|
return err
|
|
}
|
|
|
|
expectedPolicies := policyutil.ParsePolicies(policies)
|
|
if !reflect.DeepEqual(d.Policies, expectedPolicies) {
|
|
return fmt.Errorf("Actual policies: %#v\nExpected policies: %#v", d.Policies, expectedPolicies)
|
|
}
|
|
|
|
return nil
|
|
},
|
|
}
|
|
}
|