Skip to content

Commit bdc8b02

Browse files
authored
fix(sqs): adapt to protocol change in sqs (#4404)
1 parent e2aff9d commit bdc8b02

File tree

3 files changed

+54
-6
lines changed

3 files changed

+54
-6
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "feature",
3+
"category": "SQS",
4+
"description": "handle XML/JSON protocol change in SQS tests"
5+
}

lib/services/sqs.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ AWS.util.update(AWS.SQS.prototype, {
55
* @api private
66
*/
77
setupRequestListeners: function setupRequestListeners(request) {
8-
request.addListener('build', this.buildEndpoint);
8+
request.addListener('build', this.buildEndpoint.bind(this));
99

1010
if (request.service.config.computeChecksums) {
1111
if (request.operation === 'sendMessage') {
@@ -118,7 +118,8 @@ AWS.util.update(AWS.SQS.prototype, {
118118
* @api private
119119
*/
120120
buildEndpoint: function buildEndpoint(request) {
121-
var url = request.httpRequest.params.QueueUrl;
121+
var params = request.httpRequest.params || this.config.params;
122+
var url = params.QueueUrl;
122123
if (url) {
123124
request.httpRequest.endpoint = new AWS.Endpoint(url);
124125

test/services/sqs.spec.js

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
// Generated by CoffeeScript 1.12.3
1+
var sqsModel = require('../../apis/sqs-2012-11-05.min.json');
2+
var isJsonProtocol = sqsModel.metadata.protocol === 'json';
3+
24
(function() {
35
var AWS, helpers;
46

@@ -7,19 +9,21 @@
79
AWS = helpers.AWS;
810

911
describe('AWS.SQS', function() {
10-
var checksumValidate, sqs;
11-
sqs = null;
12+
var sqs = null;
1213
beforeEach(function() {
1314
return sqs = new AWS.SQS({
1415
params: {
1516
QueueUrl: 'http://url'
1617
}
1718
});
1819
});
19-
checksumValidate = function(operation, input, response, shouldPass, cb) {
20+
var checksumValidate = function(operation, input, response, shouldPass, cb) {
2021
helpers.mockHttpResponse(200, {}, response);
2122
return sqs[operation](input).send(function(err, data) {
2223
if (shouldPass) {
24+
if (err !== null) {
25+
throw err;
26+
}
2327
expect(err).to.equal(null);
2428
} else {
2529
expect(err).not.to.equal(null);
@@ -51,6 +55,12 @@
5155
};
5256
md5 = 'acbd18db4cc2f85cedef654fccc4a4d8';
5357
payload = function(md5) {
58+
if (isJsonProtocol) {
59+
return JSON.stringify({
60+
MD5OfMessageBody: md5,
61+
MessageId: 'MSGID',
62+
}, null, 2);
63+
}
5464
return '<SendMessageResponse><SendMessageResult>\n <MD5OfMessageBody>' + md5 + '</MD5OfMessageBody>\n <MessageId>MSGID</MessageId>\n</SendMessageResult></SendMessageResponse>';
5565
};
5666
it('correctly validates MD5 of message input', function(done) {
@@ -92,6 +102,27 @@
92102
md5foo = 'acbd18db4cc2f85cedef654fccc4a4d8';
93103
md5bar = '37b51d194a7513e45b56f6524f2d51f2';
94104
payload = function(md5a, md5b, md5c) {
105+
if (isJsonProtocol) {
106+
return JSON.stringify({
107+
Successful: [
108+
{
109+
Id: 'a',
110+
MessageId: 'MSGID1',
111+
MD5OfMessageBody: md5a
112+
},
113+
{
114+
Id: 'b',
115+
MessageId: 'MSGID2',
116+
MD5OfMessageBody: md5b
117+
},
118+
{
119+
Id: 'c',
120+
MessageId: 'MSGID3',
121+
MD5OfMessageBody: md5c
122+
}
123+
]
124+
}, null, 2);
125+
}
95126
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>';
96127
};
97128
it('correctly validates MD5 of operation', function(done) {
@@ -126,6 +157,17 @@
126157
var md5, payload;
127158
md5 = 'acbd18db4cc2f85cedef654fccc4a4d8';
128159
payload = function(body, md5, id) {
160+
if (isJsonProtocol) {
161+
return JSON.stringify({
162+
Messages: [
163+
{
164+
Body: body,
165+
MD5OfBody: md5,
166+
MessageId: id
167+
}
168+
]
169+
}, null, 2);
170+
}
129171
return '<ReceiveMessageResponse><ReceiveMessageResult><Message>\n <Body>' + body + '</Body>\n <MD5OfBody>' + md5 + '</MD5OfBody>\n <MessageId>' + id + '</MessageId>\n</Message></ReceiveMessageResult></ReceiveMessageResponse>';
130172
};
131173
it('correctly validates MD5 of operation', function(done) {

0 commit comments

Comments
 (0)