Skip to content

Commit fd0bf21

Browse files
authored
Merge pull request amqp-node#451 from jfromaniello/add_amqplain_credentials
add amqplain credentials
2 parents 6ee18f2 + ddc0553 commit fd0bf21

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

lib/credentials.js

+14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// * EXTERNAL (assume the server will figure out who you are from
1010
// context, i.e., your SSL certificate)
1111
var Buffer = require('safe-buffer').Buffer
12+
var codec = require('./codec')
1213

1314
module.exports.plain = function(user, passwd) {
1415
return {
@@ -21,6 +22,19 @@ module.exports.plain = function(user, passwd) {
2122
}
2223
}
2324

25+
module.exports.amqplain = function(user, passwd) {
26+
return {
27+
mechanism: 'AMQPLAIN',
28+
response: function() {
29+
const buffer = Buffer.alloc(16384);
30+
const size = codec.encodeTable(buffer, { LOGIN: user, PASSWORD: passwd}, 0);
31+
return buffer.slice(4, size);
32+
},
33+
username: user,
34+
password: passwd
35+
}
36+
}
37+
2438
module.exports.external = function() {
2539
return {
2640
mechanism: 'EXTERNAL',

test/connect.js

+12
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,18 @@ suite("Connect API", function() {
118118
kCallback(succeed(done), fail(done)));
119119
});
120120

121+
test("using amqplain credentials", function(done) {
122+
var url = require('url');
123+
var parts = url.parse(URL, true);
124+
var u = 'guest', p = 'guest';
125+
if (parts.auth) {
126+
var auth = parts.auth.split(":");
127+
u = auth[0], p = auth[1];
128+
}
129+
connect(URL, {credentials: require('../lib/credentials').amqplain(u, p)},
130+
kCallback(succeed(done), fail(done)));
131+
});
132+
121133
test("using unsupported mechanism", function(done) {
122134
var creds = {
123135
mechanism: 'UNSUPPORTED',

0 commit comments

Comments
 (0)