github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/keymanager/v1/acls_test.go (about) 1 //go:build acceptance || keymanager || acls 2 // +build acceptance keymanager acls 3 4 package v1 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 11 "github.com/gophercloud/gophercloud/openstack/keymanager/v1/acls" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestACLCRUD(t *testing.T) { 16 client, err := clients.NewKeyManagerV1Client() 17 th.AssertNoErr(t, err) 18 19 payload := tools.RandomString("SUPERSECRET-", 8) 20 secret, err := CreateSecretWithPayload(t, client, payload) 21 th.AssertNoErr(t, err) 22 secretID, err := ParseID(secret.SecretRef) 23 th.AssertNoErr(t, err) 24 defer DeleteSecret(t, client, secretID) 25 26 user := tools.RandomString("", 32) 27 users := []string{user} 28 iFalse := false 29 setOpts := acls.SetOpts{ 30 acls.SetOpt{ 31 Type: "read", 32 Users: &users, 33 ProjectAccess: &iFalse, 34 }, 35 } 36 37 aclRef, err := acls.SetSecretACL(client, secretID, setOpts).Extract() 38 th.AssertNoErr(t, err) 39 tools.PrintResource(t, aclRef) 40 defer func() { 41 err := acls.DeleteSecretACL(client, secretID).ExtractErr() 42 th.AssertNoErr(t, err) 43 acl, err := acls.GetSecretACL(client, secretID).Extract() 44 th.AssertNoErr(t, err) 45 tools.PrintResource(t, acl) 46 }() 47 48 acl, err := acls.GetSecretACL(client, secretID).Extract() 49 th.AssertNoErr(t, err) 50 tools.PrintResource(t, acl) 51 tools.PrintResource(t, (*acl)["read"].Created) 52 th.AssertEquals(t, len((*acl)["read"].Users), 1) 53 th.AssertEquals(t, (*acl)["read"].ProjectAccess, false) 54 55 newUsers := []string{} 56 updateOpts := acls.SetOpts{ 57 acls.SetOpt{ 58 Type: "read", 59 Users: &newUsers, 60 }, 61 } 62 63 aclRef, err = acls.UpdateSecretACL(client, secretID, updateOpts).Extract() 64 th.AssertNoErr(t, err) 65 tools.PrintResource(t, aclRef) 66 67 acl, err = acls.GetSecretACL(client, secretID).Extract() 68 th.AssertNoErr(t, err) 69 tools.PrintResource(t, acl) 70 tools.PrintResource(t, (*acl)["read"].Created) 71 th.AssertEquals(t, len((*acl)["read"].Users), 0) 72 th.AssertEquals(t, (*acl)["read"].ProjectAccess, false) 73 74 container, err := CreateGenericContainer(t, client, secret) 75 th.AssertNoErr(t, err) 76 containerID, err := ParseID(container.ContainerRef) 77 th.AssertNoErr(t, err) 78 defer DeleteContainer(t, client, containerID) 79 80 aclRef, err = acls.SetContainerACL(client, containerID, setOpts).Extract() 81 th.AssertNoErr(t, err) 82 tools.PrintResource(t, aclRef) 83 defer func() { 84 err := acls.DeleteContainerACL(client, containerID).ExtractErr() 85 th.AssertNoErr(t, err) 86 acl, err := acls.GetContainerACL(client, containerID).Extract() 87 th.AssertNoErr(t, err) 88 tools.PrintResource(t, acl) 89 }() 90 91 acl, err = acls.GetContainerACL(client, containerID).Extract() 92 th.AssertNoErr(t, err) 93 tools.PrintResource(t, acl) 94 tools.PrintResource(t, (*acl)["read"].Created) 95 th.AssertEquals(t, len((*acl)["read"].Users), 1) 96 th.AssertEquals(t, (*acl)["read"].ProjectAccess, false) 97 98 aclRef, err = acls.UpdateContainerACL(client, containerID, updateOpts).Extract() 99 th.AssertNoErr(t, err) 100 tools.PrintResource(t, aclRef) 101 102 acl, err = acls.GetContainerACL(client, containerID).Extract() 103 th.AssertNoErr(t, err) 104 tools.PrintResource(t, acl) 105 tools.PrintResource(t, (*acl)["read"].Created) 106 th.AssertEquals(t, len((*acl)["read"].Users), 0) 107 th.AssertEquals(t, (*acl)["read"].ProjectAccess, false) 108 }