diff options
-rw-r--r-- | share/www/script/test/uuids.js | 19 | ||||
-rw-r--r-- | src/couchdb/couch_httpd_misc_handlers.erl | 17 |
2 files changed, 25 insertions, 11 deletions
diff --git a/share/www/script/test/uuids.js b/share/www/script/test/uuids.js index 50621678..4de7ce90 100644 --- a/share/www/script/test/uuids.js +++ b/share/www/script/test/uuids.js @@ -11,16 +11,25 @@ // the License. couchTests.uuids = function(debug) { + var etags = []; var testHashBustingHeaders = function(xhr) { T(xhr.getResponseHeader("Cache-Control").match(/no-cache/)); T(xhr.getResponseHeader("Pragma") == "no-cache"); - var currentTime = new Date(); - var expiresHeader = Date.parse(xhr.getResponseHeader("Expires")); - var dateHeader = Date.parse(xhr.getResponseHeader("Date")); + var newetag = xhr.getResponseHeader("ETag"); + T(etags.indexOf(newetag) < 0); + etags[etags.length] = newetag; + + // Removing the time based tests as they break easily when + // running CouchDB on a remote server in regards to the browser + // running the Futon test suite. + // + //var currentTime = new Date(); + //var expiresHeader = Date.parse(xhr.getResponseHeader("Expires")); + //var dateHeader = Date.parse(xhr.getResponseHeader("Date")); - T(expiresHeader < currentTime); - T(currentTime - dateHeader < 3000); + //T(expiresHeader < currentTime); + //T(currentTime - dateHeader < 3000); }; var db = new CouchDB("test_suite_db", {"X-Couch-Full-Commit":"false"}); diff --git a/src/couchdb/couch_httpd_misc_handlers.erl b/src/couchdb/couch_httpd_misc_handlers.erl index 37ed709f..24eaa82e 100644 --- a/src/couchdb/couch_httpd_misc_handlers.erl +++ b/src/couchdb/couch_httpd_misc_handlers.erl @@ -106,13 +106,18 @@ handle_restart_req(Req) -> handle_uuids_req(#httpd{method='GET'}=Req) -> Count = list_to_integer(couch_httpd:qs_value(Req, "count", "1")), - CacheBustingHeaders = [{"Date", httpd_util:rfc1123_date()}, - {"Cache-Control", "no-cache"}, - % Past date, ON PURPOSE! - {"Expires", "Fri, 01 Jan 1990 00:00:00 GMT"}, - {"Pragma", "no-cache"}], UUIDs = [couch_uuids:new() || _ <- lists:seq(1, Count)], - send_json(Req, 200, CacheBustingHeaders, {[{<<"uuids">>, UUIDs}]}); + couch_httpd:etag_respond(Req, erlang:md5(UUIDs), fun() -> + CacheBustingHeaders = [ + {"Date", httpd_util:rfc1123_date()}, + {"Cache-Control", "no-cache"}, + % Past date, ON PURPOSE! + {"Expires", "Fri, 01 Jan 1990 00:00:00 GMT"}, + {"Pragma", "no-cache"}, + {"ETag", erlang:md5(UUIDs)} + ], + send_json(Req, 200, CacheBustingHeaders, {[{<<"uuids">>, UUIDs}]}) + end); handle_uuids_req(Req) -> send_method_not_allowed(Req, "GET"). |