github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/extensions/bgp/peers/testing/requests_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/bgp/peers"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    12  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    13  )
    14  
    15  func TestList(t *testing.T) {
    16  	th.SetupHTTP()
    17  	defer th.TeardownHTTP()
    18  
    19  	th.Mux.HandleFunc("/v2.0/bgp-peers",
    20  		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  			fmt.Fprint(w, ListBGPPeersResult)
    27  		})
    28  	count := 0
    29  
    30  	err := peers.List(fake.ServiceClient()).EachPage(
    31  		context.TODO(),
    32  		func(_ context.Context, page pagination.Page) (bool, error) {
    33  			count++
    34  			actual, err := peers.ExtractBGPPeers(page)
    35  
    36  			if err != nil {
    37  				t.Errorf("Failed to extract BGP Peers: %v", err)
    38  				return false, nil
    39  			}
    40  			expected := []peers.BGPPeer{BGPPeer1, BGPPeer2}
    41  			th.CheckDeepEquals(t, expected, actual)
    42  			return true, nil
    43  		})
    44  	th.AssertNoErr(t, err)
    45  }
    46  
    47  func TestGet(t *testing.T) {
    48  	th.SetupHTTP()
    49  	defer th.TeardownHTTP()
    50  
    51  	bgpPeerID := "afacc0e8-6b66-44e4-be53-a1ef16033ceb"
    52  	th.Mux.HandleFunc("/v2.0/bgp-peers/"+bgpPeerID, func(w http.ResponseWriter, r *http.Request) {
    53  		th.TestMethod(t, r, "GET")
    54  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    55  		w.Header().Add("Content-Type", "application/json")
    56  		w.WriteHeader(http.StatusOK)
    57  		fmt.Fprint(w, GetBGPPeerResult)
    58  	})
    59  
    60  	s, err := peers.Get(context.TODO(), fake.ServiceClient(), bgpPeerID).Extract()
    61  	th.AssertNoErr(t, err)
    62  	th.CheckDeepEquals(t, *s, BGPPeer1)
    63  }
    64  
    65  func TestCreate(t *testing.T) {
    66  	th.SetupHTTP()
    67  	defer th.TeardownHTTP()
    68  
    69  	th.Mux.HandleFunc("/v2.0/bgp-peers", func(w http.ResponseWriter, r *http.Request) {
    70  		th.TestMethod(t, r, "POST")
    71  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    72  		th.TestHeader(t, r, "Content-Type", "application/json")
    73  		th.TestHeader(t, r, "Accept", "application/json")
    74  		th.TestJSONRequest(t, r, CreateRequest)
    75  		w.Header().Add("Content-Type", "application/json")
    76  		w.WriteHeader(http.StatusCreated)
    77  		fmt.Fprint(w, CreateResponse)
    78  	})
    79  
    80  	var opts peers.CreateOpts
    81  	opts.AuthType = "md5"
    82  	opts.Password = "notSoStrong"
    83  	opts.RemoteAS = 20000
    84  	opts.Name = "gophercloud-testing-bgp-peer"
    85  	opts.PeerIP = "192.168.0.1"
    86  
    87  	r, err := peers.Create(context.TODO(), fake.ServiceClient(), opts).Extract()
    88  	th.AssertNoErr(t, err)
    89  	th.AssertEquals(t, r.AuthType, opts.AuthType)
    90  	th.AssertEquals(t, r.RemoteAS, opts.RemoteAS)
    91  	th.AssertEquals(t, r.PeerIP, opts.PeerIP)
    92  }
    93  
    94  func TestDelete(t *testing.T) {
    95  	bgpPeerID := "afacc0e8-6b66-44e4-be53-a1ef16033ceb"
    96  	th.SetupHTTP()
    97  	defer th.TeardownHTTP()
    98  
    99  	th.Mux.HandleFunc("/v2.0/bgp-peers/"+bgpPeerID, func(w http.ResponseWriter, r *http.Request) {
   100  		th.TestMethod(t, r, "DELETE")
   101  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   102  		th.TestHeader(t, r, "Accept", "application/json")
   103  
   104  		w.Header().Add("Content-Type", "application/json")
   105  		w.WriteHeader(http.StatusNoContent)
   106  	})
   107  
   108  	err := peers.Delete(context.TODO(), fake.ServiceClient(), bgpPeerID).ExtractErr()
   109  	th.AssertNoErr(t, err)
   110  }
   111  
   112  func TestUpdate(t *testing.T) {
   113  	bgpPeerID := "afacc0e8-6b66-44e4-be53-a1ef16033ceb"
   114  	th.SetupHTTP()
   115  	defer th.TeardownHTTP()
   116  
   117  	th.Mux.HandleFunc("/v2.0/bgp-peers/"+bgpPeerID, func(w http.ResponseWriter, r *http.Request) {
   118  		th.TestMethod(t, r, "PUT")
   119  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   120  		th.TestHeader(t, r, "Content-Type", "application/json")
   121  		th.TestHeader(t, r, "Accept", "application/json")
   122  		th.TestJSONRequest(t, r, UpdateBGPPeerRequest)
   123  
   124  		w.Header().Add("Content-Type", "application/json")
   125  		w.WriteHeader(http.StatusOK)
   126  
   127  		fmt.Fprint(w, UpdateBGPPeerResponse)
   128  	})
   129  
   130  	var opts peers.UpdateOpts
   131  	opts.Name = "test-rename-bgp-peer"
   132  	opts.Password = "superStrong"
   133  
   134  	r, err := peers.Update(context.TODO(), fake.ServiceClient(), bgpPeerID, opts).Extract()
   135  	th.AssertNoErr(t, err)
   136  	th.AssertEquals(t, r.Name, opts.Name)
   137  }