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

     1  package testing
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"net/http"
     7  	"testing"
     8  
     9  	fake "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/common"
    10  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/extensions/external"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/networks"
    12  	nettest "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/networks/testing"
    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/networks", 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, nettest.ListResponse)
    28  	})
    29  
    30  	type NetworkWithExternalExt struct {
    31  		networks.Network
    32  		external.NetworkExternalExt
    33  	}
    34  	var actual []NetworkWithExternalExt
    35  
    36  	allPages, err := networks.List(fake.ServiceClient(), networks.ListOpts{}).AllPages(context.TODO())
    37  	th.AssertNoErr(t, err)
    38  
    39  	err = networks.ExtractNetworksInto(allPages, &actual)
    40  	th.AssertNoErr(t, err)
    41  
    42  	th.AssertEquals(t, "d32019d3-bc6e-4319-9c1d-6722fc136a22", actual[0].ID)
    43  	th.AssertEquals(t, true, actual[0].External)
    44  }
    45  
    46  func TestGet(t *testing.T) {
    47  	th.SetupHTTP()
    48  	defer th.TeardownHTTP()
    49  
    50  	th.Mux.HandleFunc("/v2.0/networks/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) {
    51  		th.TestMethod(t, r, "GET")
    52  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    53  
    54  		w.Header().Add("Content-Type", "application/json")
    55  		w.WriteHeader(http.StatusOK)
    56  
    57  		fmt.Fprint(w, nettest.GetResponse)
    58  	})
    59  
    60  	var s struct {
    61  		networks.Network
    62  		external.NetworkExternalExt
    63  	}
    64  
    65  	err := networks.Get(context.TODO(), fake.ServiceClient(), "d32019d3-bc6e-4319-9c1d-6722fc136a22").ExtractInto(&s)
    66  	th.AssertNoErr(t, err)
    67  
    68  	th.AssertEquals(t, "d32019d3-bc6e-4319-9c1d-6722fc136a22", s.ID)
    69  	th.AssertEquals(t, true, s.External)
    70  }
    71  
    72  func TestCreate(t *testing.T) {
    73  	th.SetupHTTP()
    74  	defer th.TeardownHTTP()
    75  
    76  	th.Mux.HandleFunc("/v2.0/networks", func(w http.ResponseWriter, r *http.Request) {
    77  		th.TestMethod(t, r, "POST")
    78  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    79  		th.TestHeader(t, r, "Content-Type", "application/json")
    80  		th.TestHeader(t, r, "Accept", "application/json")
    81  		th.TestJSONRequest(t, r, CreateRequest)
    82  
    83  		w.Header().Add("Content-Type", "application/json")
    84  		w.WriteHeader(http.StatusCreated)
    85  
    86  		fmt.Fprint(w, CreateResponse)
    87  	})
    88  
    89  	iTrue := true
    90  	iFalse := false
    91  	networkCreateOpts := networks.CreateOpts{
    92  		Name:         "private",
    93  		AdminStateUp: &iTrue,
    94  	}
    95  
    96  	externalCreateOpts := external.CreateOptsExt{
    97  		CreateOptsBuilder: &networkCreateOpts,
    98  		External:          &iFalse,
    99  	}
   100  
   101  	_, err := networks.Create(context.TODO(), fake.ServiceClient(), externalCreateOpts).Extract()
   102  	th.AssertNoErr(t, err)
   103  
   104  	th.AssertNoErr(t, err)
   105  }
   106  
   107  func TestUpdate(t *testing.T) {
   108  	th.SetupHTTP()
   109  	defer th.TeardownHTTP()
   110  
   111  	th.Mux.HandleFunc("/v2.0/networks/4e8e5957-649f-477b-9e5b-f1f75b21c03c", func(w http.ResponseWriter, r *http.Request) {
   112  		th.TestMethod(t, r, "PUT")
   113  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   114  		th.TestHeader(t, r, "Content-Type", "application/json")
   115  		th.TestHeader(t, r, "Accept", "application/json")
   116  		th.TestJSONRequest(t, r, UpdateRequest)
   117  
   118  		w.Header().Add("Content-Type", "application/json")
   119  		w.WriteHeader(http.StatusOK)
   120  
   121  		fmt.Fprint(w, UpdateResponse)
   122  	})
   123  
   124  	iTrue := true
   125  	iFalse := false
   126  	name := "new_network_name"
   127  	networkUpdateOpts := networks.UpdateOpts{
   128  		Name:         &name,
   129  		AdminStateUp: &iFalse,
   130  		Shared:       &iTrue,
   131  	}
   132  
   133  	externalUpdateOpts := external.UpdateOptsExt{
   134  		UpdateOptsBuilder: &networkUpdateOpts,
   135  		External:          &iFalse,
   136  	}
   137  
   138  	_, err := networks.Update(context.TODO(), fake.ServiceClient(), "4e8e5957-649f-477b-9e5b-f1f75b21c03c", externalUpdateOpts).Extract()
   139  	th.AssertNoErr(t, err)
   140  }