From 92b5780638312375e049269e77f1d41a0d5a9f67 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Thu, 29 Jul 2010 06:05:01 +0000 Subject: fix the underlying issue that was giving replication problems attempting to push design docs as a non-admin. this is what my reverted commit should have been git-svn-id: https://svn.apache.org/repos/asf/couchdb/branches/1.0.x@980320 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/test/security_validation.js | 16 ++++++++++++---- src/couchdb/couch_db.erl | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/share/www/script/test/security_validation.js b/share/www/script/test/security_validation.js index 67b04f3c..e0ab17d6 100644 --- a/share/www/script/test/security_validation.js +++ b/share/www/script/test/security_validation.js @@ -111,6 +111,18 @@ couchTests.security_validation = function(debug) { T(userDb.save(designDoc).ok); + var user2Db = new CouchDB("test_suite_db", + {"WWW-Authenticate": "X-Couch-Test-Auth Jan Lehnardt:apple"} + ); + // Attempt to save the design as a non-admin (in replication scenario) + try { + user2Db.save(designDoc, {new_edits : false}); + T(false && "Can't get here. Should have thrown an error on design doc"); + } catch (e) { + T(e.error == "unauthorized"); + T(user2Db.last_req.status == 401); + } + // test the _session API var resp = userDb.request("GET", "/_session"); var user = JSON.parse(resp.responseText).userCtx; @@ -134,10 +146,6 @@ couchTests.security_validation = function(debug) { } // Now attempt to update the document as a different user, Jan - var user2Db = new CouchDB("test_suite_db", - {"WWW-Authenticate": "X-Couch-Test-Auth Jan Lehnardt:apple"} - ); - var doc = user2Db.open("testdoc"); doc.foo=3; try { diff --git a/src/couchdb/couch_db.erl b/src/couchdb/couch_db.erl index 80f0d7bf..34b4f3fb 100644 --- a/src/couchdb/couch_db.erl +++ b/src/couchdb/couch_db.erl @@ -368,6 +368,8 @@ update_doc(Db, Doc, Options, UpdateType) -> case update_docs(Db, [Doc], Options, UpdateType) of {ok, [{ok, NewRev}]} -> {ok, NewRev}; + {ok, [{{_Id, _Rev}, Error}]} -> + throw(Error); {ok, [Error]} -> throw(Error); {ok, []} -> -- cgit v1.2.3