github.com/gophercloud/gophercloud@v1.11.0/openstack/baremetal/v1/ports/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "testing" 5 6 "github.com/gophercloud/gophercloud/openstack/baremetal/v1/ports" 7 "github.com/gophercloud/gophercloud/pagination" 8 th "github.com/gophercloud/gophercloud/testhelper" 9 "github.com/gophercloud/gophercloud/testhelper/client" 10 ) 11 12 func TestListDetailPorts(t *testing.T) { 13 th.SetupHTTP() 14 defer th.TeardownHTTP() 15 HandlePortListDetailSuccessfully(t) 16 17 pages := 0 18 err := ports.ListDetail(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { 19 pages++ 20 21 actual, err := ports.ExtractPorts(page) 22 if err != nil { 23 return false, err 24 } 25 26 if len(actual) != 2 { 27 t.Fatalf("Expected 2 ports, got %d", len(actual)) 28 } 29 th.CheckDeepEquals(t, PortBar, actual[0]) 30 th.CheckDeepEquals(t, PortFoo, actual[1]) 31 32 return true, nil 33 }) 34 35 th.AssertNoErr(t, err) 36 37 if pages != 1 { 38 t.Errorf("Expected 1 page, saw %d", pages) 39 } 40 } 41 42 func TestListPorts(t *testing.T) { 43 th.SetupHTTP() 44 defer th.TeardownHTTP() 45 HandlePortListSuccessfully(t) 46 47 pages := 0 48 err := ports.List(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { 49 pages++ 50 51 actual, err := ports.ExtractPorts(page) 52 if err != nil { 53 return false, err 54 } 55 56 if len(actual) != 2 { 57 t.Fatalf("Expected 2 ports, got %d", len(actual)) 58 } 59 th.AssertEquals(t, "3abe3f36-9708-4e9f-b07e-0f898061d3a7", actual[0].UUID) 60 th.AssertEquals(t, "f2845e11-dbd4-4728-a8c0-30d19f48924a", actual[1].UUID) 61 62 return true, nil 63 }) 64 65 th.AssertNoErr(t, err) 66 67 if pages != 1 { 68 t.Errorf("Expected 1 page, saw %d", pages) 69 } 70 } 71 72 func TestListOpts(t *testing.T) { 73 // Detail cannot take Fields 74 opts := ports.ListOpts{ 75 Fields: []string{"uuid", "address"}, 76 } 77 78 _, err := opts.ToPortListDetailQuery() 79 th.AssertEquals(t, err.Error(), "fields is not a valid option when getting a detailed listing of ports") 80 81 // Regular ListOpts can 82 query, err := opts.ToPortListQuery() 83 th.AssertEquals(t, query, "?fields=uuid&fields=address") 84 th.AssertNoErr(t, err) 85 } 86 87 func TestCreatePort(t *testing.T) { 88 th.SetupHTTP() 89 defer th.TeardownHTTP() 90 HandlePortCreationSuccessfully(t, SinglePortBody) 91 92 iTrue := true 93 actual, err := ports.Create(client.ServiceClient(), ports.CreateOpts{ 94 NodeUUID: "ddd06a60-b91e-4ab4-a6e7-56c0b25b6086", 95 Address: "52:54:00:4d:87:e6", 96 PXEEnabled: &iTrue, 97 }).Extract() 98 th.AssertNoErr(t, err) 99 100 th.CheckDeepEquals(t, PortFoo, *actual) 101 } 102 103 func TestDeletePort(t *testing.T) { 104 th.SetupHTTP() 105 defer th.TeardownHTTP() 106 HandlePortDeletionSuccessfully(t) 107 108 res := ports.Delete(client.ServiceClient(), "3abe3f36-9708-4e9f-b07e-0f898061d3a7") 109 th.AssertNoErr(t, res.Err) 110 } 111 112 func TestGetPort(t *testing.T) { 113 th.SetupHTTP() 114 defer th.TeardownHTTP() 115 HandlePortGetSuccessfully(t) 116 117 c := client.ServiceClient() 118 actual, err := ports.Get(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a").Extract() 119 if err != nil { 120 t.Fatalf("Unexpected Get error: %v", err) 121 } 122 123 th.CheckDeepEquals(t, PortFoo, *actual) 124 } 125 126 func TestUpdatePort(t *testing.T) { 127 th.SetupHTTP() 128 defer th.TeardownHTTP() 129 HandlePortUpdateSuccessfully(t, SinglePortBody) 130 131 c := client.ServiceClient() 132 actual, err := ports.Update(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a", ports.UpdateOpts{ 133 ports.UpdateOperation{ 134 Op: ports.ReplaceOp, 135 Path: "/address", 136 Value: "22:22:22:22:22:22", 137 }, 138 }).Extract() 139 if err != nil { 140 t.Fatalf("Unexpected Update error: %v", err) 141 } 142 143 th.CheckDeepEquals(t, PortFoo, *actual) 144 }