Skip to content

Commit

Permalink
Fixed #18. Added a generic config file for test tests containing mock…
Browse files Browse the repository at this point in the history
… credentials and updated all files using credentials to use that instead.
  • Loading branch information
Kyle Farris authored and kylefarris committed Feb 1, 2019
1 parent f908251 commit a41f9d9
Show file tree
Hide file tree
Showing 16 changed files with 198 additions and 71 deletions.
1 change: 1 addition & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ you spot any mistakes.
** `acquireTimeout` (milliseconds before a timeout occurs during the connection acquisition)
* Added new query building method: `returning()` to allow for insert IDs to be returned. See docs for more info.
* Added new tests
* Fixed [#18](https://github.com/kylefarris/node-querybuilder/issues/18)
* Fixed [#26](https://github.com/kylefarris/node-querybuilder/issues/26)


Expand Down
6 changes: 2 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
TESTS = test/mysql/*.js test/mssql/*.js
#TESTS = test/mssql/*.js
#TESTS = test/mssql/04-tests-query-response.js
#TESTS = test/mssql/05-tests-multiple-queries.js
#TESTS = test/mssql/03-tests-insert.js
#TESTS = test/mssql/05-tests-multiple-pools.js
#TESTS = test/05-multiple-drivers.js
test:
mocha --timeout 5000 --reporter spec $(TESTS)

Expand Down
24 changes: 24 additions & 0 deletions test/05-multiple-drivers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
const should = require('chai').should();
const expect = require('chai').expect;
const configs = require('configs');

const QueryBuilder = require('../../index.js');
const my_pool = new QueryBuilder(configs.mysql, 'mysql', 'pool');
const ms_pool = new QueryBuilder(configs.mssql, 'mssql', 'pool');

describe('Multiple Drivers', () => {
it('should not get confused between pools from different drivers', done => {
pool.get_connection(qb => {
qb.limit(1).delete('cities', (err, result) => {
qb.select(['city', 'state_code']).from('cities').limit(1).get((err2, result2) => {
qb.release();
expect(err, 'should not error on delete').to.not.be.instanceof(Error);
expect(result.affectedRows, 'one record should be deleted').to.be.eql(1);
expect(err2, 'should not error on select').to.not.be.instanceof(Error);
expect(result2.length, 'should have one result').to.be.equal(1);
done();
});
});
});
});
});
22 changes: 22 additions & 0 deletions test/configs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const configs = {
mysql: {
host: '127.0.0.1',
database: 'mock_db',
user: 'travis',
version: '2.5.4',
port: 3306,
debug: false,
},
mssql: {
host: 'localhost',
database: 'mock_db',
user: 'travis',
password: 'Password123',
version: '4.1.0',
port: 1433,
options: {
encrypt: false
}
},
};
module.exports = configs;
15 changes: 2 additions & 13 deletions test/mssql/00-tests-adapter.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const should = require('chai').should();
const expect = require('chai').expect;
const QueryBuilder = require('../../index.js');
const settings = require('../configs').mssql;
const driver = 'mssql';

const check = (done, f) => {
try {
Expand Down Expand Up @@ -35,19 +37,6 @@ const connection_released = qb => {
};

describe('MSSQL: QueryBuilder() - Adapter', () => {
const driver = 'mssql';
const settings = {
host: 'localhost',
database: 'mock_db',
user: 'travis',
password: 'Password123',
version: '4.1.0',
port: 1433,
options: {
encrypt: false
}
};

afterEach(done => {
// const qb = new QueryBuilder(Object.assign({}, settings), driver);
// qb.disconnect();
Expand Down
15 changes: 2 additions & 13 deletions test/mssql/04-tests-query-response.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const should = require('chai').should();
const expect = require('chai').expect;
const QueryBuilder = require('../../index.js');
const settings = require('../configs').mssql;
const driver = 'mssql';

const check = (done, f) => {
try {
Expand All @@ -12,19 +14,6 @@ const check = (done, f) => {
};

describe('MSSQL: Query Responses', () => {
const driver = 'mssql';
const settings = {
host: 'localhost',
database: 'mock_db',
user: 'travis',
password: 'Password123',
version: '4.1.0',
port: 1433,
options: {
encrypt: false
}
};

it('should allow us to execute a simple SELECT query', done => {
const qb = new QueryBuilder(Object.assign({}, settings), driver);
qb.connect(err => {
Expand Down
35 changes: 35 additions & 0 deletions test/mssql/05-tests-multiple-pools.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const should = require('chai').should();
const expect = require('chai').expect;
const settings = require('../configs').mssql;
const QueryBuilder = require('../../index.js');
const pool1 = new QueryBuilder(settings, 'mssql', 'pool');
const pool2 = new QueryBuilder(Object.assign({}, settings, {database: 'mock_db2'}), 'mssql', 'pool');
let pool1_settings, pool2_settings;

const compare_connections = (done) => {
try {
const db1 = pool1_settings.connection_settings.options.database;
const db2 = pool2_settings.connection_settings.options.database;
db1.should.not.be.eql(db2);
done();
} catch(e) {
done(e);
}
};

describe('MSSQL: Multiple Pools', () => {
it('should not get confused by what pool settings to use', done => {
let connections_established = 0;

pool1.get_connection(qb1 => {
pool1_settings = qb1.connection_settings();
connections_established++;
if (connections_established >= 2) compare_connections(done);
});
pool2.get_connection(qb2 => {
pool2_settings = qb2.connection_settings();
connections_established++;
if (connections_established >= 2) compare_connections(done);
});
});
});
12 changes: 1 addition & 11 deletions test/mssql/05-tests-multiple-queries.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
const should = require('chai').should();
const expect = require('chai').expect;
const settings = {
host: 'localhost',
database: 'mock_db',
user: 'travis',
password: 'Password123',
version: '4.1.0',
port: 1433,
options: {
encrypt: false
}
};
const settings = require('../configs').mssql;

const check = (done, f) => {
try {
Expand Down
13 changes: 11 additions & 2 deletions test/mssql/create_mssql_mock.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,29 @@ db_user=travis
password=Password123
db_name=mock_db
db_table=cities
db2_name=mock_db2
db2_table=cities2

# Initial Admin Stuff
sqlcmd -S $server -U $admin_user -P $admin_pass -Q "If not Exists (SELECT loginname FROM [master].[dbo].[syslogins] WHERE name = '$db_user') CREATE LOGIN $db_user WITH PASSWORD='$password';"
sqlcmd -S $server -U $admin_user -P $admin_pass -Q "IF (db_id(N'$db_name') IS NULL) CREATE DATABASE $db_name;"
sqlcmd -S $server -U $admin_user -P $admin_pass -d $db_name -Q "IF NOT EXISTS (SELECT * FROM [sys].[server_principals] WHERE [name] = '$db_user') CREATE USER $db_user FOR LOGIN $db_user;"
sqlcmd -S $server -U $admin_user -P $admin_pass -Q "IF (db_id(N'$db2_name') IS NULL) CREATE DATABASE $db2_name;"
sqlcmd -S $server -U $admin_user -P $admin_pass -d $db_name -Q "CREATE USER $db_user FOR LOGIN $db_user;" > /dev/null 2>&1
sqlcmd -S $server -U $admin_user -P $admin_pass -d $db2_name -Q "CREATE USER $db_user FOR LOGIN $db_user;" > /dev/null 2>&1
sqlcmd -S $server -U $admin_user -P $admin_pass -d $db_name -Q "GRANT CONTROL ON DATABASE:: $db_name TO $db_user;"
sqlcmd -S $server -U $admin_user -P $admin_pass -d $db2_name -Q "GRANT CONTROL ON DATABASE:: $db2_name TO $db_user;"

# User stuff
sqlcmd -S $server -U $db_user -P $password -d $db_name -Q "IF OBJECT_ID('dbo.$db_table', 'U') IS NOT NULL DROP TABLE dbo.$db_table;"
sqlcmd -S $server -U $db_user -P $password -d $db2_name -Q "IF OBJECT_ID('dbo.$db2_table', 'U') IS NOT NULL DROP TABLE dbo.$db2_table;"
sqlcmd -S $server -U $db_user -P $password -d $db_name -Q "CREATE TABLE $db_table([city] varchar(50) NOT NULL, [state_code] char(2) NOT NULL);"
sqlcmd -S $server -U $db_user -P $password -d $db2_name -Q "CREATE TABLE $db2_table([city] varchar(50) NOT NULL, [state_code] char(2) NOT NULL);"
sqlcmd -S $server -U $db_user -P $password -d $db_name -i mock_data.sql
sqlcmd -S $server -U $db_user -P $password -d $db2_name -i mock_data2.sql

# Check to see if table exists now...
#sqlcmd -U $db_user -P $password -d $db_name -Q "SELECT TABLE_NAME FROM $db_name.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'"

# Check to see if data exists in $db_name
sqlcmd -S $server -U $db_user -P $password -d $db_name -Q "SELECT TOP 5 * FROM [cities];"
sqlcmd -S $server -U $db_user -P $password -d $db_name -Q "SELECT TOP 5 * FROM [$db_table];"
sqlcmd -S $server -U $db_user -P $password -d $db2_name -Q "SELECT TOP 5 * FROM [$db2_table];"
1 change: 1 addition & 0 deletions test/mssql/mock_data2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
INSERT INTO [cities2] VALUES ('Aaronsburg','PA'),('Abbeville','AL'),('Abbeville','GA');
8 changes: 1 addition & 7 deletions test/mysql/00-tests-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const chai = require('chai');
chai.Assertion.includeStack = true;
const should = chai.should();
const expect = chai.expect;
const settings = require('../configs').mysql;
const QueryBuilder = require('../../index.js');

const check = (done, f) => {
Expand All @@ -26,13 +27,6 @@ describe('QueryBuilder() - MySQL Adapter', () => {
console.log("connected!");
};
const driver = 'mysql';
const settings = {
host: '127.0.0.1',
database: 'mock_db',
user: 'travis',
version: '2.5.4',
port: 3306
};
const bad_user = Object.assign({},settings, {user: 'foobar'});
const bad_host = Object.assign({},settings, {host: 'nonlocalhost'});
const bad_password = Object.assign({},settings, {password: 'password'});
Expand Down
11 changes: 2 additions & 9 deletions test/mysql/04-tests-query-response.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const should = require('chai').should();
const expect = require('chai').expect;
const QueryBuilder = require('../../index.js');
const settings = require('../configs').mysql;
const driver = 'mysql';

const check = (done, f) => {
try {
Expand All @@ -12,15 +14,6 @@ const check = (done, f) => {
};

describe('MySQL: Query Responses', () => {
const driver = 'mysql';
const settings = {
host: '127.0.0.1',
database: 'mock_db',
user: 'travis',
version: '2.5.4',
port: 3306
};

it('should allow us to execute a simple SELECT query', done => {
const qb = new QueryBuilder(Object.assign({}, settings), driver);
qb.connect(err => {
Expand Down
35 changes: 35 additions & 0 deletions test/mysql/05-tests-multiple-pools.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const should = require('chai').should();
const expect = require('chai').expect;
const settings = require('../configs').mysql;
const QueryBuilder = require('../../index.js');
const pool1 = new QueryBuilder(settings, 'mysql', 'pool');
const pool2 = new QueryBuilder(Object.assign({}, settings, {database: 'mock_db2'}), 'mysql', 'pool');
let pool1_settings, pool2_settings;

const compare_connections = (done) => {
try {
const db1 = pool1_settings.database;
const db2 = pool2_settings.database;
db1.should.not.be.eql(db2);
done();
} catch(e) {
done(e);
}
};

describe('MySQL: Multiple Pools', () => {
it('should not get confused by what pool settings to use', done => {
let connections_established = 0;

pool1.get_connection(qb1 => {
pool1_settings = qb1.connection_settings();
connections_established++;
if (connections_established >= 2) compare_connections(done);
});
pool2.get_connection(qb2 => {
pool2_settings = qb2.connection_settings();
connections_established++;
if (connections_established >= 2) compare_connections(done);
});
});
});
9 changes: 1 addition & 8 deletions test/mysql/05-tests-multiple-queries.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
const should = require('chai').should();
const expect = require('chai').expect;
const settings = {
host: '127.0.0.1',
database: 'mock_db',
user: 'travis',
version: '2.5.4',
port: 3306,
debug: false,
};
const settings = require('../configs').mysql;
const QueryBuilder = require('../../index.js');
const pool = new QueryBuilder(settings, 'mysql', 'pool');

Expand Down
13 changes: 9 additions & 4 deletions test/mysql/create_mysql_mock.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
mysql -uroot -e "CREATE DATABSE IF NOT EXISTS mock_db;"
mysql -uroot -e "CREATE USER IF NOT EXISTS 'travis'@'localhost';"
mysql -uroot -e "GRANT ALL ON `mock_db`.* TO 'travis'@'localhost';"
mysql -utravis mock_db < ./test/mysql/mock_data.sql
mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS mock_db;"
mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS mock_db2;"
mysql -uroot -p -e "CREATE USER IF NOT EXISTS 'travis'@'localhost';"
mysql -uroot -p -e "GRANT ALL ON mock_db.* TO 'travis'@'localhost';"
mysql -uroot -p -e "GRANT ALL ON mock_db2.* TO 'travis'@'localhost';"
mysql -uroot -p mock_db -e "DROP TABLE IF EXISTS cities;"
mysql -uroot -p mock_db2 -e "DROP TABLE IF EXISTS cities2;"
mysql -utravis mock_db < ./mock_data.sql
mysql -utravis mock_db2 < ./mock_data2.sql
49 changes: 49 additions & 0 deletions test/mysql/mock_data2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
-- MySQL dump 10.14 Distrib 5.5.40-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: mock_db2
-- ------------------------------------------------------
-- Server version 5.5.40-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `cities`
--

DROP TABLE IF EXISTS `cities2`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `cities2` (
`city` varchar(50) NOT NULL,
`state_code` char(2) NOT NULL,
KEY `idx_state_code` (`state_code`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `cities2`
--

LOCK TABLES `cities2` WRITE;
/*!40000 ALTER TABLE `cities2` DISABLE KEYS */;
INSERT INTO `cities2` VALUES ('Aaronsburg','PA'),('Abbeville','AL'),('Abbeville','GA');
/*!40000 ALTER TABLE `cities2` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

0 comments on commit a41f9d9

Please sign in to comment.