mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) HashiCorp, Inc.
 | |
| // SPDX-License-Identifier: MPL-2.0
 | |
| 
 | |
| package mock
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/hashicorp/vault/sdk/framework"
 | |
| 	"github.com/hashicorp/vault/sdk/logical"
 | |
| )
 | |
| 
 | |
| const MockPluginVersionEnv = "TESTING_MOCK_VAULT_PLUGIN_VERSION"
 | |
| 
 | |
| // New returns a new backend as an interface. This func
 | |
| // is only necessary for builtin backend plugins.
 | |
| func New() (interface{}, error) {
 | |
| 	return Backend(), nil
 | |
| }
 | |
| 
 | |
| // Factory returns a new backend as logical.Backend.
 | |
| func Factory(ctx context.Context, conf *logical.BackendConfig) (logical.Backend, error) {
 | |
| 	b := Backend()
 | |
| 	if err := b.Setup(ctx, conf); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return b, nil
 | |
| }
 | |
| 
 | |
| // FactoryType is a wrapper func that allows the Factory func to specify
 | |
| // the backend type for the mock backend plugin instance.
 | |
| func FactoryType(backendType logical.BackendType) logical.Factory {
 | |
| 	return func(ctx context.Context, conf *logical.BackendConfig) (logical.Backend, error) {
 | |
| 		b := Backend()
 | |
| 		b.BackendType = backendType
 | |
| 		if err := b.Setup(ctx, conf); err != nil {
 | |
| 			return nil, err
 | |
| 		}
 | |
| 		return b, nil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Backend returns a private embedded struct of framework.Backend.
 | |
| func Backend() *backend {
 | |
| 	var b backend
 | |
| 	b.Backend = &framework.Backend{
 | |
| 		Help: "",
 | |
| 		Paths: framework.PathAppend(
 | |
| 			errorPaths(&b),
 | |
| 			kvPaths(&b),
 | |
| 			[]*framework.Path{
 | |
| 				pathInternal(&b),
 | |
| 				pathSpecial(&b),
 | |
| 				pathRaw(&b),
 | |
| 			},
 | |
| 		),
 | |
| 		PathsSpecial: &logical.Paths{
 | |
| 			Unauthenticated: []string{
 | |
| 				"special",
 | |
| 			},
 | |
| 		},
 | |
| 		Secrets:     []*framework.Secret{},
 | |
| 		Invalidate:  b.invalidate,
 | |
| 		BackendType: logical.TypeLogical,
 | |
| 	}
 | |
| 	b.internal = "bar"
 | |
| 	b.RunningVersion = "v0.0.0+mock"
 | |
| 	if version := os.Getenv(MockPluginVersionEnv); version != "" {
 | |
| 		b.RunningVersion = version
 | |
| 	}
 | |
| 	return &b
 | |
| }
 | |
| 
 | |
| type backend struct {
 | |
| 	*framework.Backend
 | |
| 
 | |
| 	// internal is used to test invalidate
 | |
| 	internal string
 | |
| }
 | |
| 
 | |
| func (b *backend) invalidate(ctx context.Context, key string) {
 | |
| 	switch key {
 | |
| 	case "internal":
 | |
| 		b.internal = ""
 | |
| 	}
 | |
| }
 | 
