@contember/engine-s3-plugin 2.0.0-alpha.32 → 2.0.0-alpha.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/Config.cjs.map +1 -1
- package/dist/development/src/Config.js.map +1 -1
- package/dist/development/src/S3ConfigProcessor.cjs.map +1 -1
- package/dist/development/src/S3ConfigProcessor.js.map +1 -1
- package/dist/development/src/S3ObjectAuthorizator.cjs.map +1 -1
- package/dist/development/src/S3ObjectAuthorizator.js.map +1 -1
- package/dist/development/src/S3SchemaContributor.cjs.map +1 -1
- package/dist/development/src/S3SchemaContributor.js.map +1 -1
- package/dist/development/src/S3SchemaTypes.cjs.map +1 -1
- package/dist/development/src/S3SchemaTypes.js.map +1 -1
- package/dist/development/src/S3Service.cjs.map +1 -1
- package/dist/development/src/S3Service.js.map +1 -1
- package/dist/development/src/S3Signer.cjs.map +1 -1
- package/dist/development/src/S3Signer.js.map +1 -1
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/Config.cjs.map +1 -1
- package/dist/production/src/Config.js.map +1 -1
- package/dist/production/src/S3ConfigProcessor.cjs.map +1 -1
- package/dist/production/src/S3ConfigProcessor.js.map +1 -1
- package/dist/production/src/S3ObjectAuthorizator.cjs.map +1 -1
- package/dist/production/src/S3ObjectAuthorizator.js.map +1 -1
- package/dist/production/src/S3SchemaContributor.cjs.map +1 -1
- package/dist/production/src/S3SchemaContributor.js.map +1 -1
- package/dist/production/src/S3SchemaTypes.cjs.map +1 -1
- package/dist/production/src/S3SchemaTypes.js.map +1 -1
- package/dist/production/src/S3Service.cjs.map +1 -1
- package/dist/production/src/S3Service.js.map +1 -1
- package/dist/production/src/S3Signer.cjs.map +1 -1
- package/dist/production/src/S3Signer.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/S3ObjectAuthorizator.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/S3ObjectAuthorizator.ts +2 -0
- package/tests/cases/authorizator.test.ts +8 -8
- package/tests/cases/signRequest.test.ts +6 -6
- package/tsconfig.settings.json +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-s3-plugin",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.35",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@contember/engine-plugins": "2.0.0-alpha.
|
|
27
|
-
"@contember/graphql-utils": "2.0.0-alpha.
|
|
28
|
-
"@contember/typesafe": "2.0.0-alpha.
|
|
26
|
+
"@contember/engine-plugins": "2.0.0-alpha.35",
|
|
27
|
+
"@contember/graphql-utils": "2.0.0-alpha.35",
|
|
28
|
+
"@contember/typesafe": "2.0.0-alpha.35",
|
|
29
29
|
"mime-types": "^2.1.35",
|
|
30
30
|
"picomatch": "^4.0.2",
|
|
31
31
|
"qs": "^6.13.0",
|
|
@@ -42,4 +42,4 @@
|
|
|
42
42
|
"pg": "^8.9.0"
|
|
43
43
|
},
|
|
44
44
|
"type": "module"
|
|
45
|
-
}
|
|
45
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { test,
|
|
1
|
+
import { test, expect } from 'bun:test'
|
|
2
2
|
import { S3ObjectAuthorizator } from '../../src'
|
|
3
3
|
|
|
4
4
|
test('required read pattern', () => {
|
|
5
5
|
const authorizator = new S3ObjectAuthorizator([], [{ pattern: 'foo/**' }])
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
expect(() => authorizator.verifyReadAccess({ key: 'foo/lorem.jpg' })).not.toThrow()
|
|
7
|
+
expect(() => authorizator.verifyReadAccess({ key: 'lorem.jpg' })).toThrow('Read access forbidden for object key lorem.jpg')
|
|
8
8
|
})
|
|
9
9
|
|
|
10
10
|
test('required upload pattern', () => {
|
|
11
11
|
const authorizator = new S3ObjectAuthorizator([{ pattern: 'foo/**' }], [])
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
expect(() => authorizator.verifyUploadAccess({ key: 'foo/lorem.jpg', size: null })).not.toThrow()
|
|
13
|
+
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null })).toThrow('Upload access forbidden for object key lorem.jpg')
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
test('max upload size', () => {
|
|
18
18
|
const authorizator = new S3ObjectAuthorizator([{ pattern: '**', maxSize: 1024 }], [])
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 1000 })).not.toThrow()
|
|
20
|
+
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null })).toThrow('File size must be provided')
|
|
21
|
+
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 2048 })).toThrow('Uploaded file is too large')
|
|
22
22
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { test,
|
|
1
|
+
import { test, expect } from 'bun:test'
|
|
2
2
|
import { S3ObjectAuthorizator, S3Service } from '../../src'
|
|
3
3
|
|
|
4
4
|
const mocked = new Date('2021-07-02T17:22Z')
|
|
@@ -24,31 +24,31 @@ const createS3Service = (bucket: string, prefix = '') => new S3Service(
|
|
|
24
24
|
test('sign s3 request', () => {
|
|
25
25
|
const service = createS3Service('test')
|
|
26
26
|
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null })
|
|
27
|
-
expect(signed.url).
|
|
27
|
+
expect(signed.url).toEqual('https://test.s3.eu-central-1.amazonaws.com/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=00e912fe0383066802fc6c0f93ffb223320ca143992385fe69070bbb87c758dc&X-Amz-SignedHeaders=host')
|
|
28
28
|
})
|
|
29
29
|
|
|
30
30
|
test('sign s3 request - prefix', () => {
|
|
31
31
|
const service = createS3Service('test', 'lorem')
|
|
32
32
|
const signed = service.getSignedReadUrl({ objectKey: 'lorem/foo.jpg', expiration: null })
|
|
33
|
-
expect(signed.url).
|
|
33
|
+
expect(signed.url).toEqual('https://test.s3.eu-central-1.amazonaws.com/lorem/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=f6c69dc306422c2b3242c9d9d42147336817720ffae249af8bd91cc7062e9f6d&X-Amz-SignedHeaders=host')
|
|
34
34
|
})
|
|
35
35
|
|
|
36
36
|
test('sign upload', () => {
|
|
37
37
|
const service = createS3Service('test')
|
|
38
38
|
const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: null, extension: null, fileName: null, prefix: null, suffix: null, size: null })
|
|
39
|
-
expect(signed.url).
|
|
39
|
+
expect(signed.url).toEqual('https://test.s3.eu-central-1.amazonaws.com/9fce3907-ff2b-45bb-b4ce-eff5527dd315.jpeg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=fcd00b967054c19a2ee64b59e31d61e032ea086dcf2f0d8c36a883971c469c99&X-Amz-SignedHeaders=cache-control%3Bhost%3Bx-amz-acl&x-amz-acl=public-read')
|
|
40
40
|
})
|
|
41
41
|
|
|
42
42
|
test('sign upload #2', () => {
|
|
43
43
|
const service = createS3Service('test')
|
|
44
44
|
const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: 'INLINE', extension: 'jpeg', fileName: 'foo-bar.jpeg', prefix: 'foo', suffix: 'bar', size: null })
|
|
45
|
-
expect(signed.url).
|
|
45
|
+
expect(signed.url).toEqual('https://test.s3.eu-central-1.amazonaws.com/foo/9fce3907-ff2b-45bb-b4ce-eff5527dd315bar.jpeg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=979a93bca65a98ce6b2bf97d2bf2afe7d5f2fa805f7d596187675416c86a3bd5&X-Amz-SignedHeaders=cache-control%3Bcontent-disposition%3Bhost%3Bx-amz-acl&x-amz-acl=public-read')
|
|
46
46
|
})
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
test('bucket with dot', () => {
|
|
50
50
|
const service = createS3Service('test.foo')
|
|
51
51
|
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null })
|
|
52
|
-
expect(signed.url).
|
|
52
|
+
expect(signed.url).toEqual('https://s3.eu-central-1.amazonaws.com/test.foo/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=811a809196e60413e0e54e51d3dd91ab73ad1482b61e5371864d25d43ba642ff&X-Amz-SignedHeaders=host')
|
|
53
53
|
})
|
|
54
54
|
|