github.com/gophercloud/gophercloud@v1.11.0/openstack/networking/v2/extensions/dns/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "testing" 5 "time" 6 7 fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common" 8 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/dns" 9 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" 10 "github.com/gophercloud/gophercloud/openstack/networking/v2/networks" 11 "github.com/gophercloud/gophercloud/openstack/networking/v2/ports" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 type PortDNS struct { 16 ports.Port 17 dns.PortDNSExt 18 } 19 20 type FloatingIPDNS struct { 21 floatingips.FloatingIP 22 dns.FloatingIPDNSExt 23 } 24 25 type NetworkDNS struct { 26 networks.Network 27 dns.NetworkDNSExt 28 } 29 30 var createdTime, _ = time.Parse(time.RFC3339, "2019-06-30T04:15:37Z") 31 var updatedTime, _ = time.Parse(time.RFC3339, "2019-06-30T05:18:49Z") 32 33 func TestPortList(t *testing.T) { 34 th.SetupHTTP() 35 defer th.TeardownHTTP() 36 37 PortHandleListSuccessfully(t) 38 39 var actual []PortDNS 40 41 expected := []PortDNS{ 42 { 43 Port: ports.Port{ 44 Status: "ACTIVE", 45 Name: "", 46 AdminStateUp: true, 47 NetworkID: "70c1db1f-b701-45bd-96e0-a313ee3430b3", 48 TenantID: "", 49 DeviceOwner: "network:router_gateway", 50 MACAddress: "fa:16:3e:58:42:ed", 51 FixedIPs: []ports.IP{ 52 { 53 SubnetID: "008ba151-0b8c-4a67-98b5-0d2b87666062", 54 IPAddress: "172.24.4.2", 55 }, 56 }, 57 ID: "d80b1a3b-4fc1-49f3-952e-1e2ab7081d8b", 58 SecurityGroups: []string{}, 59 DeviceID: "9ae135f4-b6e0-4dad-9e91-3c223e385824", 60 CreatedAt: time.Date(2019, time.June, 30, 4, 15, 37, 0, time.UTC), 61 UpdatedAt: time.Date(2019, time.June, 30, 5, 18, 49, 0, time.UTC), 62 }, 63 PortDNSExt: dns.PortDNSExt{ 64 DNSName: "test-port", 65 DNSAssignment: []map[string]string{ 66 { 67 "hostname": "test-port", 68 "ip_address": "172.24.4.2", 69 "fqdn": "test-port.openstack.local.", 70 }, 71 }, 72 }, 73 }, 74 } 75 76 var listOptsBuilder ports.ListOptsBuilder 77 listOptsBuilder = dns.PortListOptsExt{ 78 ListOptsBuilder: ports.ListOpts{}, 79 DNSName: "test-port", 80 } 81 82 allPages, err := ports.List(fake.ServiceClient(), listOptsBuilder).AllPages() 83 th.AssertNoErr(t, err) 84 85 err = ports.ExtractPortsInto(allPages, &actual) 86 th.AssertNoErr(t, err) 87 88 th.CheckDeepEquals(t, expected, actual) 89 } 90 91 func TestPortGet(t *testing.T) { 92 th.SetupHTTP() 93 defer th.TeardownHTTP() 94 95 PortHandleGet(t) 96 97 var s PortDNS 98 99 err := ports.Get(fake.ServiceClient(), "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2").ExtractInto(&s) 100 th.AssertNoErr(t, err) 101 102 th.AssertEquals(t, s.Status, "ACTIVE") 103 th.AssertEquals(t, s.Name, "") 104 th.AssertEquals(t, s.AdminStateUp, true) 105 th.AssertEquals(t, s.NetworkID, "a87cc70a-3e15-4acf-8205-9b711a3531b7") 106 th.AssertEquals(t, s.TenantID, "7e02058126cc4950b75f9970368ba177") 107 th.AssertEquals(t, s.DeviceOwner, "network:router_interface") 108 th.AssertEquals(t, s.MACAddress, "fa:16:3e:23:fd:d7") 109 th.AssertDeepEquals(t, s.FixedIPs, []ports.IP{ 110 {SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.1"}, 111 }) 112 th.AssertEquals(t, s.ID, "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2") 113 th.AssertDeepEquals(t, s.SecurityGroups, []string{}) 114 th.AssertEquals(t, s.DeviceID, "5e3898d7-11be-483e-9732-b2f5eccd2b2e") 115 116 th.AssertEquals(t, s.DNSName, "test-port") 117 th.AssertDeepEquals(t, s.DNSAssignment, []map[string]string{ 118 { 119 "hostname": "test-port", 120 "ip_address": "172.24.4.2", 121 "fqdn": "test-port.openstack.local.", 122 }, 123 }) 124 } 125 126 func TestPortCreate(t *testing.T) { 127 th.SetupHTTP() 128 defer th.TeardownHTTP() 129 130 PortHandleCreate(t) 131 132 var s PortDNS 133 134 asu := true 135 portCreateOpts := ports.CreateOpts{ 136 Name: "private-port", 137 AdminStateUp: &asu, 138 NetworkID: "a87cc70a-3e15-4acf-8205-9b711a3531b7", 139 FixedIPs: []ports.IP{ 140 {SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"}, 141 }, 142 SecurityGroups: &[]string{"foo"}, 143 } 144 145 createOpts := dns.PortCreateOptsExt{ 146 CreateOptsBuilder: portCreateOpts, 147 DNSName: "test-port", 148 } 149 150 err := ports.Create(fake.ServiceClient(), createOpts).ExtractInto(&s) 151 th.AssertNoErr(t, err) 152 153 th.AssertEquals(t, s.Status, "DOWN") 154 th.AssertEquals(t, s.Name, "private-port") 155 th.AssertEquals(t, s.AdminStateUp, true) 156 th.AssertEquals(t, s.NetworkID, "a87cc70a-3e15-4acf-8205-9b711a3531b7") 157 th.AssertEquals(t, s.TenantID, "d6700c0c9ffa4f1cb322cd4a1f3906fa") 158 th.AssertEquals(t, s.DeviceOwner, "") 159 th.AssertEquals(t, s.MACAddress, "fa:16:3e:c9:cb:f0") 160 th.AssertDeepEquals(t, s.FixedIPs, []ports.IP{ 161 {SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.2"}, 162 }) 163 th.AssertEquals(t, s.ID, "65c0ee9f-d634-4522-8954-51021b570b0d") 164 th.AssertDeepEquals(t, s.SecurityGroups, []string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"}) 165 166 th.AssertEquals(t, s.DNSName, "test-port") 167 th.AssertDeepEquals(t, s.DNSAssignment, []map[string]string{ 168 { 169 "hostname": "test-port", 170 "ip_address": "172.24.4.2", 171 "fqdn": "test-port.openstack.local.", 172 }, 173 }) 174 } 175 176 func TestPortRequiredCreateOpts(t *testing.T) { 177 res := ports.Create(fake.ServiceClient(), dns.PortCreateOptsExt{CreateOptsBuilder: ports.CreateOpts{}}) 178 if res.Err == nil { 179 t.Fatalf("Expected error, got none") 180 } 181 } 182 183 func TestPortUpdate(t *testing.T) { 184 th.SetupHTTP() 185 defer th.TeardownHTTP() 186 187 PortHandleUpdate(t) 188 189 var s PortDNS 190 191 name := "new_port_name" 192 portUpdateOpts := ports.UpdateOpts{ 193 Name: &name, 194 FixedIPs: []ports.IP{ 195 {SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"}, 196 }, 197 SecurityGroups: &[]string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"}, 198 } 199 200 dnsName := "test-port1" 201 updateOpts := dns.PortUpdateOptsExt{ 202 UpdateOptsBuilder: portUpdateOpts, 203 DNSName: &dnsName, 204 } 205 206 err := ports.Update(fake.ServiceClient(), "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&s) 207 th.AssertNoErr(t, err) 208 209 th.AssertEquals(t, s.Name, "new_port_name") 210 th.AssertDeepEquals(t, s.FixedIPs, []ports.IP{ 211 {SubnetID: "a0304c3a-4f08-4c43-88af-d796509c97d2", IPAddress: "10.0.0.3"}, 212 }) 213 th.AssertDeepEquals(t, s.SecurityGroups, []string{"f0ac4394-7e4a-4409-9701-ba8be283dbc3"}) 214 th.AssertEquals(t, s.DNSName, "test-port1") 215 th.AssertDeepEquals(t, s.DNSAssignment, []map[string]string{ 216 { 217 "hostname": "test-port1", 218 "ip_address": "172.24.4.2", 219 "fqdn": "test-port1.openstack.local.", 220 }, 221 }) 222 } 223 224 func TestFloatingIPGet(t *testing.T) { 225 th.SetupHTTP() 226 defer th.TeardownHTTP() 227 228 FloatingIPHandleGet(t) 229 230 var actual FloatingIPDNS 231 err := floatingips.Get(fake.ServiceClient(), "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e").ExtractInto(&actual) 232 th.AssertNoErr(t, err) 233 234 expected := FloatingIPDNS{ 235 FloatingIP: floatingips.FloatingIP{ 236 FloatingNetworkID: "6d67c30a-ddb4-49a1-bec3-a65b286b4170", 237 FixedIP: "", 238 FloatingIP: "192.0.0.4", 239 TenantID: "017d8de156df4177889f31a9bd6edc00", 240 CreatedAt: createdTime, 241 UpdatedAt: updatedTime, 242 Status: "DOWN", 243 PortID: "", 244 ID: "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e", 245 RouterID: "1117c30a-ddb4-49a1-bec3-a65b286b4170", 246 }, 247 FloatingIPDNSExt: dns.FloatingIPDNSExt{ 248 DNSName: "test-fip", 249 DNSDomain: "local.", 250 }, 251 } 252 253 th.CheckDeepEquals(t, expected, actual) 254 } 255 256 func TestFloatingIPCreate(t *testing.T) { 257 th.SetupHTTP() 258 defer th.TeardownHTTP() 259 260 FloatingIPHandleCreate(t) 261 262 var actual FloatingIPDNS 263 264 fipCreateOpts := floatingips.CreateOpts{ 265 FloatingNetworkID: "6d67c30a-ddb4-49a1-bec3-a65b286b4170", 266 } 267 268 options := dns.FloatingIPCreateOptsExt{ 269 CreateOptsBuilder: fipCreateOpts, 270 DNSName: "test-fip", 271 DNSDomain: "local.", 272 } 273 274 err := floatingips.Create(fake.ServiceClient(), options).ExtractInto(&actual) 275 th.AssertNoErr(t, err) 276 277 expected := FloatingIPDNS{ 278 FloatingIP: floatingips.FloatingIP{ 279 FloatingNetworkID: "6d67c30a-ddb4-49a1-bec3-a65b286b4170", 280 FixedIP: "", 281 FloatingIP: "192.0.0.4", 282 TenantID: "017d8de156df4177889f31a9bd6edc00", 283 CreatedAt: createdTime, 284 UpdatedAt: updatedTime, 285 Status: "DOWN", 286 PortID: "", 287 ID: "2f95fd2b-9f6a-4e8e-9e9a-2cbe286cbf9e", 288 RouterID: "1117c30a-ddb4-49a1-bec3-a65b286b4170", 289 }, 290 FloatingIPDNSExt: dns.FloatingIPDNSExt{ 291 DNSName: "test-fip", 292 DNSDomain: "local.", 293 }, 294 } 295 296 th.CheckDeepEquals(t, expected, actual) 297 } 298 299 func TestNetworkGet(t *testing.T) { 300 th.SetupHTTP() 301 defer th.TeardownHTTP() 302 303 NetworkHandleGet(t) 304 305 var actual NetworkDNS 306 307 err := networks.Get(fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&actual) 308 th.AssertNoErr(t, err) 309 310 expected := NetworkDNS{ 311 Network: networks.Network{ 312 Name: "public", 313 Subnets: []string{"54d6f61d-db07-451c-9ab3-b9609b6b6f0b"}, 314 Status: "ACTIVE", 315 TenantID: "4fd44f30292945e481c7b8a0c8908869", 316 CreatedAt: createdTime, 317 UpdatedAt: updatedTime, 318 AdminStateUp: true, 319 Shared: true, 320 ID: "d32019d3-bc6e-4319-9c1d-6722fc136a22", 321 }, 322 NetworkDNSExt: dns.NetworkDNSExt{ 323 DNSDomain: "local.", 324 }, 325 } 326 327 th.CheckDeepEquals(t, expected, actual) 328 } 329 330 func TestNetworkCreate(t *testing.T) { 331 th.SetupHTTP() 332 defer th.TeardownHTTP() 333 334 NetworkHandleCreate(t) 335 336 var actual NetworkDNS 337 338 iTrue := true 339 networkCreateOpts := networks.CreateOpts{Name: "private", AdminStateUp: &iTrue} 340 createOpts := dns.NetworkCreateOptsExt{ 341 CreateOptsBuilder: networkCreateOpts, 342 DNSDomain: "local.", 343 } 344 345 err := networks.Create(fake.ServiceClient(), createOpts).ExtractInto(&actual) 346 th.AssertNoErr(t, err) 347 348 expected := NetworkDNS{ 349 Network: networks.Network{ 350 Name: "private", 351 Subnets: []string{"08eae331-0402-425a-923c-34f7cfe39c1b"}, 352 Status: "ACTIVE", 353 TenantID: "26a7980765d0414dbc1fc1f88cdb7e6e", 354 CreatedAt: createdTime, 355 UpdatedAt: updatedTime, 356 AdminStateUp: true, 357 Shared: false, 358 ID: "db193ab3-96e3-4cb3-8fc5-05f4296d0324", 359 }, 360 NetworkDNSExt: dns.NetworkDNSExt{ 361 DNSDomain: "local.", 362 }, 363 } 364 365 th.CheckDeepEquals(t, expected, actual) 366 } 367 368 func TestNetworkUpdate(t *testing.T) { 369 th.SetupHTTP() 370 defer th.TeardownHTTP() 371 372 NetworkHandleUpdate(t) 373 374 var actual NetworkDNS 375 376 name := "new_network_name" 377 networkUpdateOpts := networks.UpdateOpts{Name: &name, AdminStateUp: new(bool)} 378 updateOpts := dns.NetworkUpdateOptsExt{ 379 UpdateOptsBuilder: networkUpdateOpts, 380 DNSDomain: new(string), 381 } 382 383 err := networks.Update(fake.ServiceClient(), "db193ab3-96e3-4cb3-8fc5-05f4296d0324", updateOpts).ExtractInto(&actual) 384 th.AssertNoErr(t, err) 385 386 expected := NetworkDNS{ 387 Network: networks.Network{ 388 Name: "new_network_name", 389 Subnets: []string{"08eae331-0402-425a-923c-34f7cfe39c1b"}, 390 Status: "ACTIVE", 391 TenantID: "26a7980765d0414dbc1fc1f88cdb7e6e", 392 CreatedAt: createdTime, 393 UpdatedAt: updatedTime, 394 AdminStateUp: false, 395 Shared: false, 396 ID: "db193ab3-96e3-4cb3-8fc5-05f4296d0324", 397 }, 398 NetworkDNSExt: dns.NetworkDNSExt{ 399 DNSDomain: "", 400 }, 401 } 402 403 th.CheckDeepEquals(t, expected, actual) 404 }