mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	* VAULT-15547 Additional tests, refactoring, for proxy split * VAULT-15547 Additional tests, refactoring, for proxy split * VAULT-15547 Import reorganization * VAULT-15547 Some missed updates for PersistConfig * VAULT-15547 address comments * VAULT-15547 address comments
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) HashiCorp, Inc.
 | 
						|
// SPDX-License-Identifier: MPL-2.0
 | 
						|
 | 
						|
package agentproxyshared
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"os"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	hclog "github.com/hashicorp/go-hclog"
 | 
						|
	"github.com/hashicorp/vault/api"
 | 
						|
	"github.com/hashicorp/vault/command/agentproxyshared/cache"
 | 
						|
	"github.com/hashicorp/vault/sdk/helper/logging"
 | 
						|
)
 | 
						|
 | 
						|
func testNewLeaseCache(t *testing.T, responses []*cache.SendResponse) *cache.LeaseCache {
 | 
						|
	t.Helper()
 | 
						|
 | 
						|
	client, err := api.NewClient(api.DefaultConfig())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	lc, err := cache.NewLeaseCache(&cache.LeaseCacheConfig{
 | 
						|
		Client:      client,
 | 
						|
		BaseContext: context.Background(),
 | 
						|
		Proxier:     cache.NewMockProxier(responses),
 | 
						|
		Logger:      logging.NewVaultLogger(hclog.Trace).Named("cache.leasecache"),
 | 
						|
	})
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	return lc
 | 
						|
}
 | 
						|
 | 
						|
func populateTempFile(t *testing.T, name, contents string) *os.File {
 | 
						|
	t.Helper()
 | 
						|
 | 
						|
	file, err := os.CreateTemp(t.TempDir(), name)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	_, err = file.WriteString(contents)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	err = file.Close()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	return file
 | 
						|
}
 | 
						|
 | 
						|
// Test_AddPersistentStorageToLeaseCache Tests that AddPersistentStorageToLeaseCache() correctly
 | 
						|
// adds persistent storage to a lease cache
 | 
						|
func Test_AddPersistentStorageToLeaseCache(t *testing.T) {
 | 
						|
	tempDir := t.TempDir()
 | 
						|
	serviceAccountTokenFile := populateTempFile(t, "proxy-config.hcl", "token")
 | 
						|
 | 
						|
	persistConfig := &PersistConfig{
 | 
						|
		Type:                    "kubernetes",
 | 
						|
		Path:                    tempDir,
 | 
						|
		KeepAfterImport:         false,
 | 
						|
		ExitOnErr:               false,
 | 
						|
		ServiceAccountTokenFile: serviceAccountTokenFile.Name(),
 | 
						|
	}
 | 
						|
 | 
						|
	leaseCache := testNewLeaseCache(t, nil)
 | 
						|
	if leaseCache.PersistentStorage() != nil {
 | 
						|
		t.Fatal("persistent storage was available before ours was added")
 | 
						|
	}
 | 
						|
 | 
						|
	deferFunc, token, err := AddPersistentStorageToLeaseCache(context.Background(), leaseCache, persistConfig, logging.NewVaultLogger(hclog.Info))
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if leaseCache.PersistentStorage() == nil {
 | 
						|
		t.Fatal("persistent storage was not added")
 | 
						|
	}
 | 
						|
 | 
						|
	if token != "" {
 | 
						|
		t.Fatal("expected token to be empty")
 | 
						|
	}
 | 
						|
 | 
						|
	if deferFunc == nil {
 | 
						|
		t.Fatal("expected deferFunc to not be nil")
 | 
						|
	}
 | 
						|
}
 |