// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 //go:build testonly package vault import ( "context" "github.com/hashicorp/vault/sdk/framework" "github.com/hashicorp/vault/sdk/logical" "github.com/hashicorp/vault/vault/activity/generation" "google.golang.org/protobuf/encoding/protojson" ) const helpText = "Create activity log data for testing purposes" func (b *SystemBackend) activityWritePath() *framework.Path { return &framework.Path{ Pattern: "internal/counters/activity/write$", HelpDescription: helpText, HelpSynopsis: helpText, Fields: map[string]*framework.FieldSchema{ "input": { Type: framework.TypeString, Description: "JSON input for generating mock data", }, }, Operations: map[logical.Operation]framework.OperationHandler{ logical.CreateOperation: &framework.PathOperation{ Callback: b.handleActivityWriteData, Summary: "Write activity log data", }, }, } } func (b *SystemBackend) handleActivityWriteData(ctx context.Context, request *logical.Request, data *framework.FieldData) (*logical.Response, error) { json := data.Get("input") input := &generation.ActivityLogMockInput{} err := protojson.Unmarshal([]byte(json.(string)), input) if err != nil { return logical.ErrorResponse("Invalid input data: %s", err), logical.ErrInvalidRequest } if len(input.Write) == 0 { return logical.ErrorResponse("Missing required \"write\" values"), logical.ErrInvalidRequest } if len(input.Data) == 0 { return logical.ErrorResponse("Missing required \"data\" values"), logical.ErrInvalidRequest } return nil, nil }