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  }