summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Christopher Anderson <jchris@apache.org>2010-07-13 14:25:03 +0000
committerJohn Christopher Anderson <jchris@apache.org>2010-07-13 14:25:03 +0000
commit934693735ad6c6358a240a466d4ce121f150e1aa (patch)
treedee4dfd01224c0df892c1ca1b200bb8a12c8bb14
parent9599f7cd77ef8a6feacec3c8ead9432af02a57d3 (diff)
test and fix for deleting users documents
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@963723 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--share/www/script/test/users_db.js7
-rw-r--r--src/couchdb/couch_js_functions.hrl8
2 files changed, 10 insertions, 5 deletions
diff --git a/share/www/script/test/users_db.js b/share/www/script/test/users_db.js
index b85adf08..667ff3c1 100644
--- a/share/www/script/test/users_db.js
+++ b/share/www/script/test/users_db.js
@@ -85,8 +85,13 @@ couchTests.users_db = function(debug) {
T(/conflict/.test(e.reason))
}
+ // you can delete a user doc
+ s = CouchDB.session().userCtx;
+ T(s.name == null);
+ T(s.roles.indexOf("_admin") !== -1);
+ T(usersDb.deleteDoc(jchrisWithConflict).ok);
};
-
+
usersDb.deleteDb();
run_on_modified_server(
[{section: "couch_httpd_auth",
diff --git a/src/couchdb/couch_js_functions.hrl b/src/couchdb/couch_js_functions.hrl
index 3214b1f6..1f314f6e 100644
--- a/src/couchdb/couch_js_functions.hrl
+++ b/src/couchdb/couch_js_functions.hrl
@@ -12,10 +12,6 @@
-define(AUTH_DB_DOC_VALIDATE_FUNCTION, <<"
function(newDoc, oldDoc, userCtx) {
- if ((oldDoc && oldDoc.type !== 'user') || newDoc.type !== 'user') {
- throw({forbidden : 'doc.type must be user'});
- } // we only allow user docs for now
-
if (newDoc._deleted === true) {
// allow deletes by admins and matching users
// without checking the other fields
@@ -27,6 +23,10 @@
}
}
+ if ((oldDoc && oldDoc.type !== 'user') || newDoc.type !== 'user') {
+ throw({forbidden : 'doc.type must be user'});
+ } // we only allow user docs for now
+
if (!newDoc.name) {
throw({forbidden: 'doc.name is required'});
}