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 }