1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

Fix auth emitting the error even though a callback is present

Fix auth manipulating the returned error
And this is also removing some dead code
This commit is contained in:
Ruben Bridgewater
2015-09-14 22:13:43 +02:00
parent 1a06cfb6ec
commit ebbb0146b9
2 changed files with 32 additions and 7 deletions

View File

@@ -206,20 +206,20 @@ RedisClient.prototype.do_auth = function () {
debug("Warning: Redis server does not require a password, but a password was supplied."); debug("Warning: Redis server does not require a password, but a password was supplied.");
err = null; err = null;
res = "OK"; res = "OK";
} else if (self.auth_callback) {
self.auth_callback(err);
self.auth_callback = null;
} else { } else {
return self.emit("error", new Error("Auth error: " + err.message)); self.emit("error", err);
return;
} }
} }
res = res.toString(); res = res.toString();
if (res !== "OK") {
return self.emit("error", new Error("Auth failed: " + res));
}
debug("Auth succeeded " + self.address + " id " + self.connection_id); debug("Auth succeeded " + self.address + " id " + self.connection_id);
if (self.auth_callback) { if (self.auth_callback) {
self.auth_callback(err, res); self.auth_callback(null, res);
self.auth_callback = null; self.auth_callback = null;
} }

View File

@@ -34,7 +34,7 @@ describe("client authentication", function () {
}); });
}); });
it("raises error when auth is bad", function (done) { it("emits error when auth is bad without callback", function (done) {
if (helper.redisProcess().spawnFailed()) this.skip(); if (helper.redisProcess().spawnFailed()) this.skip();
client = redis.createClient.apply(redis.createClient, args); client = redis.createClient.apply(redis.createClient, args);
@@ -48,6 +48,18 @@ describe("client authentication", function () {
client.auth(auth + 'bad'); client.auth(auth + 'bad');
}); });
it("returns an error when auth is bad with a callback", function (done) {
if (helper.redisProcess().spawnFailed()) this.skip();
client = redis.createClient.apply(redis.createClient, args);
client.auth(auth + 'bad', function (err, res) {
assert.strictEqual(err.command_used, 'AUTH');
assert.ok(/ERR invalid password/.test(err.message));
done();
});
});
if (ip === 'IPv4') { if (ip === 'IPv4') {
it('allows auth to be provided as part of redis url', function (done) { it('allows auth to be provided as part of redis url', function (done) {
if (helper.redisProcess().spawnFailed()) this.skip(); if (helper.redisProcess().spawnFailed()) this.skip();
@@ -71,6 +83,19 @@ describe("client authentication", function () {
}); });
}); });
it('allows auth and no_ready_check to be provided as config option for client', function (done) {
if (helper.redisProcess().spawnFailed()) this.skip();
var args = config.configureClient(parser, ip, {
auth_pass: auth,
no_ready_check: true
});
client = redis.createClient.apply(redis.createClient, args);
client.on("ready", function () {
done();
});
});
it('allows auth to be provided post-hoc with auth method', function (done) { it('allows auth to be provided post-hoc with auth method', function (done) {
if (helper.redisProcess().spawnFailed()) this.skip(); if (helper.redisProcess().spawnFailed()) this.skip();