mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) HashiCorp, Inc.
 | 
						|
// SPDX-License-Identifier: BUSL-2.0
 | 
						|
 | 
						|
package ldap
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"os"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/hashicorp/vault/helper/testhelpers/ldap"
 | 
						|
	logicaltest "github.com/hashicorp/vault/helper/testhelpers/logical"
 | 
						|
	"github.com/hashicorp/vault/sdk/logical"
 | 
						|
)
 | 
						|
 | 
						|
// This test relies on a docker ldap server with a suitable person object (cn=admin,dc=planetexpress,dc=com)
 | 
						|
// with bindpassword "admin". `PrepareTestContainer` does this for us. - see the backend_test for more details
 | 
						|
func TestRotateRoot(t *testing.T) {
 | 
						|
	if os.Getenv(logicaltest.TestEnvVar) == "" {
 | 
						|
		t.Skip("skipping rotate root tests because VAULT_ACC is unset")
 | 
						|
	}
 | 
						|
	ctx := context.Background()
 | 
						|
 | 
						|
	b, store := createBackendWithStorage(t)
 | 
						|
	cleanup, cfg := ldap.PrepareTestContainer(t, "latest")
 | 
						|
	defer cleanup()
 | 
						|
	// set up auth config
 | 
						|
	req := &logical.Request{
 | 
						|
		Operation: logical.UpdateOperation,
 | 
						|
		Path:      "config",
 | 
						|
		Storage:   store,
 | 
						|
		Data: map[string]interface{}{
 | 
						|
			"url":      cfg.Url,
 | 
						|
			"binddn":   cfg.BindDN,
 | 
						|
			"bindpass": cfg.BindPassword,
 | 
						|
			"userdn":   cfg.UserDN,
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	resp, err := b.HandleRequest(ctx, req)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("failed to initialize ldap auth config: %s", err)
 | 
						|
	}
 | 
						|
	if resp != nil && resp.IsError() {
 | 
						|
		t.Fatalf("failed to initialize ldap auth config: %s", resp.Data["error"])
 | 
						|
	}
 | 
						|
 | 
						|
	req = &logical.Request{
 | 
						|
		Operation: logical.UpdateOperation,
 | 
						|
		Path:      "config/rotate-root",
 | 
						|
		Storage:   store,
 | 
						|
	}
 | 
						|
 | 
						|
	_, err = b.HandleRequest(ctx, req)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("failed to rotate password: %s", err)
 | 
						|
	}
 | 
						|
 | 
						|
	newCFG, err := b.Config(ctx, req)
 | 
						|
	if newCFG.BindDN != cfg.BindDN {
 | 
						|
		t.Fatalf("a value in config that should have stayed the same changed: %s", cfg.BindDN)
 | 
						|
	}
 | 
						|
	if newCFG.BindPassword == cfg.BindPassword {
 | 
						|
		t.Fatalf("the password should have changed, but it didn't")
 | 
						|
	}
 | 
						|
}
 |