blob: 44d2ca383c36dfc6a0b5399597a6fdfcd1857a66 [file] [log] [blame]
jrperritt9b7b9e62016-07-11 22:30:50 -05001package 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 MockListResponse(t *testing.T) {
13 th.Mux.HandleFunc("/volumes/detail", func(w http.ResponseWriter, r *http.Request) {
14 th.TestMethod(t, r, "GET")
15 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
16
17 w.Header().Add("Content-Type", "application/json")
18 w.WriteHeader(http.StatusOK)
19
20 fmt.Fprintf(w, `
21 {
22 "volumes": [
23 {
24 "volume_type": "lvmdriver-1",
25 "created_at": "2015-09-17T03:35:03.000000",
26 "bootable": "false",
27 "name": "vol-001",
28 "os-vol-mig-status-attr:name_id": null,
29 "consistencygroup_id": null,
30 "source_volid": null,
31 "os-volume-replication:driver_data": null,
32 "multiattach": false,
33 "snapshot_id": null,
34 "replication_status": "disabled",
35 "os-volume-replication:extended_status": null,
36 "encrypted": false,
37 "os-vol-host-attr:host": null,
38 "availability_zone": "nova",
Joe Topjian81036a72016-08-06 13:21:39 -060039 "attachments": [{
40 "server_id": "83ec2e3b-4321-422b-8706-a84185f52a0a",
41 "attachment_id": "05551600-a936-4d4a-ba42-79a037c1-c91a",
42 "attached_at": "2016-08-06T14:48:20.000000",
43 "host_name": "foobar",
44 "volume_id": "d6cacb1a-8b59-4c88-ad90-d70ebb82bb75",
45 "device": "/dev/vdc",
46 "id": "d6cacb1a-8b59-4c88-ad90-d70ebb82bb75"
47 }],
jrperritt9b7b9e62016-07-11 22:30:50 -050048 "id": "289da7f8-6440-407c-9fb4-7db01ec49164",
49 "size": 75,
50 "user_id": "ff1ce52c03ab433aaba9108c2e3ef541",
51 "os-vol-tenant-attr:tenant_id": "304dc00909ac4d0da6c62d816bcb3459",
52 "os-vol-mig-status-attr:migstat": null,
53 "metadata": {"foo": "bar"},
54 "status": "available",
55 "description": null
56 },
57 {
58 "volume_type": "lvmdriver-1",
59 "created_at": "2015-09-17T03:32:29.000000",
60 "bootable": "false",
61 "name": "vol-002",
62 "os-vol-mig-status-attr:name_id": null,
63 "consistencygroup_id": null,
64 "source_volid": null,
65 "os-volume-replication:driver_data": null,
66 "multiattach": false,
67 "snapshot_id": null,
68 "replication_status": "disabled",
69 "os-volume-replication:extended_status": null,
70 "encrypted": false,
71 "os-vol-host-attr:host": null,
72 "availability_zone": "nova",
73 "attachments": [],
74 "id": "96c3bda7-c82a-4f50-be73-ca7621794835",
75 "size": 75,
76 "user_id": "ff1ce52c03ab433aaba9108c2e3ef541",
77 "os-vol-tenant-attr:tenant_id": "304dc00909ac4d0da6c62d816bcb3459",
78 "os-vol-mig-status-attr:migstat": null,
79 "metadata": {},
80 "status": "available",
81 "description": null
82 }
83 ]
84}
85 `)
86 })
87}
88
89func MockGetResponse(t *testing.T) {
90 th.Mux.HandleFunc("/volumes/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) {
91 th.TestMethod(t, r, "GET")
92 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
93
94 w.Header().Add("Content-Type", "application/json")
95 w.WriteHeader(http.StatusOK)
96 fmt.Fprintf(w, `
97{
98 "volume": {
99 "volume_type": "lvmdriver-1",
100 "created_at": "2015-09-17T03:32:29.000000",
101 "bootable": "false",
102 "name": "vol-001",
103 "os-vol-mig-status-attr:name_id": null,
104 "consistencygroup_id": null,
105 "source_volid": null,
106 "os-volume-replication:driver_data": null,
107 "multiattach": false,
108 "snapshot_id": null,
109 "replication_status": "disabled",
110 "os-volume-replication:extended_status": null,
111 "encrypted": false,
112 "os-vol-host-attr:host": null,
113 "availability_zone": "nova",
114 "attachments": [{
Joe Topjian81036a72016-08-06 13:21:39 -0600115 "server_id": "83ec2e3b-4321-422b-8706-a84185f52a0a",
116 "attachment_id": "05551600-a936-4d4a-ba42-79a037c1-c91a",
117 "attached_at": "2016-08-06T14:48:20.000000",
118 "host_name": "foobar",
119 "volume_id": "d6cacb1a-8b59-4c88-ad90-d70ebb82bb75",
120 "device": "/dev/vdc",
121 "id": "d6cacb1a-8b59-4c88-ad90-d70ebb82bb75"
122 }],
jrperritt9b7b9e62016-07-11 22:30:50 -0500123 "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
124 "size": 75,
125 "user_id": "ff1ce52c03ab433aaba9108c2e3ef541",
126 "os-vol-tenant-attr:tenant_id": "304dc00909ac4d0da6c62d816bcb3459",
127 "os-vol-mig-status-attr:migstat": null,
128 "metadata": {},
129 "status": "available",
130 "description": null
131 }
132}
133 `)
134 })
135}
136
137func MockCreateResponse(t *testing.T) {
138 th.Mux.HandleFunc("/volumes", func(w http.ResponseWriter, r *http.Request) {
139 th.TestMethod(t, r, "POST")
140 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
141 th.TestHeader(t, r, "Content-Type", "application/json")
142 th.TestHeader(t, r, "Accept", "application/json")
143 th.TestJSONRequest(t, r, `
144{
145 "volume": {
146 "name": "vol-001",
147 "size": 75
148 }
149}
150 `)
151
152 w.Header().Add("Content-Type", "application/json")
153 w.WriteHeader(http.StatusAccepted)
154
155 fmt.Fprintf(w, `
156{
157 "volume": {
158 "size": 75,
159 "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",
160 "metadata": {},
161 "created_at": "2015-09-17T03:32:29.044216",
162 "encrypted": false,
163 "bootable": "false",
164 "availability_zone": "nova",
165 "attachments": [],
166 "user_id": "ff1ce52c03ab433aaba9108c2e3ef541",
167 "status": "creating",
168 "description": null,
169 "volume_type": "lvmdriver-1",
170 "name": "vol-001",
171 "replication_status": "disabled",
172 "consistencygroup_id": null,
173 "source_volid": null,
174 "snapshot_id": null,
175 "multiattach": false
176 }
177}
178 `)
179 })
180}
181
182func MockDeleteResponse(t *testing.T) {
183 th.Mux.HandleFunc("/volumes/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) {
184 th.TestMethod(t, r, "DELETE")
185 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
186 w.WriteHeader(http.StatusAccepted)
187 })
188}
189
190func MockUpdateResponse(t *testing.T) {
191 th.Mux.HandleFunc("/volumes/d32019d3-bc6e-4319-9c1d-6722fc136a22", func(w http.ResponseWriter, r *http.Request) {
192 th.TestMethod(t, r, "PUT")
193 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
194 w.WriteHeader(http.StatusOK)
195 fmt.Fprintf(w, `
196{
197 "volume": {
198 "name": "vol-002"
199 }
200}
201 `)
202 })
203}