1
2
3
4
5
6
7
8
9
10
11
12
13 package test
14
15 import (
16 "net/http"
17
18 kivik "github.com/go-kivik/kivik/v4"
19 "github.com/go-kivik/kivik/v4/kiviktest"
20 "github.com/go-kivik/kivik/v4/kiviktest/kt"
21 )
22
23
24 func registerSuiteCouch23() {
25 kiviktest.RegisterSuite(kiviktest.SuiteCouch23, kt.SuiteConfig{
26 "Options": httpClient(),
27 "AllDBs.expected": []string{"_global_changes", "_replicator", "_users"},
28
29 "CreateDB/RW/NoAuth.status": http.StatusUnauthorized,
30 "CreateDB/RW/Admin/Recreate.status": http.StatusPreconditionFailed,
31
32 "DestroyDB/RW/NoAuth.status": http.StatusUnauthorized,
33 "DestroyDB/RW/Admin/NonExistantDB.status": http.StatusNotFound,
34
35 "AllDocs.databases": []string{"chicken", "_duck"},
36 "AllDocs/Admin/_replicator.offset": 0,
37 "AllDocs/Admin/chicken.status": http.StatusNotFound,
38 "AllDocs/Admin/_duck.status": http.StatusNotFound,
39 "AllDocs/NoAuth/_replicator.status": http.StatusUnauthorized,
40 "AllDocs/NoAuth/chicken.status": http.StatusNotFound,
41 "AllDocs/NoAuth/_duck.status": http.StatusUnauthorized,
42
43 "Find.databases": []string{"chicken", "_duck"},
44 "Find/Admin/chicken.status": http.StatusNotFound,
45 "Find/Admin/_duck.status": http.StatusNotFound,
46 "Find/NoAuth/chicken.status": http.StatusNotFound,
47 "Find/NoAuth/_duck.status": http.StatusUnauthorized,
48 "Find/RW/group/Admin/Warning.warning": "no matching index found, create an index to optimize query time",
49 "Find/RW/group/NoAuth/Warning.warning": "no matching index found, create an index to optimize query time",
50
51 "Explain.databases": []string{"chicken", "_duck"},
52 "Explain/Admin/chicken.status": http.StatusNotFound,
53 "Explain/Admin/_duck.status": http.StatusNotFound,
54 "Explain/NoAuth/chicken.status": http.StatusNotFound,
55 "Explain/NoAuth/_duck.status": http.StatusUnauthorized,
56 "Explain.plan": &kivik.QueryPlan{
57 Index: map[string]interface{}{
58 "ddoc": nil,
59 "name": "_all_docs",
60 "type": "special",
61 "def": map[string]interface{}{"fields": []interface{}{map[string]string{"_id": "asc"}}},
62 },
63 Selector: map[string]interface{}{"_id": map[string]interface{}{"$gt": nil}},
64 Options: map[string]interface{}{
65 "bookmark": "nil",
66 "conflicts": false,
67 "execution_stats": false,
68 "r": []int{49},
69 "sort": map[string]interface{}{},
70 "use_index": []interface{}{},
71 "stable": false,
72 "stale": false,
73 "update": true,
74 "skip": 0,
75 "limit": 25,
76 "fields": "all_fields",
77 },
78 Range: nil,
79 Limit: 25,
80 },
81
82 "DBExists.databases": []string{"_users", "chicken", "_duck"},
83 "DBExists/Admin/_users.exists": true,
84 "DBExists/Admin/chicken.exists": false,
85 "DBExists/Admin/_duck.exists": false,
86 "DBExists/NoAuth/_users.exists": true,
87 "DBExists/NoAuth/chicken.exists": false,
88 "DBExists/NoAuth/_duck.status": http.StatusUnauthorized,
89 "DBExists/RW/group/Admin.exists": true,
90 "DBExists/RW/group/NoAuth.exists": true,
91
92
93
94
95
96 "Log.skip": true,
97
98 "Version.version": `^2\.3\.`,
99 "Version.vendor": `^The Apache Software Foundation$`,
100 "Version.vendor_version": ``,
101
102 "Get/RW/group/Admin/bogus.status": http.StatusNotFound,
103 "Get/RW/group/NoAuth/bogus.status": http.StatusNotFound,
104
105 "GetRev/RW/group/Admin/bogus.status": http.StatusNotFound,
106 "GetRev/RW/group/NoAuth/bogus.status": http.StatusNotFound,
107
108 "Flush.databases": []string{"_users", "chicken", "_duck"},
109 "Flush/NoAuth/chicken/DoFlush.status": http.StatusNotFound,
110 "Flush/Admin/chicken/DoFlush.status": http.StatusNotFound,
111 "Flush/Admin/_duck/DoFlush.status": http.StatusNotFound,
112 "Flush/NoAuth/_duck/DoFlush.status": http.StatusUnauthorized,
113
114 "Delete/RW/Admin/group/MissingDoc.status": http.StatusNotFound,
115 "Delete/RW/Admin/group/InvalidRevFormat.status": http.StatusBadRequest,
116 "Delete/RW/Admin/group/WrongRev.status": http.StatusConflict,
117 "Delete/RW/NoAuth/group/MissingDoc.status": http.StatusNotFound,
118 "Delete/RW/NoAuth/group/InvalidRevFormat.status": http.StatusBadRequest,
119 "Delete/RW/NoAuth/group/WrongRev.status": http.StatusConflict,
120 "Delete/RW/NoAuth/group/DesignDoc.status": http.StatusUnauthorized,
121
122 "Session/Get/Admin.info.authentication_handlers": "cookie,default",
123 "Session/Get/Admin.info.authentication_db": "_users",
124 "Session/Get/Admin.info.authenticated": "cookie",
125 "Session/Get/Admin.userCtx.roles": "_admin",
126 "Session/Get/Admin.ok": "true",
127 "Session/Get/NoAuth.info.authentication_handlers": "cookie,default",
128 "Session/Get/NoAuth.info.authentication_db": "_users",
129 "Session/Get/NoAuth.info.authenticated": "",
130 "Session/Get/NoAuth.userCtx.roles": "",
131 "Session/Get/NoAuth.ok": "true",
132
133 "Session/Post/EmptyJSON.status": http.StatusBadRequest,
134 "Session/Post/BogusTypeJSON.status": http.StatusBadRequest,
135 "Session/Post/BogusTypeForm.status": http.StatusBadRequest,
136 "Session/Post/EmptyForm.status": http.StatusBadRequest,
137 "Session/Post/BadJSON.status": http.StatusBadRequest,
138 "Session/Post/BadForm.status": http.StatusBadRequest,
139 "Session/Post/MeaninglessJSON.status": http.StatusInternalServerError,
140 "Session/Post/MeaninglessForm.status": http.StatusBadRequest,
141 "Session/Post/GoodJSON.status": http.StatusUnauthorized,
142 "Session/Post/BadQueryParam.status": http.StatusUnauthorized,
143 "Session/Post/BadCredsJSON.status": http.StatusUnauthorized,
144 "Session/Post/BadCredsForm.status": http.StatusUnauthorized,
145 "Session/Post/GoodCredsJSONRemoteRedirAbsolute.status": http.StatusBadRequest,
146 "Session/Post/GoodCredsJSONRedirEmpty.status": http.StatusBadRequest,
147 "Session/Post/GoodCredsJSONRedirRelativeNoSlash.status": http.StatusBadRequest,
148 "Session/Post/GoodCredsJSONRemoteRedirHeaderInjection.skip": true,
149 "Session/Post/GoodCredsJSONRemoteRedirInvalidURL.skip": true,
150
151 "Stats.databases": []string{"_users", "chicken", "_duck"},
152 "Stats/Admin/chicken.status": http.StatusNotFound,
153 "Stats/Admin/_duck.status": http.StatusNotFound,
154 "Stats/NoAuth/chicken.status": http.StatusNotFound,
155 "Stats/NoAuth/_duck.status": http.StatusUnauthorized,
156
157 "Compact.skip": false,
158 "Compact/RW/NoAuth.status": http.StatusUnauthorized,
159
160 "Security.databases": []string{"_replicator", "_users", "_global_changes", "chicken", "_duck"},
161 "Security/Admin/chicken.status": http.StatusNotFound,
162 "Security/Admin/_duck.status": http.StatusNotFound,
163 "Security/NoAuth/_global_changes.status": http.StatusUnauthorized,
164 "Security/NoAuth/chicken.status": http.StatusNotFound,
165 "Security/NoAuth/_duck.status": http.StatusUnauthorized,
166 "Security/RW/group/NoAuth.status": http.StatusUnauthorized,
167
168 "SetSecurity/RW/Admin/NotExists.status": http.StatusNotFound,
169 "SetSecurity/RW/NoAuth/NotExists.status": http.StatusNotFound,
170 "SetSecurity/RW/NoAuth/Exists.status": http.StatusInternalServerError,
171
172 "DBUpdates/RW/NoAuth.status": http.StatusUnauthorized,
173
174 "BulkDocs/RW/NoAuth/group/Mix/Conflict.status": http.StatusConflict,
175 "BulkDocs/RW/Admin/group/Mix/Conflict.status": http.StatusConflict,
176
177 "GetAttachment/RW/group/Admin/foo/NotFound.status": http.StatusNotFound,
178 "GetAttachment/RW/group/NoAuth/foo/NotFound.status": http.StatusNotFound,
179
180 "GetAttachmentMeta/RW/group/Admin/foo/NotFound.status": http.StatusNotFound,
181 "GetAttachmentMeta/RW/group/NoAuth/foo/NotFound.status": http.StatusNotFound,
182
183 "PutAttachment/RW/group/Admin/Conflict.status": http.StatusConflict,
184 "PutAttachment/RW/group/NoAuth/Conflict.status": http.StatusConflict,
185 "PutAttachment/RW/group/NoAuth/UpdateDesignDoc.status": http.StatusUnauthorized,
186 "PutAttachment/RW/group/NoAuth/CreateDesignDoc.status": http.StatusUnauthorized,
187
188
189
190 "DeleteAttachment/RW/group/Admin/NoDoc.status": http.StatusConflict,
191 "DeleteAttachment/RW/group/NoAuth/NoDoc.status": http.StatusConflict,
192 "DeleteAttachment/RW/group/NoAuth/DesignDoc.status": http.StatusUnauthorized,
193
194 "Put/RW/Admin/group/LeadingUnderscoreInID.status": http.StatusBadRequest,
195 "Put/RW/Admin/group/Conflict.status": http.StatusConflict,
196 "Put/RW/NoAuth/group/LeadingUnderscoreInID.status": http.StatusBadRequest,
197 "Put/RW/NoAuth/group/DesignDoc.status": http.StatusUnauthorized,
198 "Put/RW/NoAuth/group/Conflict.status": http.StatusConflict,
199
200 "CreateIndex/RW/Admin/group/EmptyIndex.status": http.StatusBadRequest,
201 "CreateIndex/RW/Admin/group/BlankIndex.status": http.StatusBadRequest,
202 "CreateIndex/RW/Admin/group/InvalidIndex.status": http.StatusBadRequest,
203 "CreateIndex/RW/Admin/group/NilIndex.status": http.StatusBadRequest,
204 "CreateIndex/RW/Admin/group/InvalidJSON.status": http.StatusBadRequest,
205 "CreateIndex/RW/NoAuth/group/EmptyIndex.status": http.StatusBadRequest,
206 "CreateIndex/RW/NoAuth/group/BlankIndex.status": http.StatusBadRequest,
207 "CreateIndex/RW/NoAuth/group/InvalidIndex.status": http.StatusBadRequest,
208 "CreateIndex/RW/NoAuth/group/NilIndex.status": http.StatusBadRequest,
209 "CreateIndex/RW/NoAuth/group/InvalidJSON.status": http.StatusBadRequest,
210 "CreateIndex/RW/NoAuth/group/Valid.status": http.StatusInternalServerError,
211
212 "GetIndexes.databases": []string{"_replicator", "_users", "_global_changes", "chicken", "_duck"},
213 "GetIndexes/Admin/_replicator.indexes": []kivik.Index{kt.AllDocsIndex},
214 "GetIndexes/Admin/_users.indexes": []kivik.Index{kt.AllDocsIndex},
215 "GetIndexes/Admin/_global_changes.indexes": []kivik.Index{kt.AllDocsIndex},
216 "GetIndexes/Admin/chicken.status": http.StatusNotFound,
217 "GetIndexes/Admin/_duck.status": http.StatusNotFound,
218 "GetIndexes/NoAuth/_replicator.indexes": []kivik.Index{kt.AllDocsIndex},
219 "GetIndexes/NoAuth/_users.indexes": []kivik.Index{kt.AllDocsIndex},
220 "GetIndexes/NoAuth/_global_changes.status": http.StatusUnauthorized,
221 "GetIndexes/NoAuth/chicken.status": http.StatusNotFound,
222 "GetIndexes/NoAuth/_duck.status": http.StatusUnauthorized,
223 "GetIndexes/RW.indexes": []kivik.Index{
224 kt.AllDocsIndex,
225 {
226 DesignDoc: "_design/foo",
227 Name: "bar",
228 Type: "json",
229 Definition: map[string]interface{}{
230 "fields": []map[string]string{
231 {"foo": "asc"},
232 },
233 "partial_filter_selector": map[string]string{},
234 },
235 },
236 },
237
238 "DeleteIndex/RW/Admin/group/NotFoundDdoc.status": http.StatusNotFound,
239 "DeleteIndex/RW/Admin/group/NotFoundName.status": http.StatusNotFound,
240 "DeleteIndex/RW/NoAuth/group/NotFoundDdoc.status": http.StatusNotFound,
241 "DeleteIndex/RW/NoAuth/group/NotFoundName.status": http.StatusNotFound,
242
243 "GetReplications/NoAuth.status": http.StatusUnauthorized,
244
245 "Replicate.NotFoundDB": "http://localhost:5984/foo",
246 "Replicate.timeoutSeconds": 60,
247 "Replicate.prefix": "http://localhost:5984/",
248 "Replicate/RW/NoAuth.status": http.StatusForbidden,
249 "Replicate/RW/Admin/group/MissingSource/Results.status": http.StatusNotFound,
250 "Replicate/RW/Admin/group/MissingTarget/Results.status": http.StatusNotFound,
251
252 "Query/RW/group/Admin/WithoutDocs/ScanDoc.status": http.StatusBadRequest,
253 "Query/RW/group/NoAuth/WithoutDocs/ScanDoc.status": http.StatusBadRequest,
254
255 "ViewCleanup/RW/NoAuth.status": http.StatusUnauthorized,
256
257 "Changes/Continuous.options": kivik.Params(map[string]interface{}{
258 "feed": "continuous",
259 "since": "now",
260 "heartbeat": 6000,
261 }),
262 })
263 }
264
View as plain text