Skip to content

Commit

Permalink
Merge pull request #24 from DiegoRBaquero/patch-1
Browse files Browse the repository at this point in the history
fix: don't require id for FIFO messages (Fixes #23)
  • Loading branch information
niklasR authored Oct 31, 2017
2 parents a460485 + a4f1f11 commit 0079a11
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 23 deletions.
20 changes: 17 additions & 3 deletions lib/producer.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,28 @@ function isMessageAttributeValid(messageAttribute) {
}

function entryFromObject(message) {
if (!message.id || !message.body) {
throw new Error('Object messages must have \'id\' and \'body\' props');
if (!message.body) {
throw new Error('Object messages must have \'body\' prop');
}

if (!message.groupId && !message.deduplicationId && !message.id) {
throw new Error('Object messages must have \'id\' prop');
}

if (message.deduplicationId && !message.groupId) {
throw new Error('FIFO Queue messages must have \'groupId\' prop');
}

var entry = {
Id: message.id,
MessageBody: message.body
};

if(message.id) {
if (typeof message.id !== 'string') {
throw new Error('Message.id value must be a string');
}
entry.Id = message.id;
}

if (message.delaySeconds) {
if (
Expand Down
52 changes: 32 additions & 20 deletions test/producer.js
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,21 @@ describe('Producer', function () {
});
});

it('returns an error when object messages have invalid queueId param', function (done) {
it('returns an error when object messages have invalid id param', function (done) {
var errMessage = 'Message.id value must be a string';

var message1 = {
id: 1234,
body: 'body1'
};

producer.send(message1, function (err) {
assert.equal(err.message, errMessage);
done();
});
});

it('returns an error when object messages have invalid groupId param', function (done) {
var errMessage = 'Message.groupId value must be a string';

var message1 = {
Expand All @@ -352,6 +366,7 @@ describe('Producer', function () {
var message1 = {
id: 'id1',
body: 'body1',
groupId: '1234',
deduplicationId: 1234
};

Expand All @@ -360,31 +375,28 @@ describe('Producer', function () {
done();
});
});

it('returns an error when object messages are not of shape {id, body}', function (done) {
var errMessage = 'Object messages must have \'id\' and \'body\' props';
it('returns an error when fifo messages have no groupId param', function (done) {
var errMessage = 'FIFO Queue messages must have \'groupId\' prop';

var message1 = {
noId: 'noId1',
body: 'body1'
};
var message2 = {
id: 'id2',
body: 'body2'
id: 'id1',
body: 'body1',
deduplicationId: '1234'
};

producer.send(['foo', message1, message2], function (err) {
producer.send(message1, function (err) {
assert.equal(err.message, errMessage);
done();
});
});

it('returns an error when object messages are not of shape {id, body} 2', function (done) {
var errMessage = 'Object messages must have \'id\' and \'body\' props';
it('returns an error when object messages are not of shape {id, body}', function (done) {
var errMessage = 'Object messages must have \'id\' prop';

var message1 = {
id: 'id1',
noBody: 'noBody1'
noId: 'noId1',
body: 'body1'
};
var message2 = {
id: 'id2',
Expand All @@ -397,16 +409,16 @@ describe('Producer', function () {
});
});

it('returns an error when object messages are not of shape {id, body} 3', function (done) {
var errMessage = 'Object messages must have \'id\' and \'body\' props';
it('returns an error when object messages are not of shape {id, body} 2', function (done) {
var errMessage = 'Object messages must have \'body\' prop';

var message1 = {
id: 'id1',
body: 'body1'
noBody: 'noBody1'
};
var message2 = {
noId: 'noId2',
noBody: 'noBody2'
id: 'id2',
body: 'body2'
};

producer.send(['foo', message1, message2], function (err) {
Expand Down

0 comments on commit 0079a11

Please sign in to comment.