-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathS3Bucket.test.js
86 lines (78 loc) · 2.74 KB
/
S3Bucket.test.js
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
const assert = require('assert')
const Test = require('thunk-test')
const S3 = require('./S3')
const S3Bucket = require('./S3Bucket')
const inspect = require('./internal/inspect')
const test = new Test('S3Bucket', S3Bucket)
.before(async function () {
this.s3 = new S3({
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
endpoint: 'http://localhost:9000',
region: 'us-west-1',
})
try {
await new S3Bucket({
name: 'test-bucket',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
endpoint: 'http://localhost:9000',
region: 'us-west-1',
}).deleteObjects(['a', 'b', 'c'])
await new S3Bucket({
name: 'test-bucket',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
endpoint: 'http://localhost:9000',
region: 'us-west-1',
}).deleteObject('binary')
await this.s3.deleteBucket('test-bucket')
} catch {}
})
.case({
name: 'test-bucket',
accessKeyId: 'minioadmin',
secretAccessKey: 'minioadmin',
endpoint: 'http://localhost:9000/',
region: 'us-west-1',
}, async function (testBucket) {
await testBucket.ready
await testBucket.deleteObjects(['a', 'b', 'c'])
await testBucket.deleteObject('binary')
await testBucket.putObject('a', JSON.stringify({ id: 'a' }), {
ContentType: 'application/json',
})
await testBucket.putObject('b', JSON.stringify({ id: 'b' }))
await testBucket.putObject('c', JSON.stringify({ id: 'c' }))
const a = await testBucket.getObject('a')
assert(a.ETag == '"6a1a81494a7765ad411580b31c1b7044"')
assert(a.Body.toString() == '{"id":"a"}')
assert(a.ContentType == 'application/json')
const s3Objects = await testBucket.listObjects()
assert(s3Objects.Contents.length == 3)
assert(s3Objects.Contents[0].Key == 'a')
assert(s3Objects.Contents[1].Key == 'b')
assert(s3Objects.Contents[2].Key == 'c')
await testBucket.putObject('binary', Buffer.from('binary'))
const binary = await testBucket.getObject('binary')
assert(binary.ContentType == 'application/octet-stream')
assert.deepEqual(binary.Body, Buffer.from('binary'))
const res = await testBucket.upload('buffer', Buffer.from('buffer'))
const buffer = await testBucket.getObject('buffer')
assert(buffer.ContentType == 'application/octet-stream')
assert.deepEqual(buffer.Body, Buffer.from('buffer'))
{
const key = 'buffer2'
await testBucket.upload(key, Buffer.from('buffer'))
const headRes = await testBucket.headObject(key)
assert.equal(headRes.ContentLength, 6)
const res = await testBucket.getObjectStream(key)
assert.equal(res.headers.ContentLength, 6)
}
await testBucket.deleteAllObjects({ MaxKeys: 1 })
const deleted = await testBucket.delete()
})
if (process.argv[1] == __filename) {
test()
}
module.exports = test