From 571b075caa561e410b134a10d59dbeb922c0defe Mon Sep 17 00:00:00 2001 From: Alex Schwartz Date: Mon, 24 Nov 2025 11:51:24 -0500 Subject: [PATCH] feat: ability to provide specific config.driver for msnodesqlv8 simplify tests for config.driver revert partially of the test change Update msnodesqlv8.js revert workflow change change test for Windows Update msnodesqlv8.js fix: msnodesqlv8 test --- README.md | 2 +- lib/msnodesqlv8/connection-pool.js | 4 ++-- test/msnodesqlv8/msnodesqlv8.js | 35 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6b12a5c0..899bb46f 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ const config = { trustedConnection: true, // Set to true if using Windows Authentication trustServerCertificate: true, // Set to true if using self-signed certificates }, - driver: "msnodesqlv8", // Required if using Windows Authentication + // driver: "ODBC Driver 18 for SQL Server", // Uncomment to use specific driver }; (async () => { diff --git a/lib/msnodesqlv8/connection-pool.js b/lib/msnodesqlv8/connection-pool.js index 09b367f4..4d15120b 100644 --- a/lib/msnodesqlv8/connection-pool.js +++ b/lib/msnodesqlv8/connection-pool.js @@ -9,7 +9,7 @@ const ConnectionError = require('../error/connection-error') const { platform } = require('node:os') const { buildConnectionString } = require('@tediousjs/connection-string') -const CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0' +const DEFAULT_CONNECTION_DRIVER = ['darwin', 'linux'].includes(platform()) ? 'ODBC Driver 17 for SQL Server' : 'SQL Server Native Client 11.0' class ConnectionPool extends BaseConnectionPool { _poolCreate () { @@ -23,7 +23,7 @@ class ConnectionPool extends BaseConnectionPool { if (!this.config.connectionString) { cfg.conn_str = buildConnectionString({ - Driver: CONNECTION_DRIVER, + Driver: this.config.driver && this.config.driver !== 'msnodesqlv8' ? this.config.driver : DEFAULT_CONNECTION_DRIVER, Server: this.config.options.instanceName ? `${this.config.server}\\${this.config.options.instanceName}` : `${this.config.server},${this.config.port}`, Database: this.config.database, Uid: this.config.user, diff --git a/test/msnodesqlv8/msnodesqlv8.js b/test/msnodesqlv8/msnodesqlv8.js index 5193ba47..13fc1046 100644 --- a/test/msnodesqlv8/msnodesqlv8.js +++ b/test/msnodesqlv8/msnodesqlv8.js @@ -241,6 +241,41 @@ describe('msnodesqlv8', function () { after(() => sql.close()) }) + describe('config().driver tests', function () { + it('cfg.driver is undefined', done => { + const cfg = config() + cfg.driver = undefined + sql.connect(cfg, done) + }) + + // Specifically for Windows + it('cfg.driver is SQL Server Native Client 11.0', done => { + const cfg = config() + cfg.driver = 'SQL Server Native Client 11.0' + sql.connect(cfg, done) + }) + + it('cfg.driver is invalid', done => { + const cfg = config() + cfg.driver = 'aaTESTING1234' + + sql.connect(cfg, function (err) { + if (err) { + // Specifically for Windows + if (err.message === '[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified') { + return done() + } + + return done(new Error('Incorrect error message shown')) + } + + return done(new Error('No error message shown')) + }) + }) + + afterEach(() => sql.close()) + }) + after('cleanup', done => sql.connect(config(), function (err) { if (err) return done(err)