103 lines
1.8 KiB
TypeScript
103 lines
1.8 KiB
TypeScript
import fs from "fs"
|
|
import { join } from "path"
|
|
|
|
module AwsMock {
|
|
const aws: any = {}
|
|
|
|
const response = (body: any, extra?: any) => () => ({
|
|
promise: () => body,
|
|
...extra,
|
|
})
|
|
|
|
function DocumentClient() {
|
|
// @ts-ignore
|
|
this.put = jest.fn(response({}))
|
|
// @ts-ignore
|
|
this.query = jest.fn(
|
|
response({
|
|
Items: [],
|
|
})
|
|
)
|
|
// @ts-ignore
|
|
this.scan = jest.fn(
|
|
response({
|
|
Items: [
|
|
{
|
|
Name: "test",
|
|
},
|
|
],
|
|
})
|
|
)
|
|
// @ts-ignore
|
|
this.get = jest.fn(response({}))
|
|
// @ts-ignore
|
|
this.update = jest.fn(response({}))
|
|
// @ts-ignore
|
|
this.delete = jest.fn(response({}))
|
|
}
|
|
|
|
function S3() {
|
|
// @ts-ignore
|
|
this.listObjects = jest.fn(
|
|
response({
|
|
Contents: [],
|
|
})
|
|
)
|
|
|
|
// @ts-ignore
|
|
this.createBucket = jest.fn(
|
|
response({
|
|
Contents: {},
|
|
})
|
|
)
|
|
|
|
// @ts-ignore
|
|
this.deleteObjects = jest.fn(
|
|
response({
|
|
Contents: {},
|
|
})
|
|
)
|
|
|
|
// @ts-ignore
|
|
this.getSignedUrl = (operation, params) => {
|
|
return `http://example.com/${params.Bucket}/${params.Key}`
|
|
}
|
|
|
|
// @ts-ignore
|
|
this.headBucket = jest.fn(
|
|
response({
|
|
Contents: {},
|
|
})
|
|
)
|
|
|
|
// @ts-ignore
|
|
this.upload = jest.fn(
|
|
response({
|
|
Contents: {},
|
|
})
|
|
)
|
|
|
|
// @ts-ignore
|
|
this.getObject = jest.fn(
|
|
response(
|
|
{
|
|
Body: "",
|
|
},
|
|
{
|
|
createReadStream: jest
|
|
.fn()
|
|
.mockReturnValue(
|
|
fs.createReadStream(join(__dirname, "aws-sdk.ts"))
|
|
),
|
|
}
|
|
)
|
|
)
|
|
}
|
|
|
|
aws.DynamoDB = { DocumentClient }
|
|
aws.S3 = S3
|
|
aws.config = { update: jest.fn() }
|
|
|
|
module.exports = aws
|
|
}
|