blob: b68230a8a48e840b83400fab5f733bc8ec019f5a [file] [log] [blame]
jrperritt3d966162016-06-06 14:08:54 -05001package testing
Jon Perritt457f8ca2014-10-15 00:28:23 -05002
3import (
4 "fmt"
5 "net/http"
6 "testing"
7
jrperritt3d966162016-06-06 14:08:54 -05008 "github.com/gophercloud/gophercloud/openstack/objectstorage/v1/containers"
Jon Perritt27249f42016-02-18 10:35:59 -06009 th "github.com/gophercloud/gophercloud/testhelper"
10 fake "github.com/gophercloud/gophercloud/testhelper/client"
Jon Perritt457f8ca2014-10-15 00:28:23 -050011)
12
13// ExpectedListInfo is the result expected from a call to `List` when full
14// info is requested.
jrperritt3d966162016-06-06 14:08:54 -050015var ExpectedListInfo = []containers.Container{
16 {
Jon Perritt457f8ca2014-10-15 00:28:23 -050017 Count: 0,
18 Bytes: 0,
19 Name: "janeausten",
20 },
jrperritt3d966162016-06-06 14:08:54 -050021 {
Jon Perritt457f8ca2014-10-15 00:28:23 -050022 Count: 1,
23 Bytes: 14,
24 Name: "marktwain",
25 },
26}
27
28// ExpectedListNames is the result expected from a call to `List` when just
29// container names are requested.
30var ExpectedListNames = []string{"janeausten", "marktwain"}
31
32// HandleListContainerInfoSuccessfully creates an HTTP handler at `/` on the test handler mux that
33// responds with a `List` response when full info is requested.
34func HandleListContainerInfoSuccessfully(t *testing.T) {
35 th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
36 th.TestMethod(t, r, "GET")
37 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
38 th.TestHeader(t, r, "Accept", "application/json")
39
40 w.Header().Set("Content-Type", "application/json")
41 r.ParseForm()
42 marker := r.Form.Get("marker")
43 switch marker {
44 case "":
45 fmt.Fprintf(w, `[
46 {
47 "count": 0,
48 "bytes": 0,
49 "name": "janeausten"
50 },
51 {
52 "count": 1,
53 "bytes": 14,
54 "name": "marktwain"
55 }
56 ]`)
Jon Perrittfe5e7352015-02-18 13:51:01 -070057 case "janeausten":
58 fmt.Fprintf(w, `[
59 {
60 "count": 1,
61 "bytes": 14,
62 "name": "marktwain"
63 }
64 ]`)
Jon Perritt457f8ca2014-10-15 00:28:23 -050065 case "marktwain":
66 fmt.Fprintf(w, `[]`)
67 default:
68 t.Fatalf("Unexpected marker: [%s]", marker)
69 }
70 })
71}
72
73// HandleListContainerNamesSuccessfully creates an HTTP handler at `/` on the test handler mux that
74// responds with a `ListNames` response when only container names are requested.
75func HandleListContainerNamesSuccessfully(t *testing.T) {
76 th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
77 th.TestMethod(t, r, "GET")
78 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
79 th.TestHeader(t, r, "Accept", "text/plain")
80
81 w.Header().Set("Content-Type", "text/plain")
82 r.ParseForm()
83 marker := r.Form.Get("marker")
84 switch marker {
85 case "":
86 fmt.Fprintf(w, "janeausten\nmarktwain\n")
Jon Perrittfe5e7352015-02-18 13:51:01 -070087 case "janeausten":
88 fmt.Fprintf(w, "marktwain\n")
Jon Perritt457f8ca2014-10-15 00:28:23 -050089 case "marktwain":
90 fmt.Fprintf(w, ``)
91 default:
92 t.Fatalf("Unexpected marker: [%s]", marker)
93 }
94 })
95}
96
97// HandleCreateContainerSuccessfully creates an HTTP handler at `/testContainer` on the test handler mux that
98// responds with a `Create` response.
99func HandleCreateContainerSuccessfully(t *testing.T) {
100 th.Mux.HandleFunc("/testContainer", func(w http.ResponseWriter, r *http.Request) {
101 th.TestMethod(t, r, "PUT")
102 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
103 th.TestHeader(t, r, "Accept", "application/json")
104
105 w.Header().Add("X-Container-Meta-Foo", "bar")
jrperritt655245a2016-08-31 15:30:27 -0500106 w.Header().Set("Content-Length", "0")
107 w.Header().Set("Content-Type", "text/html; charset=UTF-8")
108 w.Header().Set("Date", "Wed, 17 Aug 2016 19:25:43 GMT")
109 w.Header().Set("X-Trans-Id", "tx554ed59667a64c61866f1-0058b4ba37")
Jon Perritt457f8ca2014-10-15 00:28:23 -0500110 w.WriteHeader(http.StatusNoContent)
111 })
112}
113
114// HandleDeleteContainerSuccessfully creates an HTTP handler at `/testContainer` on the test handler mux that
115// responds with a `Delete` response.
116func HandleDeleteContainerSuccessfully(t *testing.T) {
117 th.Mux.HandleFunc("/testContainer", func(w http.ResponseWriter, r *http.Request) {
118 th.TestMethod(t, r, "DELETE")
119 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
120 th.TestHeader(t, r, "Accept", "application/json")
121 w.WriteHeader(http.StatusNoContent)
122 })
123}
124
125// HandleUpdateContainerSuccessfully creates an HTTP handler at `/testContainer` on the test handler mux that
126// responds with a `Update` response.
127func HandleUpdateContainerSuccessfully(t *testing.T) {
128 th.Mux.HandleFunc("/testContainer", func(w http.ResponseWriter, r *http.Request) {
129 th.TestMethod(t, r, "POST")
130 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
131 th.TestHeader(t, r, "Accept", "application/json")
132 w.WriteHeader(http.StatusNoContent)
133 })
134}
135
136// HandleGetContainerSuccessfully creates an HTTP handler at `/testContainer` on the test handler mux that
137// responds with a `Get` response.
138func HandleGetContainerSuccessfully(t *testing.T) {
139 th.Mux.HandleFunc("/testContainer", func(w http.ResponseWriter, r *http.Request) {
140 th.TestMethod(t, r, "HEAD")
141 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
142 th.TestHeader(t, r, "Accept", "application/json")
jrperritt655245a2016-08-31 15:30:27 -0500143 w.Header().Set("Accept-Ranges", "bytes")
144 w.Header().Set("Content-Type", "application/json; charset=utf-8")
145 w.Header().Set("Date", "Wed, 17 Aug 2016 19:25:43 GMT")
146 w.Header().Set("X-Container-Bytes-Used", "100")
147 w.Header().Set("X-Container-Object-Count", "4")
148 w.Header().Set("X-Container-Read", "test")
149 w.Header().Set("X-Container-Write", "test2,user4")
150 w.Header().Set("X-Timestamp", "1471298837.95721")
151 w.Header().Set("X-Trans-Id", "tx554ed59667a64c61866f1-0057b4ba37")
Jon Perritt457f8ca2014-10-15 00:28:23 -0500152 w.WriteHeader(http.StatusNoContent)
153 })
154}