blob: 8b753e961e0d1bb47549e977457db15ee5ed9678 [file] [log] [blame]
ehdou10f1f852016-10-14 20:58:23 +03001package testing
2
3import (
4 "fmt"
5 "net/http"
6 "testing"
7
8 th "github.com/gophercloud/gophercloud/testhelper"
9 fake "github.com/gophercloud/gophercloud/testhelper/client"
10)
11
12func createReq(name, description, network, subnetwork string) string {
13 return fmt.Sprintf(`{
ehdou07943332016-10-24 21:21:58 +030014 "share_network": {
15 "name": "%s",
16 "description": "%s",
17 "neutron_net_id": "%s",
18 "neutron_subnet_id": "%s"
19 }
20 }`, name, description, network, subnetwork)
ehdou10f1f852016-10-14 20:58:23 +030021}
22
23func createResp(name, description, network, subnetwork string) string {
24 return fmt.Sprintf(`
ehdou07943332016-10-24 21:21:58 +030025 {
26 "share_network": {
27 "name": "%s",
28 "description": "%s",
29 "segmentation_id": null,
30 "created_at": "2015-09-07T14:37:00.583656",
31 "updated_at": null,
32 "id": "77eb3421-4549-4789-ac39-0d5185d68c29",
33 "neutron_net_id": "%s",
34 "neutron_subnet_id": "%s",
35 "ip_version": null,
36 "nova_net_id": null,
37 "cidr": null,
38 "project_id": "e10a683c20da41248cfd5e1ab3d88c62",
39 "network_type": null
40 }
41 }`, name, description, network, subnetwork)
ehdou10f1f852016-10-14 20:58:23 +030042}
43
44func MockCreateResponse(t *testing.T) {
45 th.Mux.HandleFunc("/share-networks", func(w http.ResponseWriter, r *http.Request) {
46 th.TestMethod(t, r, "POST")
47 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
48 th.TestHeader(t, r, "Content-Type", "application/json")
49 th.TestHeader(t, r, "Accept", "application/json")
50 th.TestJSONRequest(t, r, createReq("my_network",
51 "This is my share network",
52 "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
53 "53482b62-2c84-4a53-b6ab-30d9d9800d06"))
54
55 w.Header().Add("Content-Type", "application/json")
56 w.WriteHeader(http.StatusAccepted)
57
58 fmt.Fprintf(w, createResp("my_network",
59 "This is my share network",
60 "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
61 "53482b62-2c84-4a53-b6ab-30d9d9800d06"))
62 })
63}
ehdou53687252016-10-14 22:10:13 +030064
65func MockDeleteResponse(t *testing.T) {
66 th.Mux.HandleFunc("/share-networks/fa158a3d-6d9f-4187-9ca5-abbb82646eb2", func(w http.ResponseWriter, r *http.Request) {
67 th.TestMethod(t, r, "DELETE")
68 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
69 w.WriteHeader(http.StatusAccepted)
70 })
71}
ehdou07943332016-10-24 21:21:58 +030072
73func MockListResponse(t *testing.T) {
74 th.Mux.HandleFunc("/share-networks/detail", func(w http.ResponseWriter, r *http.Request) {
75 th.TestMethod(t, r, "GET")
76 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
77
78 w.Header().Add("Content-Type", "application/json")
79 w.WriteHeader(http.StatusOK)
80
81 r.ParseForm()
82 marker := r.Form.Get("offset")
83
84 switch marker {
85 case "":
86 fmt.Fprintf(w, `{
87 "share_networks": [
88 {
89 "name": "net_my1",
90 "segmentation_id": null,
91 "created_at": "2015-09-04T14:57:13.000000",
92 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
93 "updated_at": null,
94 "id": "32763294-e3d4-456a-998d-60047677c2fb",
95 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
96 "ip_version": null,
97 "nova_net_id": null,
98 "cidr": null,
99 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
100 "network_type": null,
101 "description": "descr"
102 },
103 {
104 "name": "net_my",
105 "segmentation_id": null,
106 "created_at": "2015-09-04T14:54:25.000000",
107 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
108 "updated_at": null,
109 "id": "713df749-aac0-4a54-af52-10f6c991e80c",
110 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
111 "ip_version": null,
112 "nova_net_id": null,
113 "cidr": null,
114 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
115 "network_type": null,
116 "description": "desecr"
117 },
118 {
119 "name": null,
120 "segmentation_id": null,
121 "created_at": "2015-09-04T14:51:41.000000",
122 "neutron_subnet_id": null,
123 "updated_at": null,
124 "id": "fa158a3d-6d9f-4187-9ca5-abbb82646eb2",
125 "neutron_net_id": null,
126 "ip_version": null,
127 "nova_net_id": null,
128 "cidr": null,
129 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
130 "network_type": null,
131 "description": null
132 }
133 ]
134 }`)
135 default:
136 fmt.Fprintf(w, `
137 {
138 "share_networks": []
139 }`)
140 }
141 })
142}
143
144func MockFilteredListResponse(t *testing.T) {
145 th.Mux.HandleFunc("/share-networks/detail", func(w http.ResponseWriter, r *http.Request) {
146 th.TestMethod(t, r, "GET")
147 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
148
149 w.Header().Add("Content-Type", "application/json")
150 w.WriteHeader(http.StatusOK)
151
152 r.ParseForm()
153 marker := r.Form.Get("offset")
154 switch marker {
155 case "":
156 fmt.Fprintf(w, `
157 {
158 "share_networks": [
159 {
160 "name": "net_my1",
161 "segmentation_id": null,
162 "created_at": "2015-09-04T14:57:13.000000",
163 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
164 "updated_at": null,
165 "id": "32763294-e3d4-456a-998d-60047677c2fb",
166 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
167 "ip_version": null,
168 "nova_net_id": null,
169 "cidr": null,
170 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
171 "network_type": null,
172 "description": "descr"
173 }
174 ]
175 }`)
176 case "1":
177 fmt.Fprintf(w, `
178 {
179 "share_networks": [
180 {
181 "name": "net_my1",
182 "segmentation_id": null,
183 "created_at": "2015-09-04T14:57:13.000000",
184 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
185 "updated_at": null,
186 "id": "32763294-e3d4-456a-998d-60047677c2fb",
187 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
188 "ip_version": null,
189 "nova_net_id": null,
190 "cidr": null,
191 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
192 "network_type": null,
193 "description": "descr"
194 }
195 ]
196 }`)
197 case "2":
198 fmt.Fprintf(w, `
199 {
200 "share_networks": [
201 {
202 "name": "net_my1",
203 "segmentation_id": null,
204 "created_at": "2015-09-04T14:57:13.000000",
205 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
206 "updated_at": null,
207 "id": "32763294-e3d4-456a-998d-60047677c2fb",
208 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
209 "ip_version": null,
210 "nova_net_id": null,
211 "cidr": null,
212 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
213 "network_type": null,
214 "description": "descr"
215 }
216 ]
217 }`)
218 default:
219 fmt.Fprintf(w, `
220 {
221 "share_networks": []
222 }`)
223 }
224 })
225}
ehdoua088cec2016-10-25 21:02:05 +0300226
227func MockGetResponse(t *testing.T) {
228 th.Mux.HandleFunc("/share-networks/7f950b52-6141-4a08-bbb5-bb7ffa3ea5fd", func(w http.ResponseWriter, r *http.Request) {
229 th.TestMethod(t, r, "GET")
230 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
231
232 w.Header().Add("Content-Type", "application/json")
233 w.WriteHeader(http.StatusOK)
234 fmt.Fprintf(w, `
235 {
236 "share_network": {
237 "name": "net_my1",
238 "segmentation_id": null,
239 "created_at": "2015-09-04T14:56:45.000000",
240 "neutron_subnet_id": "53482b62-2c84-4a53-b6ab-30d9d9800d06",
241 "updated_at": null,
242 "id": "7f950b52-6141-4a08-bbb5-bb7ffa3ea5fd",
243 "neutron_net_id": "998b42ee-2cee-4d36-8b95-67b5ca1f2109",
244 "ip_version": null,
245 "nova_net_id": null,
246 "cidr": null,
247 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
248 "network_type": null,
249 "description": "descr"
250 }
251 }`)
252 })
253}
ehdoufd6d86c2016-11-03 21:35:45 +0200254
255func MockUpdateNeutronResponse(t *testing.T) {
256 th.Mux.HandleFunc("/share-networks/713df749-aac0-4a54-af52-10f6c991e80c", func(w http.ResponseWriter, r *http.Request) {
257 th.TestMethod(t, r, "PUT")
258 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
259 w.WriteHeader(http.StatusOK)
260 fmt.Fprintf(w, `
261 {
262 "share_network": {
263 "name": "net_my2",
264 "segmentation_id": null,
265 "created_at": "2015-09-04T14:54:25.000000",
266 "neutron_subnet_id": "new-neutron-subnet-id",
267 "updated_at": "2015-09-07T08:02:53.512184",
268 "id": "713df749-aac0-4a54-af52-10f6c991e80c",
269 "neutron_net_id": "new-neutron-id",
270 "ip_version": 4,
271 "nova_net_id": null,
272 "cidr": null,
273 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
274 "network_type": null,
275 "description": "new description"
276 }
277 }
278 `)
279 })
280}
281
282func MockUpdateNovaResponse(t *testing.T) {
283 th.Mux.HandleFunc("/share-networks/713df749-aac0-4a54-af52-10f6c991e80c", func(w http.ResponseWriter, r *http.Request) {
284 th.TestMethod(t, r, "PUT")
285 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
286 w.WriteHeader(http.StatusOK)
287 fmt.Fprintf(w, `
288 {
289 "share_network": {
290 "name": "net_my2",
291 "segmentation_id": null,
292 "created_at": "2015-09-04T14:54:25.000000",
293 "neutron_subnet_id": null,
294 "updated_at": "2015-09-07T08:02:53.512184",
295 "id": "713df749-aac0-4a54-af52-10f6c991e80c",
296 "neutron_net_id": null,
297 "ip_version": 4,
298 "nova_net_id": "new-nova-id",
299 "cidr": null,
300 "project_id": "16e1ab15c35a457e9c2b2aa189f544e1",
301 "network_type": null,
302 "description": "new description"
303 }
304 }
305 `)
306 })
307}