github.com/hashicorp/vault/sdk@v0.13.0/plugin/mock/path_errors.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package mock
     5  
     6  import (
     7  	"context"
     8  	"errors"
     9  	"net/rpc"
    10  
    11  	"github.com/hashicorp/vault/sdk/framework"
    12  	"github.com/hashicorp/vault/sdk/helper/errutil"
    13  	"github.com/hashicorp/vault/sdk/logical"
    14  	"github.com/hashicorp/vault/sdk/plugin/pb"
    15  )
    16  
    17  // pathInternal is used to test viewing internal backend values. In this case,
    18  // it is used to test the invalidate func.
    19  func errorPaths(b *backend) []*framework.Path {
    20  	return []*framework.Path{
    21  		{
    22  			Pattern: "errors/rpc",
    23  			Callbacks: map[logical.Operation]framework.OperationFunc{
    24  				logical.ReadOperation: b.pathErrorRPCRead,
    25  			},
    26  		},
    27  		{
    28  			Pattern: "errors/kill",
    29  			Callbacks: map[logical.Operation]framework.OperationFunc{
    30  				logical.ReadOperation: b.pathErrorRPCRead,
    31  			},
    32  		},
    33  		{
    34  			Pattern: "errors/type",
    35  			Fields: map[string]*framework.FieldSchema{
    36  				"err_type": {Type: framework.TypeInt},
    37  			},
    38  			Callbacks: map[logical.Operation]framework.OperationFunc{
    39  				logical.UpdateOperation: b.pathErrorRPCRead,
    40  			},
    41  		},
    42  	}
    43  }
    44  
    45  func (b *backend) pathErrorRPCRead(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) {
    46  	errTypeRaw, ok := data.GetOk("err_type")
    47  	if !ok {
    48  		return nil, rpc.ErrShutdown
    49  	}
    50  
    51  	var err error
    52  	switch uint32(errTypeRaw.(int)) {
    53  	case pb.ErrTypeUnknown:
    54  		err = errors.New("test")
    55  	case pb.ErrTypeUserError:
    56  		err = errutil.UserError{Err: "test"}
    57  	case pb.ErrTypeInternalError:
    58  		err = errutil.InternalError{Err: "test"}
    59  	case pb.ErrTypeCodedError:
    60  		err = logical.CodedError(403, "test")
    61  	case pb.ErrTypeStatusBadRequest:
    62  		err = &logical.StatusBadRequest{Err: "test"}
    63  	case pb.ErrTypeUnsupportedOperation:
    64  		err = logical.ErrUnsupportedOperation
    65  	case pb.ErrTypeUnsupportedPath:
    66  		err = logical.ErrUnsupportedPath
    67  	case pb.ErrTypeInvalidRequest:
    68  		err = logical.ErrInvalidRequest
    69  	case pb.ErrTypePermissionDenied:
    70  		err = logical.ErrPermissionDenied
    71  	case pb.ErrTypeMultiAuthzPending:
    72  		err = logical.ErrMultiAuthzPending
    73  	}
    74  
    75  	return nil, err
    76  }