forked from dansalias/aws_s3_presign
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.ts
71 lines (64 loc) · 2.42 KB
/
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
import {
assertEquals,
} from 'https://deno.land/[email protected]/testing/asserts.ts'
import {
encodeString,
getSignedUrl,
hmacSha256Hex,
sha256
} from './mod.ts'
const date = new Date('Fri, 24 May 2013 00:00:00 GMT')
const baseTestOptions = {
path: '/examplebucket/test.txt',
region: 'us-east-1',
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
date,
}
Deno.test('calculates an SHA-256 digest', async () => {
assertEquals(
await sha256('sample text'),
'bc658c641ef71739fb9995bded59b21150bbff4367f6e4e4c7934b489b9d2c00'
)
})
Deno.test('calculates an HMAC SHA-256 signature', async () => {
assertEquals(
await hmacSha256Hex(
encodeString('sample key'),
'sample value'
),
'c95d935bc17cec2e0d8f951fe5e0c63c6ef2eb5842a9ebac1a47fc22ac341877'
)
})
Deno.test('creates a presigned URL', async () => {
assertEquals(
await getSignedUrl(baseTestOptions),
[
'https://s3.amazonaws.com/examplebucket/test.txt',
'?X-Amz-Algorithm=AWS4-HMAC-SHA256',
'&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20130524%2Fus-east-1%2Fs3%2Faws4_request',
'&X-Amz-Date=20130524T000000Z',
'&X-Amz-Expires=86400',
'&X-Amz-SignedHeaders=host',
'&X-Amz-Signature=733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7',
].join('')
)
})
Deno.test('creates a presigned URL with a session token', async () => {
assertEquals(
await getSignedUrl({
...baseTestOptions,
sessionToken: 'AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE',
}),
[
'https://s3.amazonaws.com/examplebucket/test.txt',
'?X-Amz-Algorithm=AWS4-HMAC-SHA256',
'&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20130524%2Fus-east-1%2Fs3%2Faws4_request',
'&X-Amz-Date=20130524T000000Z',
'&X-Amz-Expires=86400',
'&X-Amz-Security-Token=AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT%2BFvwqnKwRcOIfrRh3c%2FLTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE%2FIvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb%2FAXlzBBko7b15fjrBs2%2BcTQtpZ3CYWFXG8C5zqx37wnOE49mRl%2F%2BOtkIKGO7fAE',
'&X-Amz-SignedHeaders=host',
'&X-Amz-Signature=77cb31eed6fa73ec3a4bdeab05014a9e387d20e7bea4e132a15159451a73caea',
].join('')
)
})