5483eba5fc
* add username customization for rabbitmq * add changelog for rabbitmq * Update builtin/logical/rabbitmq/path_config_connection.go Co-authored-by: Tom Proctor <tomhjp@users.noreply.github.com> * updating API docs * moved to changelog folder Co-authored-by: Tom Proctor <tomhjp@users.noreply.github.com>
162 lines
4.1 KiB
Go
162 lines
4.1 KiB
Go
package rabbitmq
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/vault/sdk/logical"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBackend_RoleCreate_DefaultUsernameTemplate(t *testing.T) {
|
|
cleanup, connectionURI := prepareRabbitMQTestContainer(t)
|
|
defer cleanup()
|
|
|
|
var resp *logical.Response
|
|
var err error
|
|
config := logical.TestBackendConfig()
|
|
config.StorageView = &logical.InmemStorage{}
|
|
b := Backend()
|
|
if err = b.Setup(context.Background(), config); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
configData := map[string]interface{}{
|
|
"connection_uri": connectionURI,
|
|
"username": "guest",
|
|
"password": "guest",
|
|
"username_template": "",
|
|
}
|
|
configReq := &logical.Request{
|
|
Operation: logical.UpdateOperation,
|
|
Path: "config/connection",
|
|
Storage: config.StorageView,
|
|
Data: configData,
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), configReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp != nil {
|
|
t.Fatal("expected a nil response")
|
|
}
|
|
|
|
roleData := map[string]interface{}{
|
|
"name": "foo",
|
|
"tags": "bar",
|
|
}
|
|
roleReq := &logical.Request{
|
|
Operation: logical.UpdateOperation,
|
|
Path: "roles/foo",
|
|
Storage: config.StorageView,
|
|
Data: roleData,
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), roleReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp != nil {
|
|
t.Fatal("expected a nil response")
|
|
}
|
|
|
|
credsReq := &logical.Request{
|
|
Operation: logical.ReadOperation,
|
|
Path: "creds/foo",
|
|
Storage: config.StorageView,
|
|
DisplayName: "token",
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), credsReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp == nil {
|
|
t.Fatal("missing creds response")
|
|
}
|
|
if resp.Data == nil {
|
|
t.Fatalf("missing creds data")
|
|
}
|
|
|
|
username, exists := resp.Data["username"]
|
|
if !exists {
|
|
t.Fatalf("missing username in response")
|
|
}
|
|
|
|
require.Regexp(t, `^token-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$`, username)
|
|
}
|
|
|
|
func TestBackend_RoleCreate_CustomUsernameTemplate(t *testing.T) {
|
|
cleanup, connectionURI := prepareRabbitMQTestContainer(t)
|
|
defer cleanup()
|
|
|
|
var resp *logical.Response
|
|
var err error
|
|
config := logical.TestBackendConfig()
|
|
config.StorageView = &logical.InmemStorage{}
|
|
b := Backend()
|
|
if err = b.Setup(context.Background(), config); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
configData := map[string]interface{}{
|
|
"connection_uri": connectionURI,
|
|
"username": "guest",
|
|
"password": "guest",
|
|
"username_template": "foo-{{ .DisplayName }}",
|
|
}
|
|
configReq := &logical.Request{
|
|
Operation: logical.UpdateOperation,
|
|
Path: "config/connection",
|
|
Storage: config.StorageView,
|
|
Data: configData,
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), configReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp != nil {
|
|
t.Fatal("expected a nil response")
|
|
}
|
|
|
|
roleData := map[string]interface{}{
|
|
"name": "foo",
|
|
"tags": "bar",
|
|
}
|
|
roleReq := &logical.Request{
|
|
Operation: logical.UpdateOperation,
|
|
Path: "roles/foo",
|
|
Storage: config.StorageView,
|
|
Data: roleData,
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), roleReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp != nil {
|
|
t.Fatal("expected a nil response")
|
|
}
|
|
|
|
credsReq := &logical.Request{
|
|
Operation: logical.ReadOperation,
|
|
Path: "creds/foo",
|
|
Storage: config.StorageView,
|
|
DisplayName: "token",
|
|
}
|
|
resp, err = b.HandleRequest(context.Background(), credsReq)
|
|
if err != nil || (resp != nil && resp.IsError()) {
|
|
t.Fatalf("bad: resp: %#v\nerr:%s", resp, err)
|
|
}
|
|
if resp == nil {
|
|
t.Fatal("missing creds response")
|
|
}
|
|
if resp.Data == nil {
|
|
t.Fatalf("missing creds data")
|
|
}
|
|
|
|
username, exists := resp.Data["username"]
|
|
if !exists {
|
|
t.Fatalf("missing username in response")
|
|
}
|
|
|
|
require.Regexp(t, `^foo-token$`, username)
|
|
}
|