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