summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2017-05-09 14:46:02 -0700
committerAnna Henningsen <anna@addaleax.net>2017-05-23 19:39:43 +0200
commitc0d858f8bb8ba5212548da2fba6a7bc02db0462b (patch)
tree99f043ec5aec3f5150a2aed0f62597234b158140 /deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js
parent994617370e8e66f3ea9488fec32fd912e7902396 (diff)
downloadandroid-node-v8-c0d858f8bb8ba5212548da2fba6a7bc02db0462b.tar.gz
android-node-v8-c0d858f8bb8ba5212548da2fba6a7bc02db0462b.tar.bz2
android-node-v8-c0d858f8bb8ba5212548da2fba6a7bc02db0462b.zip
deps: upgrade npm beta to 5.0.0-beta.56
PR-URL: https://github.com/nodejs/node/pull/12936 Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js')
-rw-r--r--deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js
new file mode 100644
index 0000000000..9d5cfb2325
--- /dev/null
+++ b/deps/npm/node_modules/pacote/node_modules/make-fetch-happen/node_modules/http-cache-semantics/test/varytest.js
@@ -0,0 +1,75 @@
+'use strict';
+
+const assert = require('assert');
+const CachePolicy = require('..');
+
+describe('Vary', function() {
+ it('Basic', function() {
+ const policy = new CachePolicy({headers:{'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'weather'}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'weather': 'nice'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'weather': 'bad'}}));
+ });
+
+ it("* doesn't match", function() {
+ const policy = new CachePolicy({headers:{'weather': 'ok'}}, {headers:{'cache-control':'max-age=5','vary':'*'}});
+
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'weather': 'ok'}}));
+ });
+
+ it("* is stale", function() {
+ const policy1 = new CachePolicy({headers:{'weather': 'ok'}}, {headers:{'cache-control':'public,max-age=99', 'vary':'*'}});
+ const policy2 = new CachePolicy({headers:{'weather': 'ok'}}, {headers:{'cache-control':'public,max-age=99', 'vary':'weather'}});
+
+ assert(policy1.stale());
+ assert(!policy2.stale());
+ });
+
+ it('Values are case-sensitive', function() {
+ const policy = new CachePolicy({headers:{'weather': 'BAD'}}, {headers:{'cache-control':'max-age=5','vary':'Weather'}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'weather': 'BAD'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'weather': 'bad'}}));
+ });
+
+ it('Irrelevant headers ignored', function() {
+ const policy = new CachePolicy({headers:{'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'moon-phase'}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'weather': 'bad'}}));
+ assert(policy.satisfiesWithoutRevalidation({headers:{'sun': 'shining'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'moon-phase': 'full'}}));
+ });
+
+ it('Absence is meaningful', function() {
+ const policy = new CachePolicy({headers:{'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'moon-phase, weather'}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'weather': 'nice'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'weather': 'nice', 'moon-phase': ''}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{}}));
+ });
+
+ it('All values must match', function() {
+ const policy = new CachePolicy({headers:{'sun': 'shining', 'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'weather, sun'}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'sun': 'shining', 'weather': 'nice'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'sun': 'shining', 'weather': 'bad'}}));
+ });
+
+ it('Whitespace is OK', function() {
+ const policy = new CachePolicy({headers:{'sun': 'shining', 'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':' weather , sun '}});
+
+ assert(policy.satisfiesWithoutRevalidation({headers:{'sun': 'shining', 'weather': 'nice'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'weather': 'nice'}}));
+ assert(!policy.satisfiesWithoutRevalidation({headers:{'sun': 'shining'}}));
+ });
+
+ it('Order is irrelevant', function() {
+ const policy1 = new CachePolicy({headers:{'sun': 'shining', 'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'weather, sun'}});
+ const policy2 = new CachePolicy({headers:{'sun': 'shining', 'weather': 'nice'}}, {headers:{'cache-control':'max-age=5','vary':'sun, weather'}});
+
+ assert(policy1.satisfiesWithoutRevalidation({headers:{'weather': 'nice', 'sun': 'shining'}}));
+ assert(policy1.satisfiesWithoutRevalidation({headers:{'sun': 'shining', 'weather': 'nice'}}));
+ assert(policy2.satisfiesWithoutRevalidation({headers:{'weather': 'nice', 'sun': 'shining'}}));
+ assert(policy2.satisfiesWithoutRevalidation({headers:{'sun': 'shining', 'weather': 'nice'}}));
+ });
+});