summaryrefslogtreecommitdiff
path: root/test/javascript/tests/etags_views.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/javascript/tests/etags_views.js')
-rw-r--r--test/javascript/tests/etags_views.js224
1 files changed, 0 insertions, 224 deletions
diff --git a/test/javascript/tests/etags_views.js b/test/javascript/tests/etags_views.js
deleted file mode 100644
index 555fe663d..000000000
--- a/test/javascript/tests/etags_views.js
+++ /dev/null
@@ -1,224 +0,0 @@
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-// TODO: https://issues.apache.org/jira/browse/COUCHDB-2859
-couchTests.skip = true;
-couchTests.etags_views = function(debug) {
- var db_name = get_random_db_name();
- var db = new CouchDB(db_name, {"X-Couch-Full-Commit":"true"});
- db.createDb();
- if (debug) debugger;
-
- var designDoc = {
- _id: "_design/etags",
- language: "javascript",
- views : {
- fooView: {
- map: stringFun(function(doc) {
- if (doc.foo) {
- emit("bar", 1);
- }
- }),
- },
- basicView : {
- map : stringFun(function(doc) {
- if(doc.integer && doc.string) {
- emit(doc.integer, doc.string);
- }
- })
- },
- withReduce : {
- map : stringFun(function(doc) {
- if(doc.integer && doc.string) {
- emit(doc.integer, doc.string);
- }
- }),
- reduce : stringFun(function(keys, values, rereduce) {
- if (rereduce) {
- return sum(values);
- } else {
- return values.length;
- }
- })
- }
- }
- };
- T(db.save(designDoc).ok);
- db.bulkSave(makeDocs(0, 10));
-
- var xhr;
-
- // verify get w/Etag on map view
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- T(xhr.status == 200);
- var etag = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView", {
- headers: {"if-none-match": etag}
- });
- T(xhr.status == 304);
-
- // verify ETag doesn't change when an update
- // doesn't change the view group's index
- T(db.save({"_id":"doc1", "foo":"bar"}).ok);
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 == etag);
-
- // verify ETag always changes for include_docs=true on update
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView?include_docs=true");
- var etag1 = xhr.getResponseHeader("etag");
- T(db.save({"_id":"doc2", "foo":"bar"}).ok);
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView?include_docs=true");
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 != etag2);
-
- // Verify that purges affect etags
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/fooView");
- var foo_etag = xhr.getResponseHeader("etag");
- var doc1 = db.open("doc1");
- xhr = CouchDB.request("POST", "/" + db_name + "/_purge", {
- body: JSON.stringify({"doc1":[doc1._rev]})
- });
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/fooView");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 != foo_etag);
-
- // Test that _purge didn't affect the other view etags.
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 == etag);
-
- // verify different views in the same view group may have different ETags
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/fooView");
- var etag1 = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 != etag2);
-
- // verify ETag changes when an update changes the view group's index.
- db.bulkSave(makeDocs(10, 20));
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 != etag);
-
- // verify ETag is the same after a restart
- restartServer();
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/basicView");
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 == etag2);
-
- // reduce view
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- T(xhr.status == 200);
- var etag = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce",{
- headers: {"if-none-match": etag}
- });
- T(xhr.status == 304);
-
- // verify ETag doesn't change when an update
- // doesn't change the view group's index
- T(db.save({"_id":"doc3", "foo":"bar"}).ok);
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 == etag);
- // purge
- var doc3 = db.open("doc3");
- xhr = CouchDB.request("POST", "/" + db_name + "/_purge", {
- body: JSON.stringify({"doc3":[doc3._rev]})
- });
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 == etag);
-
- // verify different views in the same view group may have different ETags
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/fooView");
- var etag1 = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 != etag2);
-
- // verify ETag changes when an update changes the view group's index
- db.bulkSave(makeDocs(20, 30));
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- var etag1 = xhr.getResponseHeader("etag");
- T(etag1 != etag);
-
- // verify ETag is the same after a restart
- restartServer();
- xhr = CouchDB.request("GET", "/" + db_name + "/_design/etags/_view/withReduce");
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 == etag2);
-
- // confirm ETag changes with different POST bodies
- xhr = CouchDB.request("POST", "/" + db_name + "/_design/etags/_view/basicView",
- {body: JSON.stringify({keys:[1]})}
- );
- var etag1 = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("POST", "/" + db_name + "/_design/etags/_view/basicView",
- {body: JSON.stringify({keys:[2]})}
- );
- var etag2 = xhr.getResponseHeader("etag");
- T(etag1 != etag2, "POST to map view generates key-depdendent ETags");
-
- xhr = CouchDB.request("POST",
- "/" + db_name + "/_design/etags/_view/withReduce?group=true",
- {body: JSON.stringify({keys:[1]})}
- );
- etag1 = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("POST",
- "/" + db_name + "/_design/etags/_view/withReduce?group=true",
- {body: JSON.stringify({keys:[2]})}
- );
- etag2 = xhr.getResponseHeader("etag");
- T(etag1 != etag2, "POST to reduce view generates key-depdendent ETags");
-
- // all docs
- xhr = CouchDB.request("GET", "/" + db_name + "/_all_docs");
- T(xhr.status == 200);
- var etag = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_all_docs", {
- headers: {"if-none-match": etag}
- });
- T(xhr.status == 304);
-
- // _changes
- xhr = CouchDB.request("GET", "/" + db_name + "/_changes");
- T(xhr.status == 200);
- var etag = xhr.getResponseHeader("etag");
- xhr = CouchDB.request("GET", "/" + db_name + "/_changes", {
- headers: {"if-none-match": etag}
- });
- T(xhr.status == 304);
-
- // list etag
- // in the list test for now
-
- // A new database should have unique _all_docs etags.
- db.deleteDb();
- db.createDb(); // TODO: when re-activating try having a new DB name
- db.save({a: 1});
- xhr = CouchDB.request("GET", "/" + db_name + "/_all_docs");
- var etag = xhr.getResponseHeader("etag");
- db.deleteDb();
- db.createDb(); // TODO: when re-activating try having a new DB name
- db.save({a: 2});
- xhr = CouchDB.request("GET", "/" + db_name + "/_all_docs");
- var new_etag = xhr.getResponseHeader("etag");
- T(etag != new_etag);
- // but still be cacheable
- xhr = CouchDB.request("GET", "/" + db_name + "/_all_docs");
- T(new_etag == xhr.getResponseHeader("etag"));
-
- // cleanup
- db.deleteDb();
-};