github.com/hashicorp/vault/sdk@v0.13.0/framework/path_struct_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package framework 5 6 import ( 7 "context" 8 "testing" 9 10 "github.com/hashicorp/vault/sdk/logical" 11 ) 12 13 func TestPathStruct(t *testing.T) { 14 p := &PathStruct{ 15 Name: "foo", 16 Path: "bar", 17 Schema: map[string]*FieldSchema{ 18 "value": {Type: TypeString}, 19 }, 20 Read: true, 21 } 22 23 storage := new(logical.InmemStorage) 24 var b logical.Backend = &Backend{Paths: p.Paths()} 25 26 ctx := context.Background() 27 28 // Write via HTTP 29 _, err := b.HandleRequest(ctx, &logical.Request{ 30 Operation: logical.UpdateOperation, 31 Path: "bar", 32 Data: map[string]interface{}{ 33 "value": "baz", 34 }, 35 Storage: storage, 36 }) 37 if err != nil { 38 t.Fatalf("bad: %#v", err) 39 } 40 41 // Read via HTTP 42 resp, err := b.HandleRequest(ctx, &logical.Request{ 43 Operation: logical.ReadOperation, 44 Path: "bar", 45 Storage: storage, 46 }) 47 if err != nil { 48 t.Fatalf("bad: %#v", err) 49 } 50 if resp.Data["value"] != "baz" { 51 t.Fatalf("bad: %#v", resp) 52 } 53 54 // Read via API 55 v, err := p.Get(ctx, storage) 56 if err != nil { 57 t.Fatalf("bad: %#v", err) 58 } 59 if v["value"] != "baz" { 60 t.Fatalf("bad: %#v", v) 61 } 62 63 // Delete via HTTP 64 resp, err = b.HandleRequest(ctx, &logical.Request{ 65 Operation: logical.DeleteOperation, 66 Path: "bar", 67 Data: nil, 68 Storage: storage, 69 }) 70 if err != nil { 71 t.Fatalf("bad: %#v", err) 72 } 73 if resp != nil { 74 t.Fatalf("bad: %#v", resp) 75 } 76 77 // Re-read via HTTP 78 resp, err = b.HandleRequest(ctx, &logical.Request{ 79 Operation: logical.ReadOperation, 80 Path: "bar", 81 Storage: storage, 82 }) 83 if err != nil { 84 t.Fatalf("bad: %#v", err) 85 } 86 if _, ok := resp.Data["value"]; ok { 87 t.Fatalf("bad: %#v", resp) 88 } 89 90 // Re-read via API 91 v, err = p.Get(ctx, storage) 92 if err != nil { 93 t.Fatalf("bad: %#v", err) 94 } 95 if v != nil { 96 t.Fatalf("bad: %#v", v) 97 } 98 }