github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/networking/v2/extensions/lbaas_v2/pools/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "testing" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 fake "github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/common" 8 "github.com/opentelekomcloud/gophertelekomcloud/openstack/networking/v2/extensions/lbaas_v2/pools" 9 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 10 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 11 ) 12 13 func TestListPools(t *testing.T) { 14 th.SetupHTTP() 15 defer th.TeardownHTTP() 16 HandlePoolListSuccessfully(t) 17 18 pages := 0 19 err := pools.List(fake.ServiceClient(), pools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { 20 pages++ 21 22 actual, err := pools.ExtractPools(page) 23 if err != nil { 24 return false, err 25 } 26 27 if len(actual) != 2 { 28 t.Fatalf("Expected 2 pools, got %d", len(actual)) 29 } 30 th.CheckDeepEquals(t, PoolWeb, actual[0]) 31 th.CheckDeepEquals(t, PoolDb, actual[1]) 32 33 return true, nil 34 }) 35 36 th.AssertNoErr(t, err) 37 38 if pages != 1 { 39 t.Errorf("Expected 1 page, saw %d", pages) 40 } 41 } 42 43 func TestListAllPools(t *testing.T) { 44 th.SetupHTTP() 45 defer th.TeardownHTTP() 46 HandlePoolListSuccessfully(t) 47 48 allPages, err := pools.List(fake.ServiceClient(), pools.ListOpts{}).AllPages() 49 th.AssertNoErr(t, err) 50 actual, err := pools.ExtractPools(allPages) 51 th.AssertNoErr(t, err) 52 th.CheckDeepEquals(t, PoolWeb, actual[0]) 53 th.CheckDeepEquals(t, PoolDb, actual[1]) 54 } 55 56 func TestCreatePool(t *testing.T) { 57 th.SetupHTTP() 58 defer th.TeardownHTTP() 59 HandlePoolCreationSuccessfully(t, SinglePoolBody) 60 61 actual, err := pools.Create(fake.ServiceClient(), pools.CreateOpts{ 62 LBMethod: pools.LBMethodRoundRobin, 63 Protocol: "HTTP", 64 Name: "Example pool", 65 TenantID: "2ffc6e22aae24e4795f87155d24c896f", 66 LoadbalancerID: "79e05663-7f03-45d2-a092-8b94062f22ab", 67 }).Extract() 68 th.AssertNoErr(t, err) 69 70 th.CheckDeepEquals(t, PoolDb, *actual) 71 } 72 73 func TestGetPool(t *testing.T) { 74 th.SetupHTTP() 75 defer th.TeardownHTTP() 76 HandlePoolGetSuccessfully(t) 77 78 client := fake.ServiceClient() 79 actual, err := pools.Get(client, "c3741b06-df4d-4715-b142-276b6bce75ab").Extract() 80 if err != nil { 81 t.Fatalf("Unexpected Get error: %v", err) 82 } 83 84 th.CheckDeepEquals(t, PoolDb, *actual) 85 } 86 87 func TestDeletePool(t *testing.T) { 88 th.SetupHTTP() 89 defer th.TeardownHTTP() 90 HandlePoolDeletionSuccessfully(t) 91 92 res := pools.Delete(fake.ServiceClient(), "c3741b06-df4d-4715-b142-276b6bce75ab") 93 th.AssertNoErr(t, res.Err) 94 } 95 96 func TestUpdatePool(t *testing.T) { 97 th.SetupHTTP() 98 defer th.TeardownHTTP() 99 HandlePoolUpdateSuccessfully(t) 100 101 client := fake.ServiceClient() 102 actual, err := pools.Update(client, "c3741b06-df4d-4715-b142-276b6bce75ab", pools.UpdateOpts{ 103 Name: "NewPoolName", 104 LBMethod: pools.LBMethodLeastConnections, 105 }).Extract() 106 if err != nil { 107 t.Fatalf("Unexpected Update error: %v", err) 108 } 109 110 th.CheckDeepEquals(t, PoolUpdated, *actual) 111 } 112 113 func TestRequiredPoolCreateOpts(t *testing.T) { 114 res := pools.Create(fake.ServiceClient(), pools.CreateOpts{}) 115 if res.Err == nil { 116 t.Fatalf("Expected error, got none") 117 } 118 res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ 119 LBMethod: "invalid", 120 Protocol: pools.ProtocolHTTPS, 121 LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", 122 }) 123 if res.Err == nil { 124 t.Fatalf("Expected error, but got none") 125 } 126 127 res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ 128 LBMethod: pools.LBMethodRoundRobin, 129 Protocol: "invalid", 130 LoadbalancerID: "69055154-f603-4a28-8951-7cc2d9e54a9a", 131 }) 132 if res.Err == nil { 133 t.Fatalf("Expected error, but got none") 134 } 135 136 res = pools.Create(fake.ServiceClient(), pools.CreateOpts{ 137 LBMethod: pools.LBMethodRoundRobin, 138 Protocol: pools.ProtocolHTTPS, 139 }) 140 if res.Err == nil { 141 t.Fatalf("Expected error, but got none") 142 } 143 } 144 145 func TestListMembers(t *testing.T) { 146 th.SetupHTTP() 147 defer th.TeardownHTTP() 148 HandleMemberListSuccessfully(t) 149 150 pages := 0 151 err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { 152 pages++ 153 154 actual, err := pools.ExtractMembers(page) 155 if err != nil { 156 return false, err 157 } 158 159 if len(actual) != 2 { 160 t.Fatalf("Expected 2 members, got %d", len(actual)) 161 } 162 th.CheckDeepEquals(t, MemberWeb, actual[0]) 163 th.CheckDeepEquals(t, MemberDb, actual[1]) 164 165 return true, nil 166 }) 167 168 th.AssertNoErr(t, err) 169 170 if pages != 1 { 171 t.Errorf("Expected 1 page, saw %d", pages) 172 } 173 } 174 175 func TestListAllMembers(t *testing.T) { 176 th.SetupHTTP() 177 defer th.TeardownHTTP() 178 HandleMemberListSuccessfully(t) 179 180 allPages, err := pools.ListMembers(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.ListMembersOpts{}).AllPages() 181 th.AssertNoErr(t, err) 182 actual, err := pools.ExtractMembers(allPages) 183 th.AssertNoErr(t, err) 184 th.CheckDeepEquals(t, MemberWeb, actual[0]) 185 th.CheckDeepEquals(t, MemberDb, actual[1]) 186 } 187 188 func TestCreateMember(t *testing.T) { 189 th.SetupHTTP() 190 defer th.TeardownHTTP() 191 HandleMemberCreationSuccessfully(t, SingleMemberBody) 192 193 actual, err := pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ 194 Name: "db", 195 SubnetID: "1981f108-3c48-48d2-b908-30f7d28532c9", 196 TenantID: "2ffc6e22aae24e4795f87155d24c896f", 197 Address: "10.0.2.11", 198 ProtocolPort: 80, 199 Weight: golangsdk.IntToPointer(10), 200 }).Extract() 201 th.AssertNoErr(t, err) 202 203 th.CheckDeepEquals(t, MemberDb, *actual) 204 } 205 206 func TestRequiredMemberCreateOpts(t *testing.T) { 207 res := pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{}) 208 if res.Err == nil { 209 t.Fatalf("Expected error, got none") 210 } 211 res = pools.CreateMember(fake.ServiceClient(), "", pools.CreateMemberOpts{Address: "1.2.3.4", ProtocolPort: 80}) 212 if res.Err == nil { 213 t.Fatalf("Expected error, but got none") 214 } 215 res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{ProtocolPort: 80}) 216 if res.Err == nil { 217 t.Fatalf("Expected error, but got none") 218 } 219 res = pools.CreateMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", pools.CreateMemberOpts{Address: "1.2.3.4"}) 220 if res.Err == nil { 221 t.Fatalf("Expected error, but got none") 222 } 223 } 224 225 func TestGetMember(t *testing.T) { 226 th.SetupHTTP() 227 defer th.TeardownHTTP() 228 HandleMemberGetSuccessfully(t) 229 230 client := fake.ServiceClient() 231 actual, err := pools.GetMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf").Extract() 232 if err != nil { 233 t.Fatalf("Unexpected Get error: %v", err) 234 } 235 236 th.CheckDeepEquals(t, MemberDb, *actual) 237 } 238 239 func TestDeleteMember(t *testing.T) { 240 th.SetupHTTP() 241 defer th.TeardownHTTP() 242 HandleMemberDeletionSuccessfully(t) 243 244 res := pools.DeleteMember(fake.ServiceClient(), "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf") 245 th.AssertNoErr(t, res.Err) 246 } 247 248 func TestUpdateMember(t *testing.T) { 249 th.SetupHTTP() 250 defer th.TeardownHTTP() 251 HandleMemberUpdateSuccessfully(t) 252 253 client := fake.ServiceClient() 254 actual, err := pools.UpdateMember(client, "332abe93-f488-41ba-870b-2ac66be7f853", "2a280670-c202-4b0b-a562-34077415aabf", pools.UpdateMemberOpts{ 255 Name: "newMemberName", 256 Weight: golangsdk.IntToPointer(4), 257 }).Extract() 258 if err != nil { 259 t.Fatalf("Unexpected Update error: %v", err) 260 } 261 262 th.CheckDeepEquals(t, MemberUpdated, *actual) 263 }