github.com/go-kivik/kivik/v4@v4.3.2/couchdb/test/couchdb31.go (about) 1 // Licensed under the Apache License, Version 2.0 (the "License"); you may not 2 // use this file except in compliance with the License. You may obtain a copy of 3 // the License at 4 // 5 // http://www.apache.org/licenses/LICENSE-2.0 6 // 7 // Unless required by applicable law or agreed to in writing, software 8 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 // License for the specific language governing permissions and limitations under 11 // the License. 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 // nolint:gomnd 24 func registerSuiteCouch31() { 25 kiviktest.RegisterSuite(kiviktest.SuiteCouch31, 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 // "DBsStats/NoAuth.status": http.StatusUnauthorized, 101 102 "AllDBsStats/NoAuth.status": http.StatusUnauthorized, 103 104 "Log.skip": true, // This was removed in CouchDB 2.0 105 106 "Version.version": `^3\.1\.`, 107 "Version.vendor": `^The Apache Software Foundation$`, 108 "Version.vendor_version": ``, // CouchDB 2.0+ no longer has a 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, // As of 2.1.1 all redirect paths must begin with '/' 163 "Session/Post/GoodCredsJSONRedirEmpty.status": http.StatusBadRequest, // As of 2.1.1 all redirect paths must begin with '/' 164 "Session/Post/GoodCredsJSONRedirRelativeNoSlash.status": http.StatusBadRequest, // As of 2.1.1 all redirect paths must begin with '/' 165 "Session/Post/GoodCredsJSONRemoteRedirHeaderInjection.skip": true, // CouchDB allows header injection 166 "Session/Post/GoodCredsJSONRemoteRedirInvalidURL.skip": true, // CouchDB doesn't sanitize the Location value, so sends unparseable headers. 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 // "DeleteAttachment/RW/group/Admin/NotFound.status": http.StatusNotFound, // COUCHDB-3362 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 }