-
Notifications
You must be signed in to change notification settings - Fork 578
/
etag_test.ts
129 lines (119 loc) · 3.01 KB
/
etag_test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { assert, assertEquals } from "../testing/asserts.ts";
import { calculate, ifMatch, ifNoneMatch } from "./etag.ts";
const encoder = new TextEncoder();
Deno.test({
name: "etag - calculate - string - empty",
async fn() {
const actual = await calculate("");
assertEquals(actual, `"0-47DEQpj8HBSa+/TImW+5JCeuQeR"`);
},
});
Deno.test({
name: "etag - calculate - string",
async fn() {
const actual = await calculate("hello deno");
assertEquals(actual, `"a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`);
},
});
Deno.test({
name: "etag - calculate - Uint8Array - empty",
async fn() {
const actual = await calculate(new Uint8Array());
assertEquals(actual, `"0-47DEQpj8HBSa+/TImW+5JCeuQeR"`);
},
});
Deno.test({
name: "etag - calculate - Uint8Array",
async fn() {
const actual = await calculate(encoder.encode("hello deno"));
assertEquals(actual, `"a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`);
},
});
Deno.test({
name: "etag - calculate - Deno.FileInfo",
async fn() {
const fixture: Deno.FileInfo = {
isFile: true,
isDirectory: false,
isSymlink: false,
size: 1024,
mtime: new Date(Date.UTC(96, 1, 2, 3, 4, 5, 6)),
atime: null,
birthtime: null,
dev: 0,
ino: null,
mode: null,
nlink: null,
uid: null,
gid: null,
rdev: null,
blksize: null,
blocks: null,
};
const actual = await calculate(fixture);
assertEquals(actual, `W/"400-H0YzXysQPV20qNisAZMuvAEVuHV"`);
},
});
Deno.test({
name: "etag - ifMatch",
async fn() {
assert(!ifMatch(`"abcdefg"`, await calculate("hello deno")));
assert(
ifMatch(`"a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`, await calculate("hello deno")),
);
assert(
ifMatch(
`"abcdefg", "a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`,
await calculate("hello deno"),
),
);
assert(ifMatch("*", await calculate("hello deno")));
assert(
!ifMatch(
"*",
await calculate({
size: 1024,
mtime: new Date(Date.UTC(96, 1, 2, 3, 4, 5, 6)),
}),
),
);
},
});
Deno.test({
name: "etag - ifNoneMatch",
async fn() {
assert(ifNoneMatch(`"abcdefg"`, await calculate("hello deno")));
assert(
!ifNoneMatch(
`"a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`,
await calculate("hello deno"),
),
);
assert(
!ifNoneMatch(
`"abcdefg", "a-YdfmHmj2RiwOVqJupcf3PLK9PuJ"`,
await calculate("hello deno"),
),
);
assert(!ifNoneMatch("*", await calculate("hello deno")));
assert(
!ifNoneMatch(
`W/"400-H0YzXysQPV20qNisAZMuvAEVuHV"`,
await calculate({
size: 1024,
mtime: new Date(Date.UTC(96, 1, 2, 3, 4, 5, 6)),
}),
),
);
assert(
!ifNoneMatch(
`"400-H0YzXysQPV20qNisAZMuvAEVuHV"`,
await calculate({
size: 1024,
mtime: new Date(Date.UTC(96, 1, 2, 3, 4, 5, 6)),
}),
),
);
},
});