github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v2 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/sharedfilesystems/v2/sharenetworks" 12 "github.com/gophercloud/gophercloud/pagination" 13 th "github.com/gophercloud/gophercloud/testhelper" 14 ) 15 16 func TestShareNetworkCreateDestroy(t *testing.T) { 17 client, err := clients.NewSharedFileSystemV2Client() 18 if err != nil { 19 t.Fatalf("Unable to create shared file system client: %v", err) 20 } 21 22 shareNetwork, err := CreateShareNetwork(t, client) 23 if err != nil { 24 t.Fatalf("Unable to create share network: %v", err) 25 } 26 27 newShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() 28 if err != nil { 29 t.Errorf("Unable to retrieve shareNetwork: %v", err) 30 } 31 32 if newShareNetwork.Name != shareNetwork.Name { 33 t.Fatalf("Share network name was expeted to be: %s", shareNetwork.Name) 34 } 35 36 if newShareNetwork.Description != shareNetwork.Description { 37 t.Fatalf("Share network description was expeted to be: %s", shareNetwork.Description) 38 } 39 40 tools.PrintResource(t, shareNetwork) 41 42 defer DeleteShareNetwork(t, client, shareNetwork.ID) 43 } 44 45 // Create a share network and update the name and description. Get the share 46 // network and verify that the name and description have been updated 47 func TestShareNetworkUpdate(t *testing.T) { 48 client, err := clients.NewSharedFileSystemV2Client() 49 if err != nil { 50 t.Fatalf("Unable to create shared file system client: %v", err) 51 } 52 53 shareNetwork, err := CreateShareNetwork(t, client) 54 if err != nil { 55 t.Fatalf("Unable to create share network: %v", err) 56 } 57 58 expectedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() 59 if err != nil { 60 t.Errorf("Unable to retrieve shareNetwork: %v", err) 61 } 62 63 name := "NewName" 64 description := "" 65 options := sharenetworks.UpdateOpts{ 66 Name: &name, 67 Description: &description, 68 } 69 70 expectedShareNetwork.Name = name 71 expectedShareNetwork.Description = description 72 73 _, err = sharenetworks.Update(client, shareNetwork.ID, options).Extract() 74 if err != nil { 75 t.Errorf("Unable to update shareNetwork: %v", err) 76 } 77 78 updatedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract() 79 if err != nil { 80 t.Errorf("Unable to retrieve shareNetwork: %v", err) 81 } 82 83 // Update time has to be set in order to get the assert equal to pass 84 expectedShareNetwork.UpdatedAt = updatedShareNetwork.UpdatedAt 85 86 th.CheckDeepEquals(t, expectedShareNetwork, updatedShareNetwork) 87 88 tools.PrintResource(t, shareNetwork) 89 90 defer DeleteShareNetwork(t, client, shareNetwork.ID) 91 } 92 93 func TestShareNetworkListDetail(t *testing.T) { 94 client, err := clients.NewSharedFileSystemV2Client() 95 if err != nil { 96 t.Fatalf("Unable to create a shared file system client: %v", err) 97 } 98 99 allPages, err := sharenetworks.ListDetail(client, sharenetworks.ListOpts{}).AllPages() 100 if err != nil { 101 t.Fatalf("Unable to retrieve share networks: %v", err) 102 } 103 104 allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages) 105 if err != nil { 106 t.Fatalf("Unable to extract share networks: %v", err) 107 } 108 109 for _, shareNetwork := range allShareNetworks { 110 tools.PrintResource(t, &shareNetwork) 111 } 112 } 113 114 // The test creates 2 shared networks and verifies that only the one(s) with 115 // a particular name are being listed 116 func TestShareNetworkListFiltering(t *testing.T) { 117 client, err := clients.NewSharedFileSystemV2Client() 118 if err != nil { 119 t.Fatalf("Unable to create a shared file system client: %v", err) 120 } 121 122 shareNetwork, err := CreateShareNetwork(t, client) 123 if err != nil { 124 t.Fatalf("Unable to create share network: %v", err) 125 } 126 defer DeleteShareNetwork(t, client, shareNetwork.ID) 127 128 shareNetwork, err = CreateShareNetwork(t, client) 129 if err != nil { 130 t.Fatalf("Unable to create share network: %v", err) 131 } 132 defer DeleteShareNetwork(t, client, shareNetwork.ID) 133 134 options := sharenetworks.ListOpts{ 135 Name: shareNetwork.Name, 136 } 137 138 allPages, err := sharenetworks.ListDetail(client, options).AllPages() 139 if err != nil { 140 t.Fatalf("Unable to retrieve share networks: %v", err) 141 } 142 143 allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages) 144 if err != nil { 145 t.Fatalf("Unable to extract share networks: %v", err) 146 } 147 148 for _, listedShareNetwork := range allShareNetworks { 149 if listedShareNetwork.Name != shareNetwork.Name { 150 t.Fatalf("The name of the share network was expected to be %s", shareNetwork.Name) 151 } 152 tools.PrintResource(t, &listedShareNetwork) 153 } 154 } 155 156 func TestShareNetworkListPagination(t *testing.T) { 157 client, err := clients.NewSharedFileSystemV2Client() 158 if err != nil { 159 t.Fatalf("Unable to create a shared file system client: %v", err) 160 } 161 162 shareNetwork, err := CreateShareNetwork(t, client) 163 if err != nil { 164 t.Fatalf("Unable to create share network: %v", err) 165 } 166 defer DeleteShareNetwork(t, client, shareNetwork.ID) 167 168 shareNetwork, err = CreateShareNetwork(t, client) 169 if err != nil { 170 t.Fatalf("Unable to create share network: %v", err) 171 } 172 defer DeleteShareNetwork(t, client, shareNetwork.ID) 173 174 count := 0 175 176 err = sharenetworks.ListDetail(client, sharenetworks.ListOpts{Offset: 0, Limit: 1}).EachPage(func(page pagination.Page) (bool, error) { 177 count++ 178 _, err := sharenetworks.ExtractShareNetworks(page) 179 if err != nil { 180 t.Fatalf("Failed to extract share networks: %v", err) 181 return false, err 182 } 183 184 return true, nil 185 }) 186 if err != nil { 187 t.Fatalf("Unable to retrieve share networks: %v", err) 188 } 189 190 if count < 2 { 191 t.Fatal("Expected to get at least 2 pages") 192 } 193 194 } 195 196 func TestShareNetworkAddRemoveSecurityService(t *testing.T) { 197 client, err := clients.NewSharedFileSystemV2Client() 198 if err != nil { 199 t.Fatalf("Unable to create a shared file system client: %v", err) 200 } 201 202 securityService, err := CreateSecurityService(t, client) 203 if err != nil { 204 t.Fatalf("Unable to create security service: %v", err) 205 } 206 defer DeleteSecurityService(t, client, securityService) 207 208 shareNetwork, err := CreateShareNetwork(t, client) 209 if err != nil { 210 t.Fatalf("Unable to create share network: %v", err) 211 } 212 defer DeleteShareNetwork(t, client, shareNetwork.ID) 213 214 options := sharenetworks.AddSecurityServiceOpts{ 215 SecurityServiceID: securityService.ID, 216 } 217 218 _, err = sharenetworks.AddSecurityService(client, shareNetwork.ID, options).Extract() 219 if err != nil { 220 t.Errorf("Unable to add security service: %v", err) 221 } 222 223 removeOptions := sharenetworks.RemoveSecurityServiceOpts{ 224 SecurityServiceID: securityService.ID, 225 } 226 227 _, err = sharenetworks.RemoveSecurityService(client, shareNetwork.ID, removeOptions).Extract() 228 if err != nil { 229 t.Errorf("Unable to remove security service: %v", err) 230 } 231 232 tools.PrintResource(t, shareNetwork) 233 }