github.com/gophercloud/gophercloud@v1.11.0/openstack/networking/v2/extensions/subnetpools/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 "time" 8 9 fake "github.com/gophercloud/gophercloud/openstack/networking/v2/common" 10 "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/subnetpools" 11 "github.com/gophercloud/gophercloud/pagination" 12 th "github.com/gophercloud/gophercloud/testhelper" 13 ) 14 15 func TestList(t *testing.T) { 16 th.SetupHTTP() 17 defer th.TeardownHTTP() 18 19 th.Mux.HandleFunc("/v2.0/subnetpools", func(w http.ResponseWriter, r *http.Request) { 20 th.TestMethod(t, r, "GET") 21 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 22 23 w.Header().Add("Content-Type", "application/json") 24 w.WriteHeader(http.StatusOK) 25 26 fmt.Fprintf(w, SubnetPoolsListResult) 27 }) 28 29 count := 0 30 31 err := subnetpools.List(fake.ServiceClient(), subnetpools.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) { 32 count++ 33 actual, err := subnetpools.ExtractSubnetPools(page) 34 if err != nil { 35 t.Errorf("Failed to extract subnetpools: %v", err) 36 return false, nil 37 } 38 39 expected := []subnetpools.SubnetPool{ 40 SubnetPool1, 41 SubnetPool2, 42 SubnetPool3, 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/subnetpools/0a738452-8057-4ad3-89c2-92f6a74afa76", 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.Fprintf(w, SubnetPoolGetResult) 69 }) 70 71 s, err := subnetpools.Get(fake.ServiceClient(), "0a738452-8057-4ad3-89c2-92f6a74afa76").Extract() 72 th.AssertNoErr(t, err) 73 74 th.AssertEquals(t, s.ID, "0a738452-8057-4ad3-89c2-92f6a74afa76") 75 th.AssertEquals(t, s.Name, "my-ipv6-pool") 76 th.AssertEquals(t, s.DefaultQuota, 2) 77 th.AssertEquals(t, s.TenantID, "1e2b9857295a4a3e841809ef492812c5") 78 th.AssertEquals(t, s.ProjectID, "1e2b9857295a4a3e841809ef492812c5") 79 th.AssertEquals(t, s.CreatedAt, time.Date(2018, 1, 1, 0, 0, 1, 0, time.UTC)) 80 th.AssertEquals(t, s.UpdatedAt, time.Date(2018, 1, 1, 0, 10, 10, 0, time.UTC)) 81 th.AssertDeepEquals(t, s.Prefixes, []string{ 82 "2001:db8::a3/64", 83 }) 84 th.AssertEquals(t, s.DefaultPrefixLen, 64) 85 th.AssertEquals(t, s.MinPrefixLen, 64) 86 th.AssertEquals(t, s.MaxPrefixLen, 128) 87 th.AssertEquals(t, s.AddressScopeID, "") 88 th.AssertEquals(t, s.IPversion, 6) 89 th.AssertEquals(t, s.Shared, false) 90 th.AssertEquals(t, s.Description, "ipv6 prefixes") 91 th.AssertEquals(t, s.IsDefault, true) 92 th.AssertEquals(t, s.RevisionNumber, 2) 93 } 94 func TestCreate(t *testing.T) { 95 th.SetupHTTP() 96 defer th.TeardownHTTP() 97 98 th.Mux.HandleFunc("/v2.0/subnetpools", func(w http.ResponseWriter, r *http.Request) { 99 th.TestMethod(t, r, "POST") 100 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 101 th.TestHeader(t, r, "Content-Type", "application/json") 102 th.TestHeader(t, r, "Accept", "application/json") 103 th.TestJSONRequest(t, r, SubnetPoolCreateRequest) 104 105 w.Header().Add("Content-Type", "application/json") 106 w.WriteHeader(http.StatusCreated) 107 108 fmt.Fprintf(w, SubnetPoolCreateResult) 109 }) 110 111 opts := subnetpools.CreateOpts{ 112 Name: "my_ipv4_pool", 113 Prefixes: []string{ 114 "10.10.0.0/16", 115 "10.11.11.0/24", 116 }, 117 MinPrefixLen: 25, 118 MaxPrefixLen: 30, 119 AddressScopeID: "3d4e2e2a-552b-42ad-a16d-820bbf3edaf3", 120 Description: "ipv4 prefixes", 121 } 122 s, err := subnetpools.Create(fake.ServiceClient(), opts).Extract() 123 th.AssertNoErr(t, err) 124 125 th.AssertEquals(t, s.Name, "my_ipv4_pool") 126 th.AssertDeepEquals(t, s.Prefixes, []string{ 127 "10.10.0.0/16", 128 "10.11.11.0/24", 129 }) 130 th.AssertEquals(t, s.MinPrefixLen, 25) 131 th.AssertEquals(t, s.MaxPrefixLen, 30) 132 th.AssertEquals(t, s.AddressScopeID, "3d4e2e2a-552b-42ad-a16d-820bbf3edaf3") 133 th.AssertEquals(t, s.Description, "ipv4 prefixes") 134 } 135 136 func TestUpdate(t *testing.T) { 137 th.SetupHTTP() 138 defer th.TeardownHTTP() 139 140 th.Mux.HandleFunc("/v2.0/subnetpools/099546ca-788d-41e5-a76d-17d8cd282d3e", func(w http.ResponseWriter, r *http.Request) { 141 th.TestMethod(t, r, "PUT") 142 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 143 th.TestHeader(t, r, "Content-Type", "application/json") 144 th.TestHeader(t, r, "Accept", "application/json") 145 th.TestJSONRequest(t, r, SubnetPoolUpdateRequest) 146 147 w.Header().Add("Content-Type", "application/json") 148 w.WriteHeader(http.StatusOK) 149 150 fmt.Fprintf(w, SubnetPoolUpdateResponse) 151 }) 152 153 nullString := "" 154 nullInt := 0 155 updateOpts := subnetpools.UpdateOpts{ 156 Name: "new_subnetpool_name", 157 Prefixes: []string{ 158 "10.11.12.0/24", 159 "10.24.0.0/16", 160 }, 161 MaxPrefixLen: 16, 162 AddressScopeID: &nullString, 163 DefaultQuota: &nullInt, 164 Description: &nullString, 165 } 166 n, err := subnetpools.Update(fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e", updateOpts).Extract() 167 th.AssertNoErr(t, err) 168 169 th.AssertEquals(t, n.Name, "new_subnetpool_name") 170 th.AssertDeepEquals(t, n.Prefixes, []string{ 171 "10.8.0.0/16", 172 "10.11.12.0/24", 173 "10.24.0.0/16", 174 }) 175 th.AssertEquals(t, n.MaxPrefixLen, 16) 176 th.AssertEquals(t, n.ID, "099546ca-788d-41e5-a76d-17d8cd282d3e") 177 th.AssertEquals(t, n.AddressScopeID, "") 178 th.AssertEquals(t, n.DefaultQuota, 0) 179 th.AssertEquals(t, n.Description, "") 180 } 181 182 func TestDelete(t *testing.T) { 183 th.SetupHTTP() 184 defer th.TeardownHTTP() 185 186 th.Mux.HandleFunc("/v2.0/subnetpools/099546ca-788d-41e5-a76d-17d8cd282d3e", func(w http.ResponseWriter, r *http.Request) { 187 th.TestMethod(t, r, "DELETE") 188 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 189 w.WriteHeader(http.StatusNoContent) 190 }) 191 192 res := subnetpools.Delete(fake.ServiceClient(), "099546ca-788d-41e5-a76d-17d8cd282d3e") 193 th.AssertNoErr(t, res.Err) 194 }