github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/networking/v2/peerings/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 fake "github.com/chnsz/golangsdk/openstack/networking/v2/common" 9 "github.com/chnsz/golangsdk/openstack/networking/v2/peerings" 10 th "github.com/chnsz/golangsdk/testhelper" 11 ) 12 13 func TestListVpcPeerings(t *testing.T) { 14 th.SetupHTTP() 15 defer th.TeardownHTTP() 16 17 th.Mux.HandleFunc("/v2.0/vpc/peerings", func(w http.ResponseWriter, r *http.Request) { 18 th.TestMethod(t, r, "GET") 19 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 20 21 w.Header().Add("Content-Type", "application/json") 22 w.WriteHeader(http.StatusOK) 23 24 fmt.Fprintf(w, ` 25 { 26 "peerings": [ 27 { 28 "status": "PENDING_ACCEPTANCE", 29 "accept_vpc_info": { 30 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 31 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 32 }, 33 "request_vpc_info": { 34 "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", 35 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 36 }, 37 "name": "test_peering", 38 "description": "this is a description", 39 "id": "22a3e5b1-1150-408e-99f7-5e25a391cead" 40 }, 41 { 42 "status": "ACTIVE", 43 "accept_vpc_info": { 44 "vpc_id": "93e94d8e-31a6-4c22-bdf7-8b23c7b67329", 45 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 46 }, 47 "request_vpc_info": { 48 "vpc_id": "b0d686e5-312c-4279-b69c-eedbc779ae69", 49 "tenant_id": "bf74229f30c0421fae270386a43315ee" 50 }, 51 "name": "peering-7750-sunway", 52 "id": "283aabd7-dab4-409d-96ff-6c878b9a0219" 53 }, 54 { 55 "status": "ACTIVE", 56 "accept_vpc_info": { 57 "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", 58 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 59 }, 60 "request_vpc_info": { 61 "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c", 62 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 63 }, 64 "name": "test", 65 "id": "71d64714-bd4e-44c4-917a-d8d1239e5292" 66 } 67 ] 68 }`) 69 }) 70 71 //count := 0 72 actual, err := peerings.List(fake.ServiceClient(), peerings.ListOpts{}) 73 74 if err != nil { 75 t.Errorf("Failed to extract vpc_peering_connections: %v", err) 76 } 77 78 expected := []peerings.Peering{ 79 { 80 ID: "22a3e5b1-1150-408e-99f7-5e25a391cead", 81 Name: "test_peering", 82 Status: "PENDING_ACCEPTANCE", 83 Description: "this is a description", 84 RequestVpcInfo: peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, 85 AcceptVpcInfo: peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, 86 }, 87 { 88 ID: "283aabd7-dab4-409d-96ff-6c878b9a0219", 89 Name: "peering-7750-sunway", 90 Status: "ACTIVE", 91 RequestVpcInfo: peerings.VpcInfo{VpcId: "b0d686e5-312c-4279-b69c-eedbc779ae69", TenantId: "bf74229f30c0421fae270386a43315ee"}, 92 AcceptVpcInfo: peerings.VpcInfo{VpcId: "93e94d8e-31a6-4c22-bdf7-8b23c7b67329", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, 93 }, 94 { 95 ID: "71d64714-bd4e-44c4-917a-d8d1239e5292", 96 Name: "test", 97 Status: "ACTIVE", 98 RequestVpcInfo: peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, 99 AcceptVpcInfo: peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, 100 }, 101 } 102 103 th.AssertDeepEquals(t, expected, actual) 104 } 105 106 func TestCreateVpcPeeringConnection(t *testing.T) { 107 th.SetupHTTP() 108 defer th.TeardownHTTP() 109 110 th.Mux.HandleFunc("/v2.0/vpc/peerings", func(w http.ResponseWriter, r *http.Request) { 111 th.TestMethod(t, r, "POST") 112 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 113 th.TestHeader(t, r, "Content-Type", "application/json") 114 th.TestHeader(t, r, "Accept", "application/json") 115 th.TestJSONRequest(t, r, ` 116 { 117 "peering": { 118 "name": "test", 119 "description": "this is a test", 120 "request_vpc_info": { 121 "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c" 122 }, 123 "accept_vpc_info": { 124 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 125 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 126 } 127 } 128 }`) 129 130 w.Header().Add("Content-Type", "application/json") 131 w.WriteHeader(http.StatusCreated) 132 133 fmt.Fprintf(w, ` 134 { 135 "peering": { 136 "status": "PENDING_ACCEPTANCE", 137 "accept_vpc_info": { 138 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 139 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 140 }, 141 "request_vpc_info": { 142 "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c", 143 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 144 }, 145 "name": "test", 146 "description": "this is a test", 147 "id": "4e6ca99d-8344-4eb2-b2c9-b77368db3704" 148 } 149 }`) 150 }) 151 152 options := peerings.CreateOpts{ 153 Name: "test", 154 Description: "this is a test", 155 RequestVpcInfo: peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c"}, 156 AcceptVpcInfo: peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, 157 } 158 n, err := peerings.Create(fake.ServiceClient(), options).Extract() 159 th.AssertNoErr(t, err) 160 th.AssertEquals(t, "test", n.Name) 161 th.AssertEquals(t, "this is a test", n.Description) 162 th.AssertEquals(t, "4e6ca99d-8344-4eb2-b2c9-b77368db3704", n.ID) 163 th.AssertEquals(t, peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo) 164 th.AssertEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo) 165 th.AssertEquals(t, "PENDING_ACCEPTANCE", n.Status) 166 } 167 168 func TestUpdateVpcPeeringConnection(t *testing.T) { 169 th.SetupHTTP() 170 defer th.TeardownHTTP() 171 172 th.Mux.HandleFunc("/v2.0/vpc/peerings/4e6ca99d-8344-4eb2-b2c9-b77368db3704", func(w http.ResponseWriter, r *http.Request) { 173 th.TestMethod(t, r, "PUT") 174 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 175 th.TestHeader(t, r, "Content-Type", "application/json") 176 th.TestHeader(t, r, "Accept", "application/json") 177 th.TestJSONRequest(t, r, ` 178 { 179 "peering": { 180 "name": "test2", 181 "description": "this is a test2" 182 } 183 }`) 184 185 w.Header().Add("Content-Type", "application/json") 186 w.WriteHeader(http.StatusOK) 187 188 fmt.Fprintf(w, ` 189 { 190 "peering": { 191 "status": "PENDING_ACCEPTANCE", 192 "accept_vpc_info": { 193 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 194 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 195 }, 196 "request_vpc_info": { 197 "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c", 198 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 199 }, 200 "name": "test2", 201 "description": "this is a test2", 202 "id": "4e6ca99d-8344-4eb2-b2c9-b77368db3704" 203 } 204 }`) 205 }) 206 207 desc := "this is a test2" 208 options := peerings.UpdateOpts{ 209 Name: "test2", 210 Description: &desc, 211 } 212 213 n, err := peerings.Update(fake.ServiceClient(), "4e6ca99d-8344-4eb2-b2c9-b77368db3704", options).Extract() 214 th.AssertNoErr(t, err) 215 th.AssertEquals(t, "test2", n.Name) 216 th.AssertEquals(t, desc, n.Description) 217 th.AssertEquals(t, "4e6ca99d-8344-4eb2-b2c9-b77368db3704", n.ID) 218 th.AssertEquals(t, peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo) 219 th.AssertEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo) 220 th.AssertEquals(t, "PENDING_ACCEPTANCE", n.Status) 221 } 222 223 func TestDeleteVpcPeeringConnection(t *testing.T) { 224 th.SetupHTTP() 225 defer th.TeardownHTTP() 226 227 th.Mux.HandleFunc("/v2.0/vpc/peerings/4e6ca99d-8344-4eb2-b2c9-b77368db3704", func(w http.ResponseWriter, r *http.Request) { 228 th.TestMethod(t, r, "DELETE") 229 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 230 w.WriteHeader(http.StatusNoContent) 231 }) 232 233 res := peerings.Delete(fake.ServiceClient(), "4e6ca99d-8344-4eb2-b2c9-b77368db3704") 234 th.AssertNoErr(t, res.Err) 235 } 236 237 func TestAcceptVpcPeering(t *testing.T) { 238 239 th.SetupHTTP() 240 defer th.TeardownHTTP() 241 242 th.Mux.HandleFunc("/v2.0/vpc/peerings/22a3e5b1-1150-408e-99f7-5e25a391cead/accept", func(w http.ResponseWriter, r *http.Request) { 243 th.TestMethod(t, r, "PUT") 244 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 245 th.TestHeader(t, r, "Accept", "application/json") 246 247 w.Header().Add("Content-Type", "application/json") 248 w.WriteHeader(http.StatusOK) 249 250 fmt.Fprintf(w, ` { 251 "status": "ACTIVE", 252 "name": "test_peering", 253 "tenant_id": "17fbda95add24720a4038ba4b1c705ed", 254 "request_vpc_info": { 255 "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", 256 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 257 }, 258 "accept_vpc_info": { 259 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 260 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 261 }, 262 "id": "22a3e5b1-1150-408e-99f7-5e25a391cead" 263 } 264 `) 265 }) 266 267 n, err := peerings.Accept(fake.ServiceClient(), "22a3e5b1-1150-408e-99f7-5e25a391cead").ExtractResult() 268 th.AssertNoErr(t, err) 269 th.AssertEquals(t, "22a3e5b1-1150-408e-99f7-5e25a391cead", n.ID) 270 th.AssertEquals(t, "test_peering", n.Name) 271 th.AssertEquals(t, "ACTIVE", n.Status) 272 th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo) 273 th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo) 274 275 } 276 277 func TestRejectVpcPeering(t *testing.T) { 278 279 th.SetupHTTP() 280 defer th.TeardownHTTP() 281 282 th.Mux.HandleFunc("/v2.0/vpc/peerings/22a3e5b1-1150-408e-99f7-5e25a391cead/reject", func(w http.ResponseWriter, r *http.Request) { 283 th.TestMethod(t, r, "PUT") 284 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 285 th.TestHeader(t, r, "Accept", "application/json") 286 287 w.Header().Add("Content-Type", "application/json") 288 w.WriteHeader(http.StatusOK) 289 290 fmt.Fprintf(w, ` { 291 "status": "ACTIVE", 292 "name": "test_peering", 293 "tenant_id": "17fbda95add24720a4038ba4b1c705ed", 294 "request_vpc_info": { 295 "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", 296 "tenant_id": "87a56a48977e42068f70ad3280c50f0e" 297 }, 298 "accept_vpc_info": { 299 "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25", 300 "tenant_id": "17fbda95add24720a4038ba4b1c705ed" 301 }, 302 "id": "22a3e5b1-1150-408e-99f7-5e25a391cead" 303 } 304 `) 305 }) 306 307 n, err := peerings.Reject(fake.ServiceClient(), "22a3e5b1-1150-408e-99f7-5e25a391cead").ExtractResult() 308 th.AssertNoErr(t, err) 309 th.AssertEquals(t, "22a3e5b1-1150-408e-99f7-5e25a391cead", n.ID) 310 th.AssertEquals(t, "test_peering", n.Name) 311 th.AssertEquals(t, "ACTIVE", n.Status) 312 th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo) 313 th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo) 314 315 }