github.com/gophercloud/gophercloud@v1.11.0/openstack/sharedfilesystems/v2/shares/testing/request_test.go (about) 1 package testing 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/shares" 8 th "github.com/gophercloud/gophercloud/testhelper" 9 "github.com/gophercloud/gophercloud/testhelper/client" 10 ) 11 12 func TestCreate(t *testing.T) { 13 th.SetupHTTP() 14 defer th.TeardownHTTP() 15 16 MockCreateResponse(t) 17 18 options := &shares.CreateOpts{Size: 1, Name: "my_test_share", ShareProto: "NFS"} 19 n, err := shares.Create(client.ServiceClient(), options).Extract() 20 21 th.AssertNoErr(t, err) 22 th.AssertEquals(t, n.Name, "my_test_share") 23 th.AssertEquals(t, n.Size, 1) 24 th.AssertEquals(t, n.ShareProto, "NFS") 25 } 26 27 func TestUpdate(t *testing.T) { 28 th.SetupHTTP() 29 defer th.TeardownHTTP() 30 31 MockUpdateResponse(t) 32 33 name := "my_new_test_share" 34 description := "" 35 iFalse := false 36 options := &shares.UpdateOpts{ 37 DisplayName: &name, 38 DisplayDescription: &description, 39 IsPublic: &iFalse, 40 } 41 n, err := shares.Update(client.ServiceClient(), shareID, options).Extract() 42 43 th.AssertNoErr(t, err) 44 th.AssertEquals(t, n.Name, "my_new_test_share") 45 th.AssertEquals(t, n.Description, "") 46 th.AssertEquals(t, n.IsPublic, false) 47 } 48 49 func TestDelete(t *testing.T) { 50 th.SetupHTTP() 51 defer th.TeardownHTTP() 52 53 MockDeleteResponse(t) 54 55 result := shares.Delete(client.ServiceClient(), shareID) 56 th.AssertNoErr(t, result.Err) 57 } 58 59 func TestGet(t *testing.T) { 60 th.SetupHTTP() 61 defer th.TeardownHTTP() 62 63 MockGetResponse(t) 64 65 s, err := shares.Get(client.ServiceClient(), shareID).Extract() 66 th.AssertNoErr(t, err) 67 th.AssertDeepEquals(t, s, &shares.Share{ 68 AvailabilityZone: "nova", 69 ShareNetworkID: "713df749-aac0-4a54-af52-10f6c991e80c", 70 ShareServerID: "e268f4aa-d571-43dd-9ab3-f49ad06ffaef", 71 SnapshotID: "", 72 ID: shareID, 73 Size: 1, 74 ShareType: "25747776-08e5-494f-ab40-a64b9d20d8f7", 75 ShareTypeName: "default", 76 ConsistencyGroupID: "9397c191-8427-4661-a2e8-b23820dc01d4", 77 ProjectID: "16e1ab15c35a457e9c2b2aa189f544e1", 78 Metadata: map[string]string{ 79 "project": "my_app", 80 "aim": "doc", 81 }, 82 Status: "available", 83 Description: "My custom share London", 84 Host: "manila2@generic1#GENERIC1", 85 HasReplicas: false, 86 ReplicationType: "", 87 TaskState: "", 88 SnapshotSupport: true, 89 CreateShareFromSnapshotSupport: true, 90 Name: "my_test_share", 91 CreatedAt: time.Date(2015, time.September, 18, 10, 25, 24, 0, time.UTC), 92 ShareProto: "NFS", 93 VolumeType: "default", 94 SourceCgsnapshotMemberID: "", 95 IsPublic: true, 96 Links: []map[string]string{ 97 { 98 "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", 99 "rel": "self", 100 }, 101 { 102 "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", 103 "rel": "bookmark", 104 }, 105 }, 106 }) 107 } 108 109 func TestListDetail(t *testing.T) { 110 th.SetupHTTP() 111 defer th.TeardownHTTP() 112 113 MockListDetailResponse(t) 114 115 allPages, err := shares.ListDetail(client.ServiceClient(), &shares.ListOpts{}).AllPages() 116 117 th.AssertNoErr(t, err) 118 119 actual, err := shares.ExtractShares(allPages) 120 th.AssertNoErr(t, err) 121 122 th.AssertDeepEquals(t, actual, []shares.Share{ 123 { 124 AvailabilityZone: "nova", 125 ShareNetworkID: "713df749-aac0-4a54-af52-10f6c991e80c", 126 ShareServerID: "e268f4aa-d571-43dd-9ab3-f49ad06ffaef", 127 SnapshotID: "", 128 ID: shareID, 129 Size: 1, 130 ShareType: "25747776-08e5-494f-ab40-a64b9d20d8f7", 131 ShareTypeName: "default", 132 ConsistencyGroupID: "9397c191-8427-4661-a2e8-b23820dc01d4", 133 ProjectID: "16e1ab15c35a457e9c2b2aa189f544e1", 134 Metadata: map[string]string{ 135 "project": "my_app", 136 "aim": "doc", 137 }, 138 Status: "available", 139 Description: "My custom share London", 140 Host: "manila2@generic1#GENERIC1", 141 HasReplicas: false, 142 ReplicationType: "", 143 TaskState: "", 144 SnapshotSupport: true, 145 CreateShareFromSnapshotSupport: true, 146 Name: "my_test_share", 147 CreatedAt: time.Date(2015, time.September, 18, 10, 25, 24, 0, time.UTC), 148 ShareProto: "NFS", 149 VolumeType: "default", 150 SourceCgsnapshotMemberID: "", 151 IsPublic: true, 152 Links: []map[string]string{ 153 { 154 "href": "http://172.18.198.54:8786/v2/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", 155 "rel": "self", 156 }, 157 { 158 "href": "http://172.18.198.54:8786/16e1ab15c35a457e9c2b2aa189f544e1/shares/011d21e2-fbc3-4e4a-9993-9ea223f73264", 159 "rel": "bookmark", 160 }, 161 }, 162 }, 163 }) 164 } 165 166 func TestListExportLocationsSuccess(t *testing.T) { 167 th.SetupHTTP() 168 defer th.TeardownHTTP() 169 170 MockListExportLocationsResponse(t) 171 172 c := client.ServiceClient() 173 // Client c must have Microversion set; minimum supported microversion for List Export Locations is 2.9 174 c.Microversion = "2.9" 175 176 s, err := shares.ListExportLocations(c, shareID).Extract() 177 178 th.AssertNoErr(t, err) 179 th.AssertDeepEquals(t, s, []shares.ExportLocation{ 180 { 181 Path: "127.0.0.1:/var/lib/manila/mnt/share-9a922036-ad26-4d27-b955-7a1e285fa74d", 182 ShareInstanceID: "011d21e2-fbc3-4e4a-9993-9ea223f73264", 183 IsAdminOnly: false, 184 ID: "80ed63fc-83bc-4afc-b881-da4a345ac83d", 185 Preferred: false, 186 }, 187 }) 188 } 189 190 func TestGetExportLocationSuccess(t *testing.T) { 191 th.SetupHTTP() 192 defer th.TeardownHTTP() 193 194 MockGetExportLocationResponse(t) 195 196 c := client.ServiceClient() 197 // Client c must have Microversion set; minimum supported microversion for Get Export Location is 2.9 198 c.Microversion = "2.9" 199 200 s, err := shares.GetExportLocation(c, shareID, "80ed63fc-83bc-4afc-b881-da4a345ac83d").Extract() 201 202 th.AssertNoErr(t, err) 203 th.AssertDeepEquals(t, s, &shares.ExportLocation{ 204 Path: "127.0.0.1:/var/lib/manila/mnt/share-9a922036-ad26-4d27-b955-7a1e285fa74d", 205 ShareInstanceID: "011d21e2-fbc3-4e4a-9993-9ea223f73264", 206 IsAdminOnly: false, 207 ID: "80ed63fc-83bc-4afc-b881-da4a345ac83d", 208 Preferred: false, 209 }) 210 } 211 212 func TestGrantAcessSuccess(t *testing.T) { 213 th.SetupHTTP() 214 defer th.TeardownHTTP() 215 216 MockGrantAccessResponse(t) 217 218 c := client.ServiceClient() 219 // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 220 c.Microversion = "2.7" 221 222 var grantAccessReq shares.GrantAccessOpts 223 grantAccessReq.AccessType = "ip" 224 grantAccessReq.AccessTo = "0.0.0.0/0" 225 grantAccessReq.AccessLevel = "rw" 226 227 s, err := shares.GrantAccess(c, shareID, grantAccessReq).Extract() 228 229 th.AssertNoErr(t, err) 230 th.AssertDeepEquals(t, s, &shares.AccessRight{ 231 ShareID: "011d21e2-fbc3-4e4a-9993-9ea223f73264", 232 AccessType: "ip", 233 AccessTo: "0.0.0.0/0", 234 AccessKey: "", 235 AccessLevel: "rw", 236 State: "new", 237 ID: "a2f226a5-cee8-430b-8a03-78a59bd84ee8", 238 }) 239 } 240 241 func TestRevokeAccessSuccess(t *testing.T) { 242 th.SetupHTTP() 243 defer th.TeardownHTTP() 244 245 MockRevokeAccessResponse(t) 246 247 c := client.ServiceClient() 248 // Client c must have Microversion set; minimum supported microversion for Revoke Access is 2.7 249 c.Microversion = "2.7" 250 251 options := &shares.RevokeAccessOpts{AccessID: "a2f226a5-cee8-430b-8a03-78a59bd84ee8"} 252 253 err := shares.RevokeAccess(c, shareID, options).ExtractErr() 254 th.AssertNoErr(t, err) 255 } 256 257 func TestListAccessRightsSuccess(t *testing.T) { 258 th.SetupHTTP() 259 defer th.TeardownHTTP() 260 261 MockListAccessRightsResponse(t) 262 263 c := client.ServiceClient() 264 // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 265 c.Microversion = "2.7" 266 267 s, err := shares.ListAccessRights(c, shareID).Extract() 268 269 th.AssertNoErr(t, err) 270 th.AssertDeepEquals(t, s, []shares.AccessRight{ 271 { 272 ShareID: "011d21e2-fbc3-4e4a-9993-9ea223f73264", 273 AccessType: "ip", 274 AccessTo: "0.0.0.0/0", 275 AccessKey: "", 276 AccessLevel: "rw", 277 State: "new", 278 ID: "a2f226a5-cee8-430b-8a03-78a59bd84ee8", 279 }, 280 }) 281 } 282 283 func TestExtendSuccess(t *testing.T) { 284 th.SetupHTTP() 285 defer th.TeardownHTTP() 286 287 MockExtendResponse(t) 288 289 c := client.ServiceClient() 290 // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 291 c.Microversion = "2.7" 292 293 err := shares.Extend(c, shareID, &shares.ExtendOpts{NewSize: 2}).ExtractErr() 294 th.AssertNoErr(t, err) 295 } 296 297 func TestShrinkSuccess(t *testing.T) { 298 th.SetupHTTP() 299 defer th.TeardownHTTP() 300 301 MockShrinkResponse(t) 302 303 c := client.ServiceClient() 304 // Client c must have Microversion set; minimum supported microversion for Grant Access is 2.7 305 c.Microversion = "2.7" 306 307 err := shares.Shrink(c, shareID, &shares.ShrinkOpts{NewSize: 1}).ExtractErr() 308 th.AssertNoErr(t, err) 309 } 310 311 func TestGetMetadataSuccess(t *testing.T) { 312 th.SetupHTTP() 313 defer th.TeardownHTTP() 314 315 MockGetMetadataResponse(t) 316 317 c := client.ServiceClient() 318 319 actual, err := shares.GetMetadata(c, shareID).Extract() 320 th.AssertNoErr(t, err) 321 th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) 322 } 323 324 func TestGetMetadatumSuccess(t *testing.T) { 325 th.SetupHTTP() 326 defer th.TeardownHTTP() 327 328 MockGetMetadatumResponse(t, "foo") 329 330 c := client.ServiceClient() 331 332 actual, err := shares.GetMetadatum(c, shareID, "foo").Extract() 333 th.AssertNoErr(t, err) 334 th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) 335 } 336 337 func TestSetMetadataSuccess(t *testing.T) { 338 th.SetupHTTP() 339 defer th.TeardownHTTP() 340 341 MockSetMetadataResponse(t) 342 343 c := client.ServiceClient() 344 345 actual, err := shares.SetMetadata(c, shareID, &shares.SetMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() 346 th.AssertNoErr(t, err) 347 th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) 348 } 349 350 func TestUpdateMetadataSuccess(t *testing.T) { 351 th.SetupHTTP() 352 defer th.TeardownHTTP() 353 354 MockUpdateMetadataResponse(t) 355 356 c := client.ServiceClient() 357 358 actual, err := shares.UpdateMetadata(c, shareID, &shares.UpdateMetadataOpts{Metadata: map[string]string{"foo": "bar"}}).Extract() 359 th.AssertNoErr(t, err) 360 th.AssertDeepEquals(t, map[string]string{"foo": "bar"}, actual) 361 } 362 363 func TestUnsetMetadataSuccess(t *testing.T) { 364 th.SetupHTTP() 365 defer th.TeardownHTTP() 366 367 MockDeleteMetadatumResponse(t, "foo") 368 369 c := client.ServiceClient() 370 371 err := shares.DeleteMetadatum(c, shareID, "foo").ExtractErr() 372 th.AssertNoErr(t, err) 373 } 374 375 func TestRevertSuccess(t *testing.T) { 376 th.SetupHTTP() 377 defer th.TeardownHTTP() 378 379 MockRevertResponse(t) 380 381 c := client.ServiceClient() 382 // Client c must have Microversion set; minimum supported microversion for Revert is 2.27 383 c.Microversion = "2.27" 384 385 err := shares.Revert(c, shareID, &shares.RevertOpts{SnapshotID: "ddeac769-9742-497f-b985-5bcfa94a3fd6"}).ExtractErr() 386 th.AssertNoErr(t, err) 387 } 388 389 func TestResetStatusSuccess(t *testing.T) { 390 th.SetupHTTP() 391 defer th.TeardownHTTP() 392 393 MockResetStatusResponse(t) 394 395 c := client.ServiceClient() 396 // Client c must have Microversion set; minimum supported microversion for ResetStatus is 2.7 397 c.Microversion = "2.7" 398 399 err := shares.ResetStatus(c, shareID, &shares.ResetStatusOpts{Status: "error"}).ExtractErr() 400 th.AssertNoErr(t, err) 401 } 402 403 func TestForceDeleteSuccess(t *testing.T) { 404 th.SetupHTTP() 405 defer th.TeardownHTTP() 406 407 MockForceDeleteResponse(t) 408 409 c := client.ServiceClient() 410 // Client c must have Microversion set; minimum supported microversion for ForceDelete is 2.7 411 c.Microversion = "2.7" 412 413 err := shares.ForceDelete(c, shareID).ExtractErr() 414 th.AssertNoErr(t, err) 415 } 416 417 func TestUnmanageSuccess(t *testing.T) { 418 th.SetupHTTP() 419 defer th.TeardownHTTP() 420 421 MockUnmanageResponse(t) 422 423 c := client.ServiceClient() 424 // Client c must have Microversion set; minimum supported microversion for Unmanage is 2.7 425 c.Microversion = "2.7" 426 427 err := shares.Unmanage(c, shareID).ExtractErr() 428 th.AssertNoErr(t, err) 429 }