github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/networking/v2/extensions/rbacpolicies/rbacpolicies_test.go (about)

     1  //go:build acceptance
     2  // +build acceptance
     3  
     4  package rbacpolicies
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    10  	projects "github.com/gophercloud/gophercloud/internal/acceptance/openstack/identity/v3"
    11  	networking "github.com/gophercloud/gophercloud/internal/acceptance/openstack/networking/v2"
    12  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    13  	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/rbacpolicies"
    14  	th "github.com/gophercloud/gophercloud/testhelper"
    15  )
    16  
    17  func TestRBACPolicyCRUD(t *testing.T) {
    18  	clients.RequireAdmin(t)
    19  
    20  	client, err := clients.NewNetworkV2Client()
    21  	th.AssertNoErr(t, err)
    22  
    23  	// Create a network
    24  	network, err := networking.CreateNetwork(t, client)
    25  	th.AssertNoErr(t, err)
    26  	defer networking.DeleteNetwork(t, client, network.ID)
    27  
    28  	tools.PrintResource(t, network)
    29  
    30  	identityClient, err := clients.NewIdentityV3Client()
    31  	th.AssertNoErr(t, err)
    32  
    33  	// Create a project/tenant
    34  	project, err := projects.CreateProject(t, identityClient, nil)
    35  	th.AssertNoErr(t, err)
    36  	defer projects.DeleteProject(t, identityClient, project.ID)
    37  
    38  	tools.PrintResource(t, project)
    39  
    40  	// Create a rbac-policy
    41  	rbacPolicy, err := CreateRBACPolicy(t, client, project.ID, network.ID)
    42  	th.AssertNoErr(t, err)
    43  	defer DeleteRBACPolicy(t, client, rbacPolicy.ID)
    44  
    45  	tools.PrintResource(t, rbacPolicy)
    46  
    47  	// Create another project/tenant for rbac-update
    48  	project2, err := projects.CreateProject(t, identityClient, nil)
    49  	th.AssertNoErr(t, err)
    50  	defer projects.DeleteProject(t, identityClient, project2.ID)
    51  
    52  	tools.PrintResource(t, project2)
    53  
    54  	// Update a rbac-policy
    55  	updateOpts := rbacpolicies.UpdateOpts{
    56  		TargetTenant: project2.ID,
    57  	}
    58  
    59  	_, err = rbacpolicies.Update(client, rbacPolicy.ID, updateOpts).Extract()
    60  	th.AssertNoErr(t, err)
    61  
    62  	// Get the rbac-policy by ID
    63  	t.Logf("Get rbac_policy by ID")
    64  	newrbacPolicy, err := rbacpolicies.Get(client, rbacPolicy.ID).Extract()
    65  	th.AssertNoErr(t, err)
    66  
    67  	tools.PrintResource(t, newrbacPolicy)
    68  }
    69  
    70  func TestRBACPolicyList(t *testing.T) {
    71  	clients.RequireAdmin(t)
    72  
    73  	client, err := clients.NewNetworkV2Client()
    74  	th.AssertNoErr(t, err)
    75  
    76  	type rbacPolicy struct {
    77  		rbacpolicies.RBACPolicy
    78  	}
    79  
    80  	var allRBACPolicies []rbacPolicy
    81  
    82  	allPages, err := rbacpolicies.List(client, nil).AllPages()
    83  	th.AssertNoErr(t, err)
    84  
    85  	err = rbacpolicies.ExtractRBACPolicesInto(allPages, &allRBACPolicies)
    86  	th.AssertNoErr(t, err)
    87  
    88  	for _, rbacpolicy := range allRBACPolicies {
    89  		tools.PrintResource(t, rbacpolicy)
    90  	}
    91  }