From 3164ddedffaadf26837c9a0a9bf366048b230b54 Mon Sep 17 00:00:00 2001 From: Christopher Lenz Date: Mon, 23 Jun 2008 15:23:32 +0000 Subject: Seal the document in Javascript view functions in 'deep' mode so that it's not possible to modify values in nested arrays and objects. git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@670653 13f79535-47bb-0310-9956-ffa450edef68 --- share/server/main.js | 2 +- share/www/script/couch_tests.js | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'share') diff --git a/share/server/main.js b/share/server/main.js index 9773cf6c..05615ccd 100644 --- a/share/server/main.js +++ b/share/server/main.js @@ -74,7 +74,7 @@ while (cmd = eval(readline())) { // ] // var doc = cmd[1]; - seal(doc); // seal to prevent map functions from changing doc + seal(doc, true); // seal to prevent map functions from changing doc var buf = []; for (var i = 0; i < funs.length; i++) { map_results = []; diff --git a/share/www/script/couch_tests.js b/share/www/script/couch_tests.js index cc770a9b..e09569c2 100644 --- a/share/www/script/couch_tests.js +++ b/share/www/script/couch_tests.js @@ -871,12 +871,18 @@ var tests = { db.createDb(); if (debug) debugger; - var docs = makeDocs(1, 2); - T(db.bulkSave(docs).ok); + var doc = {integer: 1, string: "1", array: [1, 2, 3]}; + T(db.save(doc).ok); // make sure that attempting to change the document throws an error var results = db.query(function(doc) { - doc._id = "foo"; + doc.integer = 2; + emit(null, doc); + }); + T(results.total_rows == 0); + + var results = db.query(function(doc) { + doc.array[0] = 0; emit(null, doc); }); T(results.total_rows == 0); -- cgit v1.2.3