1package approle 2 3import ( 4 "context" 5 "testing" 6 7 "github.com/hashicorp/vault/sdk/logical" 8) 9 10func TestAppRole_SecretIDNumUsesUpgrade(t *testing.T) { 11 var resp *logical.Response 12 var err error 13 14 b, storage := createBackendWithStorage(t) 15 16 roleData := map[string]interface{}{ 17 "secret_id_num_uses": 10, 18 } 19 20 roleReq := &logical.Request{ 21 Operation: logical.CreateOperation, 22 Path: "role/role1", 23 Storage: storage, 24 Data: roleData, 25 } 26 27 resp, err = b.HandleRequest(context.Background(), roleReq) 28 if err != nil || (resp != nil && resp.IsError()) { 29 t.Fatalf("err:%v resp:%#v", err, resp) 30 } 31 32 secretIDReq := &logical.Request{ 33 Operation: logical.UpdateOperation, 34 Path: "role/role1/secret-id", 35 Storage: storage, 36 } 37 38 resp, err = b.HandleRequest(context.Background(), secretIDReq) 39 if err != nil || (resp != nil && resp.IsError()) { 40 t.Fatalf("err:%v resp:%#v", err, resp) 41 } 42 43 secretIDReq.Operation = logical.UpdateOperation 44 secretIDReq.Path = "role/role1/secret-id/lookup" 45 secretIDReq.Data = map[string]interface{}{ 46 "secret_id": resp.Data["secret_id"].(string), 47 } 48 resp, err = b.HandleRequest(context.Background(), secretIDReq) 49 if err != nil || (resp != nil && resp.IsError()) { 50 t.Fatalf("err:%v resp:%#v", err, resp) 51 } 52 53 // Check if the response contains the value set for secret_id_num_uses 54 if resp.Data["secret_id_num_uses"] != 10 { 55 t.Fatal("invalid secret_id_num_uses") 56 } 57} 58