Skip to content

Commit

Permalink
fix(sqs): adapt to protocol change in sqs (#4404)
Browse files Browse the repository at this point in the history
  • Loading branch information
kuhe authored Apr 26, 2023
1 parent e2aff9d commit bdc8b02
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 6 deletions.
5 changes: 5 additions & 0 deletions .changes/next-release/feature-SQS-943e34bf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "feature",
"category": "SQS",
"description": "handle XML/JSON protocol change in SQS tests"
}
5 changes: 3 additions & 2 deletions lib/services/sqs.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ AWS.util.update(AWS.SQS.prototype, {
* @api private
*/
setupRequestListeners: function setupRequestListeners(request) {
request.addListener('build', this.buildEndpoint);
request.addListener('build', this.buildEndpoint.bind(this));

if (request.service.config.computeChecksums) {
if (request.operation === 'sendMessage') {
Expand Down Expand Up @@ -118,7 +118,8 @@ AWS.util.update(AWS.SQS.prototype, {
* @api private
*/
buildEndpoint: function buildEndpoint(request) {
var url = request.httpRequest.params.QueueUrl;
var params = request.httpRequest.params || this.config.params;
var url = params.QueueUrl;
if (url) {
request.httpRequest.endpoint = new AWS.Endpoint(url);

Expand Down
50 changes: 46 additions & 4 deletions test/services/sqs.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// Generated by CoffeeScript 1.12.3
var sqsModel = require('../../apis/sqs-2012-11-05.min.json');
var isJsonProtocol = sqsModel.metadata.protocol === 'json';

(function() {
var AWS, helpers;

Expand All @@ -7,19 +9,21 @@
AWS = helpers.AWS;

describe('AWS.SQS', function() {
var checksumValidate, sqs;
sqs = null;
var sqs = null;
beforeEach(function() {
return sqs = new AWS.SQS({
params: {
QueueUrl: 'http://url'
}
});
});
checksumValidate = function(operation, input, response, shouldPass, cb) {
var checksumValidate = function(operation, input, response, shouldPass, cb) {
helpers.mockHttpResponse(200, {}, response);
return sqs[operation](input).send(function(err, data) {
if (shouldPass) {
if (err !== null) {
throw err;
}
expect(err).to.equal(null);
} else {
expect(err).not.to.equal(null);
Expand Down Expand Up @@ -51,6 +55,12 @@
};
md5 = 'acbd18db4cc2f85cedef654fccc4a4d8';
payload = function(md5) {
if (isJsonProtocol) {
return JSON.stringify({
MD5OfMessageBody: md5,
MessageId: 'MSGID',
}, null, 2);
}
return '<SendMessageResponse><SendMessageResult>\n <MD5OfMessageBody>' + md5 + '</MD5OfMessageBody>\n <MessageId>MSGID</MessageId>\n</SendMessageResult></SendMessageResponse>';
};
it('correctly validates MD5 of message input', function(done) {
Expand Down Expand Up @@ -92,6 +102,27 @@
md5foo = 'acbd18db4cc2f85cedef654fccc4a4d8';
md5bar = '37b51d194a7513e45b56f6524f2d51f2';
payload = function(md5a, md5b, md5c) {
if (isJsonProtocol) {
return JSON.stringify({
Successful: [
{
Id: 'a',
MessageId: 'MSGID1',
MD5OfMessageBody: md5a
},
{
Id: 'b',
MessageId: 'MSGID2',
MD5OfMessageBody: md5b
},
{
Id: 'c',
MessageId: 'MSGID3',
MD5OfMessageBody: md5c
}
]
}, null, 2);
}
return '<SendMessageBatchResponse><SendMessageBatchResult>\n <SendMessageBatchResultEntry>\n <Id>a</Id>\n <MessageId>MSGID1</MessageId>\n <MD5OfMessageBody>' + md5a + '</MD5OfMessageBody>\n </SendMessageBatchResultEntry>\n <SendMessageBatchResultEntry>\n <Id>b</Id>\n <MessageId>MSGID2</MessageId>\n <MD5OfMessageBody>' + md5b + '</MD5OfMessageBody>\n </SendMessageBatchResultEntry>\n <SendMessageBatchResultEntry>\n <Id>c</Id>\n <MessageId>MSGID3</MessageId>\n <MD5OfMessageBody>' + md5c + '</MD5OfMessageBody>\n </SendMessageBatchResultEntry>\n</SendMessageBatchResult></SendMessageBatchResponse>';
};
it('correctly validates MD5 of operation', function(done) {
Expand Down Expand Up @@ -126,6 +157,17 @@
var md5, payload;
md5 = 'acbd18db4cc2f85cedef654fccc4a4d8';
payload = function(body, md5, id) {
if (isJsonProtocol) {
return JSON.stringify({
Messages: [
{
Body: body,
MD5OfBody: md5,
MessageId: id
}
]
}, null, 2);
}
return '<ReceiveMessageResponse><ReceiveMessageResult><Message>\n <Body>' + body + '</Body>\n <MD5OfBody>' + md5 + '</MD5OfBody>\n <MessageId>' + id + '</MessageId>\n</Message></ReceiveMessageResult></ReceiveMessageResponse>';
};
it('correctly validates MD5 of operation', function(done) {
Expand Down

0 comments on commit bdc8b02

Please sign in to comment.