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