diff options
author | Kyle Suarez <kyle.suarez@mongodb.com> | 2016-08-16 16:39:32 -0400 |
---|---|---|
committer | Kyle Suarez <kyle.suarez@mongodb.com> | 2016-08-16 16:39:32 -0400 |
commit | 5ba553bd6c8ee827762debfb6f01ee1ae9f3e425 (patch) | |
tree | 6ef83f6cf58aad01b6d3eed3ed4983402fd3403c /jstests/views | |
parent | 551bcf3a4e31a2727b9877bacaf34c529078963f (diff) | |
download | mongo-5ba553bd6c8ee827762debfb6f01ee1ae9f3e425.tar.gz |
SERVER-25301 Test views with legacy reads/writes
Diffstat (limited to 'jstests/views')
-rw-r--r-- | jstests/views/views_legacy.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/jstests/views/views_legacy.js b/jstests/views/views_legacy.js new file mode 100644 index 00000000000..46154fbdc30 --- /dev/null +++ b/jstests/views/views_legacy.js @@ -0,0 +1,42 @@ +/** + * Tests that views properly reject queries in legacy read mode, and reject writes performed in + * legacy write mode. + * + * TODO(SERVER-25641): If the views test suite is moved under core, we can get rid of this test + * after ensuring that it is included in a legacy passthrough suite. + */ +(function() { + "use strict"; + + let conn = MongoRunner.runMongod({setParameter: "enableViews=1"}); + + let viewsDB = conn.getDB("views_legacy"); + assert.commandWorked(viewsDB.dropDatabase()); + assert.commandWorked(viewsDB.createView("view", "collection", [])); + + // Helper function for performing getLastError. + function assertGetLastErrorFailed() { + let gle = viewsDB.runCommand({getLastError: 1}); + assert.commandWorked(gle); + assert.eq(gle.code, ErrorCodes.CommandNotSupportedOnView, tojson(gle)); + } + + // A view should reject all write CRUD operations performed in legacy write mode. + conn.forceWriteMode("legacy"); + + viewsDB.view.insert({x: 1}); + assertGetLastErrorFailed(); + + viewsDB.view.remove({x: 1}); + assertGetLastErrorFailed(); + + viewsDB.view.update({x: 1}, {x: 2}); + assertGetLastErrorFailed(); + + // Legacy find is explicitly prohibited on views; you must use the find command. + conn.forceReadMode("legacy"); + let res = assert.throws(function() { + viewsDB.view.find({x: 1}).toArray(); + }); + assert.eq(res.code, ErrorCodes.CommandNotSupportedOnView, tojson(res)); +}()); |