From d6fc2139ceea668eff23f70784cffba2933326b4 Mon Sep 17 00:00:00 2001 From: Paul Melnikow Date: Tue, 20 Aug 2019 18:18:40 +0100 Subject: [PATCH] feat: Automatically set tls.servername option with rediss:// URLs --- lib/redis/index.ts | 6 +++--- test/unit/redis.ts | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/redis/index.ts b/lib/redis/index.ts index 7c9e64a8..92505b01 100644 --- a/lib/redis/index.ts +++ b/lib/redis/index.ts @@ -202,8 +202,8 @@ Redis.prototype.parseOptions = function() { defaults(this.options, arg); } else if (typeof arg === "string") { defaults(this.options, parseURL(arg)); - if (arg.startsWith('rediss://')) { - isTls = true + if (arg.startsWith("rediss://")) { + isTls = true; } } else if (typeof arg === "number") { this.options.port = arg; @@ -212,7 +212,7 @@ Redis.prototype.parseOptions = function() { } } if (isTls) { - defaults(this.options, {tls: true}) + defaults(this.options, { tls: { servername: this.options.host } }); } defaults(this.options, Redis.defaultOptions); diff --git a/test/unit/redis.ts b/test/unit/redis.ts index 655fa5d3..a6dada93 100644 --- a/test/unit/redis.ts +++ b/test/unit/redis.ts @@ -81,11 +81,13 @@ describe("Redis", function() { }); expect(option).to.have.property("port", 6380); - option = getOption("rediss://host") - expect(option).to.have.property("tls", true) + option = getOption("rediss://host.test"); + expect(option.tls).to.deep.equal({ servername: "host.test" }); - option = getOption("rediss://example.test", { tls: { hostname: "example.test" } }); - expect(option.tls).to.deep.equal({hostname: "example.test"}) + option = getOption("rediss://example.test", { + tls: { rejectUnauthorized: false } + }); + expect(option.tls).to.deep.equal({ rejectUnauthorized: false }); } catch (err) { stub.restore(); throw err;