github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/extensions/networkipavailabilities/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"net/http"
     7  	"testing"
     8  
     9  	"github.com/vnpaycloud-console/gophercloud/v2"
    10  	fake "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/common"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/extensions/networkipavailabilities"
    12  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    13  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    14  )
    15  
    16  func TestList(t *testing.T) {
    17  	th.SetupHTTP()
    18  	defer th.TeardownHTTP()
    19  
    20  	th.Mux.HandleFunc("/v2.0/network-ip-availabilities", func(w http.ResponseWriter, r *http.Request) {
    21  		th.TestMethod(t, r, "GET")
    22  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    23  
    24  		w.Header().Add("Content-Type", "application/json")
    25  		w.WriteHeader(http.StatusOK)
    26  
    27  		fmt.Fprint(w, NetworkIPAvailabilityListResult)
    28  	})
    29  
    30  	count := 0
    31  
    32  	err := networkipavailabilities.List(fake.ServiceClient(), networkipavailabilities.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    33  		count++
    34  		actual, err := networkipavailabilities.ExtractNetworkIPAvailabilities(page)
    35  		if err != nil {
    36  			t.Errorf("Failed to extract network IP availabilities: %v", err)
    37  			return false, nil
    38  		}
    39  
    40  		expected := []networkipavailabilities.NetworkIPAvailability{
    41  			NetworkIPAvailability1,
    42  			NetworkIPAvailability2,
    43  		}
    44  
    45  		th.CheckDeepEquals(t, expected, actual)
    46  
    47  		return true, nil
    48  	})
    49  
    50  	th.AssertNoErr(t, err)
    51  
    52  	if count != 1 {
    53  		t.Errorf("Expected 1 page, got %d", count)
    54  	}
    55  }
    56  
    57  func TestGet(t *testing.T) {
    58  	th.SetupHTTP()
    59  	defer th.TeardownHTTP()
    60  
    61  	th.Mux.HandleFunc("/v2.0/network-ip-availabilities/cf11ab78-2302-49fa-870f-851a08c7afb8", func(w http.ResponseWriter, r *http.Request) {
    62  		th.TestMethod(t, r, "GET")
    63  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    64  
    65  		w.Header().Add("Content-Type", "application/json")
    66  		w.WriteHeader(http.StatusOK)
    67  
    68  		fmt.Fprint(w, NetworkIPAvailabilityGetResult)
    69  	})
    70  
    71  	s, err := networkipavailabilities.Get(context.TODO(), fake.ServiceClient(), "cf11ab78-2302-49fa-870f-851a08c7afb8").Extract()
    72  	th.AssertNoErr(t, err)
    73  
    74  	th.AssertEquals(t, s.NetworkID, "cf11ab78-2302-49fa-870f-851a08c7afb8")
    75  	th.AssertEquals(t, s.NetworkName, "public")
    76  	th.AssertEquals(t, s.ProjectID, "424e7cf0243c468ca61732ba45973b3e")
    77  	th.AssertEquals(t, s.TenantID, "424e7cf0243c468ca61732ba45973b3e")
    78  	th.AssertEquals(t, s.TotalIPs, "253")
    79  	th.AssertEquals(t, s.UsedIPs, "3")
    80  	th.AssertDeepEquals(t, s.SubnetIPAvailabilities, []networkipavailabilities.SubnetIPAvailability{
    81  		{
    82  			SubnetID:   "4afe6e5f-9649-40db-b18f-64c7ead942bd",
    83  			SubnetName: "public-subnet",
    84  			CIDR:       "203.0.113.0/24",
    85  			IPVersion:  int(gophercloud.IPv4),
    86  			TotalIPs:   "253",
    87  			UsedIPs:    "3",
    88  		},
    89  	})
    90  }