github.com/gophercloud/gophercloud@v1.11.0/openstack/networking/v2/extensions/layer3/addressscopes/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"testing"
     7  
     8  	fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common"
     9  	"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/addressscopes"
    10  	"github.com/gophercloud/gophercloud/pagination"
    11  	th "github.com/gophercloud/gophercloud/testhelper"
    12  )
    13  
    14  func TestList(t *testing.T) {
    15  	th.SetupHTTP()
    16  	defer th.TeardownHTTP()
    17  
    18  	th.Mux.HandleFunc("/v2.0/address-scopes", func(w http.ResponseWriter, r *http.Request) {
    19  		th.TestMethod(t, r, "GET")
    20  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    21  
    22  		w.Header().Add("Content-Type", "application/json")
    23  		w.WriteHeader(http.StatusOK)
    24  
    25  		fmt.Fprintf(w, AddressScopesListResult)
    26  	})
    27  
    28  	count := 0
    29  
    30  	addressscopes.List(fake.ServiceClient(), addressscopes.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
    31  		count++
    32  		actual, err := addressscopes.ExtractAddressScopes(page)
    33  		if err != nil {
    34  			t.Errorf("Failed to extract addressscopes: %v", err)
    35  			return false, nil
    36  		}
    37  
    38  		expected := []addressscopes.AddressScope{
    39  			AddressScope1,
    40  			AddressScope2,
    41  		}
    42  
    43  		th.CheckDeepEquals(t, expected, actual)
    44  
    45  		return true, nil
    46  	})
    47  
    48  	if count != 1 {
    49  		t.Errorf("Expected 1 page, got %d", count)
    50  	}
    51  }
    52  
    53  func TestGet(t *testing.T) {
    54  	th.SetupHTTP()
    55  	defer th.TeardownHTTP()
    56  
    57  	th.Mux.HandleFunc("/v2.0/address-scopes/9cc35860-522a-4d35-974d-51d4b011801e", func(w http.ResponseWriter, r *http.Request) {
    58  		th.TestMethod(t, r, "GET")
    59  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    60  
    61  		w.Header().Add("Content-Type", "application/json")
    62  		w.WriteHeader(http.StatusOK)
    63  
    64  		fmt.Fprintf(w, AddressScopesGetResult)
    65  	})
    66  
    67  	s, err := addressscopes.Get(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e").Extract()
    68  	th.AssertNoErr(t, err)
    69  
    70  	th.AssertEquals(t, s.ID, "9cc35860-522a-4d35-974d-51d4b011801e")
    71  	th.AssertEquals(t, s.Name, "scopev4")
    72  	th.AssertEquals(t, s.TenantID, "4a9807b773404e979b19633f38370643")
    73  	th.AssertEquals(t, s.ProjectID, "4a9807b773404e979b19633f38370643")
    74  	th.AssertEquals(t, s.IPVersion, 4)
    75  	th.AssertEquals(t, s.Shared, false)
    76  }
    77  
    78  func TestCreate(t *testing.T) {
    79  	th.SetupHTTP()
    80  	defer th.TeardownHTTP()
    81  
    82  	th.Mux.HandleFunc("/v2.0/address-scopes", func(w http.ResponseWriter, r *http.Request) {
    83  		th.TestMethod(t, r, "POST")
    84  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    85  		th.TestHeader(t, r, "Content-Type", "application/json")
    86  		th.TestHeader(t, r, "Accept", "application/json")
    87  		th.TestJSONRequest(t, r, AddressScopeCreateRequest)
    88  
    89  		w.Header().Add("Content-Type", "application/json")
    90  		w.WriteHeader(http.StatusCreated)
    91  
    92  		fmt.Fprintf(w, AddressScopeCreateResult)
    93  	})
    94  
    95  	opts := addressscopes.CreateOpts{
    96  		IPVersion: 4,
    97  		Shared:    true,
    98  		Name:      "test0",
    99  	}
   100  	s, err := addressscopes.Create(fake.ServiceClient(), opts).Extract()
   101  	th.AssertNoErr(t, err)
   102  
   103  	th.AssertEquals(t, s.Name, "test0")
   104  	th.AssertEquals(t, s.Shared, true)
   105  	th.AssertEquals(t, s.IPVersion, 4)
   106  	th.AssertEquals(t, s.TenantID, "4a9807b773404e979b19633f38370643")
   107  	th.AssertEquals(t, s.ProjectID, "4a9807b773404e979b19633f38370643")
   108  	th.AssertEquals(t, s.ID, "9cc35860-522a-4d35-974d-51d4b011801e")
   109  }
   110  
   111  func TestUpdate(t *testing.T) {
   112  	th.SetupHTTP()
   113  	defer th.TeardownHTTP()
   114  
   115  	th.Mux.HandleFunc("/v2.0/address-scopes/9cc35860-522a-4d35-974d-51d4b011801e", func(w http.ResponseWriter, r *http.Request) {
   116  		th.TestMethod(t, r, "PUT")
   117  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   118  		th.TestHeader(t, r, "Content-Type", "application/json")
   119  		th.TestHeader(t, r, "Accept", "application/json")
   120  		th.TestJSONRequest(t, r, AddressScopeUpdateRequest)
   121  
   122  		w.Header().Add("Content-Type", "application/json")
   123  		w.WriteHeader(http.StatusOK)
   124  
   125  		fmt.Fprintf(w, AddressScopeUpdateResult)
   126  	})
   127  
   128  	shared := true
   129  	newName := "test1"
   130  	updateOpts := addressscopes.UpdateOpts{
   131  		Name:   &newName,
   132  		Shared: &shared,
   133  	}
   134  	s, err := addressscopes.Update(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e", updateOpts).Extract()
   135  	th.AssertNoErr(t, err)
   136  
   137  	th.AssertEquals(t, s.Name, "test1")
   138  	th.AssertEquals(t, s.Shared, true)
   139  }
   140  
   141  func TestDelete(t *testing.T) {
   142  	th.SetupHTTP()
   143  	defer th.TeardownHTTP()
   144  
   145  	th.Mux.HandleFunc("/v2.0/address-scopes/9cc35860-522a-4d35-974d-51d4b011801e", func(w http.ResponseWriter, r *http.Request) {
   146  		th.TestMethod(t, r, "DELETE")
   147  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   148  		w.WriteHeader(http.StatusNoContent)
   149  	})
   150  
   151  	res := addressscopes.Delete(fake.ServiceClient(), "9cc35860-522a-4d35-974d-51d4b011801e")
   152  	th.AssertNoErr(t, res.Err)
   153  }