mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2025-12-19 05:47:46 +00:00
test using native msql instead of docker
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
sudo: required
|
||||
dist: bionic
|
||||
language: node_js
|
||||
node_js:
|
||||
- "lts/10"
|
||||
services:
|
||||
- docker
|
||||
- mysql
|
||||
script:
|
||||
- npm test
|
||||
before_install:
|
||||
- docker pull mysql:8
|
||||
- docker images
|
||||
- npm test
|
||||
@@ -4,9 +4,8 @@
|
||||
},
|
||||
"mysql": {
|
||||
"host": "localhost",
|
||||
"user": "jambones",
|
||||
"password": "jambones",
|
||||
"database": "jambones",
|
||||
"port": 3406
|
||||
"user": "jambones_test",
|
||||
"database": "jambones_test",
|
||||
"password": "jambones_test"
|
||||
}
|
||||
}
|
||||
3
db/create_test_db.sql
Normal file
3
db/create_test_db.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
create database jambones_test;
|
||||
create user jambones_test@localhost IDENTIFIED WITH mysql_native_password by 'jambones_test';
|
||||
grant all on jambones_test.* to jambones_test@localhost;
|
||||
3
db/remove_test_db.sql
Normal file
3
db/remove_test_db.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
DROP DATABASE jambones_test;
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'jambones_test'@'localhost';
|
||||
DROP USER 'jambones_test'@'localhost';
|
||||
26
test/create-test-db.js
Normal file
26
test/create-test-db.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const test = require('tape').test ;
|
||||
const exec = require('child_process').exec ;
|
||||
|
||||
test('creating jambones_test database', (t) => {
|
||||
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD < ${__dirname}/../db/create_test_db.sql`, (err, stdout, stderr) => {
|
||||
if (err) return t.end(err);
|
||||
t.pass('database successfully created');
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
test('creating schema', (t) => {
|
||||
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD -D jambones_test < ${__dirname}/../db/jambones-sql.sql`, (err, stdout, stderr) => {
|
||||
if (err) return t.end(err);
|
||||
t.pass('schema successfully created');
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
test('creating auth token', (t) => {
|
||||
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD -D jambones_test < ${__dirname}/../db/create-admin-token.sql`, (err, stdout, stderr) => {
|
||||
if (err) return t.end(err);
|
||||
t.pass('auth token successfully created');
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
@@ -1,26 +0,0 @@
|
||||
version: '2'
|
||||
|
||||
networks:
|
||||
jambones-api-server:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.22.0.0/16
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8
|
||||
environment:
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
|
||||
MYSQL_DATABASE: jambones
|
||||
MYSQL_USER: jambones
|
||||
MYSQL_PASSWORD: jambones
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
ports:
|
||||
- "3406:3306/tcp"
|
||||
volumes:
|
||||
- ../db:/tmp
|
||||
container_name: test_mysql_1
|
||||
networks:
|
||||
jambones-api-server:
|
||||
ipv4_address: 172.22.0.10
|
||||
@@ -1,62 +0,0 @@
|
||||
const test = require('tape').test ;
|
||||
const exec = require('child_process').exec ;
|
||||
|
||||
test('starting docker network..', (t) => {
|
||||
exec(`docker-compose -f ${__dirname}/docker-compose-testbed.yaml up -d`, (err, stdout, stderr) => {
|
||||
if (err) t.end(err);
|
||||
|
||||
console.log('docker network started, giving extra time to create test mysql database...');
|
||||
testMysql(60000, (err) => {
|
||||
if (err) {
|
||||
exec(`docker logs test_mysql_1`, (err, stdout, stderr) => {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
});
|
||||
}
|
||||
else t.pass('successfully connected to mysql');
|
||||
setTimeout(() => t.end(), 2000);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('creating schema', (t) => {
|
||||
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "source /tmp/jambones-sql.sql"', (err, stdout, stderr) => {
|
||||
if (!err) t.pass('successfully created schema');
|
||||
else {
|
||||
console.log(stderr);
|
||||
console.log(stdout);
|
||||
}
|
||||
t.end(err);
|
||||
});
|
||||
});
|
||||
|
||||
test('creating initial auth token', (t) => {
|
||||
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "source /tmp/create-admin-token.sql"', (err, stdout, stderr) => {
|
||||
if (!err) t.pass('successfully created auth token');
|
||||
else {
|
||||
console.log(stderr);
|
||||
console.log(stdout);
|
||||
}
|
||||
t.end(err);
|
||||
});
|
||||
});
|
||||
|
||||
function testMysql(timeout, callback) {
|
||||
const retryTimer = setInterval(() => {
|
||||
exec('docker exec test_mysql_1 mysql -h localhost -u jambones -D jambones -pjambones -e "SELECT 1"', (err, stdout, stderr) => {
|
||||
if (!err) {
|
||||
clearTimeout(timeoutTimer);
|
||||
clearInterval(retryTimer);
|
||||
return callback(null);
|
||||
}
|
||||
//console.log(`failed connecting (err): ${stderr}`);
|
||||
//console.log(`failed connecting (out): ${stdout}`);
|
||||
});
|
||||
}, 4000);
|
||||
|
||||
const timeoutTimer = setTimeout(() => {
|
||||
clearInterval(retryTimer);
|
||||
callback('timeout connecting to mysql');
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
const test = require('tape').test ;
|
||||
const exec = require('child_process').exec ;
|
||||
|
||||
test('stopping docker network..', (t) => {
|
||||
t.timeoutAfter(10000);
|
||||
exec(`docker-compose -f ${__dirname}/docker-compose-testbed.yaml down`, (err, stdout, stderr) => {
|
||||
//console.log(`stderr: ${stderr}`);
|
||||
process.exit(0);
|
||||
});
|
||||
t.end() ;
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
require('./docker-start');
|
||||
require('./create-test-db');
|
||||
require('./service-providers');
|
||||
require('./voip-carriers');
|
||||
require('./accounts');
|
||||
require('./phone-numbers');
|
||||
require('./applications');
|
||||
require('./docker-stop');
|
||||
require('./remove-test-db');
|
||||
|
||||
11
test/remove-test-db.js
Normal file
11
test/remove-test-db.js
Normal file
@@ -0,0 +1,11 @@
|
||||
const test = require('tape').test ;
|
||||
const exec = require('child_process').exec ;
|
||||
|
||||
test('dropping jambones_test database', (t) => {
|
||||
exec(`mysql -h localhost -u root -p$MYSQL_ROOT_PASSWORD < ${__dirname}/../db/remove_test_db.sql`, (err, stdout, stderr) => {
|
||||
if (err) return t.end(err);
|
||||
t.pass('database successfully dropped');
|
||||
t.end();
|
||||
process.exit(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user