Skip to content

Commit

Permalink
Merge pull request #188 from jamhall/fix-s3event
Browse files Browse the repository at this point in the history
Size and MD5 missing in certain event types
  • Loading branch information
kherock committed Mar 15, 2018
2 parents c28f8cc + 535f717 commit 2c663ca
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 11 deletions.
6 changes: 3 additions & 3 deletions lib/controllers.js
Expand Up @@ -498,9 +498,9 @@ module.exports = function(rootDirectory, logger, indexDocument, errorDocument) {
triggerS3Event(req, res, {
bucket: req.params.bucket,
eventType: "Put",
S3Item: new S3Object(object.bucket, object.key, {
S3Item: new S3Object(object.bucket, object.key, null, {
"content-length": size,
etag: size
etag: JSON.stringify(md5)
})
});
res.header("ETag", JSON.stringify(md5));
Expand Down Expand Up @@ -592,7 +592,7 @@ module.exports = function(rootDirectory, logger, indexDocument, errorDocument) {
req.params.bucket,
req.params.key,
null,
{ etag: md5, "content-length": size }
{ etag: JSON.stringify(md5), "content-length": size }
)
});
// prettier-ignore
Expand Down
4 changes: 2 additions & 2 deletions lib/models/s3-event.js
Expand Up @@ -27,13 +27,13 @@ class S3Event {
case "Put":
eventName = "ObjectCreated:Put";
s3Object.size = eventData.S3Item.size;
s3Object.eTag = eventData.S3Item.etag;
s3Object.eTag = JSON.parse(eventData.S3Item.metadata["etag"]);
break;

case "Post":
eventName = "ObjectCreated:Post";
s3Object.size = eventData.S3Item.size;
s3Object.eTag = eventData.S3Item.etag;
s3Object.eTag = JSON.parse(eventData.S3Item.metadata["etag"]);
break;

case "Delete":
Expand Down
24 changes: 18 additions & 6 deletions test/test.js
Expand Up @@ -202,18 +202,24 @@ describe("S3rver Tests", function() {

it("should trigger a Put event", function*() {
const eventPromise = server.s3Event.take(1).toPromise();
const body = "Hello!";
yield s3Client
.putObject({ Bucket: buckets[0], Key: "testPutKey", Body: "Hello!" })
.putObject({ Bucket: buckets[0], Key: "testPutKey", Body: body })
.promise();
const event = yield eventPromise;
expect(event.Records[0].eventName).to.equal("ObjectCreated:Put");
expect(event.Records[0].s3.bucket.name).to.equal(buckets[0]);
expect(event.Records[0].s3.object.key).to.equal("testPutKey");
expect(event.Records[0].s3.object).to.contain({
key: "testPutKey",
size: body.length,
eTag: md5(body)
});
});

it("should trigger a Copy event", function*() {
const body = "Hello!";
yield s3Client
.putObject({ Bucket: buckets[0], Key: "testPut", Body: "Hello!" })
.putObject({ Bucket: buckets[0], Key: "testPut", Body: body })
.promise();
const eventPromise = server.s3Event.take(1).toPromise();
yield s3Client
Expand All @@ -226,15 +232,19 @@ describe("S3rver Tests", function() {
const event = yield eventPromise;
expect(event.Records[0].eventName).to.equal("ObjectCreated:Copy");
expect(event.Records[0].s3.bucket.name).to.equal(buckets[4]);
expect(event.Records[0].s3.object.key).to.equal("testCopy");
expect(event.Records[0].s3.object).to.contain({
key: "testCopy",
size: body.length
});
});

it("should trigger a Delete event", function*() {
const body = "Hello!";
yield s3Client
.putObject({
Bucket: buckets[0],
Key: "testDelete",
Body: "Hello!"
Body: body
})
.promise();
const eventPromise = server.s3Event.take(1).toPromise();
Expand All @@ -244,7 +254,9 @@ describe("S3rver Tests", function() {
const event = yield eventPromise;
expect(event.Records[0].eventName).to.equal("ObjectRemoved:Delete");
expect(event.Records[0].s3.bucket.name).to.equal(buckets[0]);
expect(event.Records[0].s3.object.key).to.equal("testDelete");
expect(event.Records[0].s3.object).to.contain({
key: "testDelete"
});
});

it("should store a text object with some custom metadata", function*() {
Expand Down

0 comments on commit 2c663ca

Please sign in to comment.