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  }