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 }