25
.travis.yml
25
.travis.yml
@@ -1,14 +1,11 @@
|
||||
{
|
||||
'dist': 'trusty',
|
||||
'language': 'node_js',
|
||||
'node_js': '8.7.0',
|
||||
'cache': 'yarn',
|
||||
'scripts': [
|
||||
'npm run test'
|
||||
],
|
||||
'before_install': [
|
||||
'cd seasoned_api',
|
||||
],
|
||||
'before_script': 'yarn',
|
||||
'os': 'linux',
|
||||
}
|
||||
language: node_js
|
||||
node_js: '8.7.0'
|
||||
git:
|
||||
submodules: false
|
||||
script:
|
||||
yarn test
|
||||
before_install:
|
||||
- cd seasoned_api
|
||||
before_script: yarn
|
||||
cache: false
|
||||
os: linux
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"main": "webserver/server.js",
|
||||
"scripts": {
|
||||
"start": "cross-env SEASONED_CONFIG=conf/development.json NODE_PATH=. node src/webserver/server.js",
|
||||
"test": "cross-env SEASONED_CONFIG=conf/development.json NODE_PATH=. mocha --recursive test/system",
|
||||
"test": "cross-env SEASONED_CONFIG=conf/development.json TESTING=true NODE_PATH=. mocha --recursive test/system",
|
||||
"coverage": "cross-env SEASONED_CONFIG=conf/test.json NODE_PATH=. istanbul cover -x script/autogenerate-documentation.js --include-all-sources --dir test/.coverage node_modules/mocha/bin/_mocha --recursive test/**/* -- --report lcovonly && cat test/.coverage/lcov.info | coveralls && rm -rf test/.coverage",
|
||||
"lint": "./node_modules/.bin/eslint src/"
|
||||
},
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const SqliteDatabase = require('src/database/sqliteDatabase');
|
||||
|
||||
const database = new SqliteDatabase(configuration.get('database', 'host'));
|
||||
|
||||
const host = process.env.TESTING ? ':memory:' : configuration.get('database', 'host');
|
||||
const database = new SqliteDatabase(host);
|
||||
/**
|
||||
* This module establishes a connection to the database
|
||||
* specified in the confgiuration file. It tries to setup
|
||||
@@ -10,7 +10,6 @@ const database = new SqliteDatabase(configuration.get('database', 'host'));
|
||||
* If the tables already exists, it simply proceeds.
|
||||
*/
|
||||
Promise.resolve()
|
||||
.then(() => database.connect())
|
||||
.then(() => database.setUp());
|
||||
|
||||
module.exports = database;
|
||||
|
||||
@@ -3,10 +3,9 @@ const path = require('path');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
class SqliteDatabase {
|
||||
|
||||
constructor(host) {
|
||||
this.host = host;
|
||||
this.connection = this.connect()
|
||||
this.connection = new sqlite3.Database(this.host);
|
||||
this.schemaDirectory = path.join(__dirname, 'schemas');
|
||||
}
|
||||
|
||||
@@ -14,11 +13,11 @@ class SqliteDatabase {
|
||||
* Connect to the database.
|
||||
* @returns {Promise} succeeds if connection was established
|
||||
*/
|
||||
connect() {
|
||||
let database = new sqlite3.Database(this.host);
|
||||
this.connection = database;
|
||||
return database;
|
||||
}
|
||||
// connect() {
|
||||
// let database = ;
|
||||
// this.connection = database;
|
||||
// return database;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Run a SQL query against the database.
|
||||
@@ -26,7 +25,7 @@ class SqliteDatabase {
|
||||
* @param {Array} parameters in the SQL query
|
||||
* @returns {Promise}
|
||||
*/
|
||||
run(sql, parameters) {
|
||||
async run(sql, parameters) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.connection.run(sql, parameters, (error, result) => {
|
||||
if (error)
|
||||
@@ -78,7 +77,13 @@ class SqliteDatabase {
|
||||
*/
|
||||
async execute(sql) {
|
||||
return new Promise(resolve => {
|
||||
resolve(this.connection.exec(sql));
|
||||
this.connection.exec(sql, (err, database) => {
|
||||
if (err) {
|
||||
console.log('ERROR: ', err);
|
||||
reject(err);
|
||||
}
|
||||
resolve();
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -88,7 +93,7 @@ class SqliteDatabase {
|
||||
*/
|
||||
setUp() {
|
||||
const setupSchema = this.readSqlFile('setup.sql');
|
||||
return this.execute(setupSchema);
|
||||
return Promise.resolve(this.execute(setupSchema));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,8 +101,8 @@ class SqliteDatabase {
|
||||
* @returns {Promise}
|
||||
*/
|
||||
tearDown() {
|
||||
const tearDownSchema = this.readSqlFile('tearDown.sql');
|
||||
return this.execute(tearDownSchema);
|
||||
const tearDownSchema = this.readSqlFile('teardown.sql');
|
||||
return Promise.resolve(this.execute(tearDownSchema));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,10 +35,13 @@ class UserRepository {
|
||||
* @returns {Promise}
|
||||
*/
|
||||
retrieveHash(user) {
|
||||
return this.database.get(this.queries.retrieveHash, user.username).then((row) => {
|
||||
assert(row, 'The user does not exist.');
|
||||
return row.password;
|
||||
});
|
||||
return Promise.resolve()
|
||||
.then(() => this.database.get(this.queries.retrieveHash, user.username))
|
||||
.then((row) => {
|
||||
assert(row, 'The user does not exist.');
|
||||
return row.password;
|
||||
})
|
||||
.catch((err) => console.log('there was a error when getting hash', err));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -48,7 +51,7 @@ class UserRepository {
|
||||
* @returns {Promise}
|
||||
*/
|
||||
changePassword(user, password) {
|
||||
return this.database.run(this.queries.change, [password, user.username]);
|
||||
return Promise.resolve(this.database.run(this.queries.change, [password, user.username]));
|
||||
}
|
||||
|
||||
checkAdmin(user) {
|
||||
|
||||
@@ -2,8 +2,7 @@ const Cache = require('src/tmdb/cache');
|
||||
const SqliteDatabase = require('src/database/sqliteDatabase');
|
||||
|
||||
function createCacheEntry(key, value) {
|
||||
const database = new SqliteDatabase(':memory:');
|
||||
const cache = new Cache(database);
|
||||
const cache = new Cache();
|
||||
return cache.set(key, value);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
const User = require('src/user/user');
|
||||
const UserSecurity = require('src/user/userSecurity');
|
||||
const SqliteDatabase = require('src/database/sqliteDatabase');
|
||||
|
||||
function createUser(username, email, password) {
|
||||
const database = new SqliteDatabase(':memory:');
|
||||
const userSecurity = new UserSecurity(database);
|
||||
const user = new User(username, email);
|
||||
return userSecurity.createNewUser(user, password);
|
||||
function createUser(username, password) {
|
||||
const userSecurity = new UserSecurity();
|
||||
const user = new User(username)
|
||||
|
||||
return Promise.resolve(userSecurity.createNewUser(user, password))
|
||||
}
|
||||
|
||||
module.exports = createUser;
|
||||
@@ -1,11 +1,9 @@
|
||||
const SqliteDatabase = require('src/database/sqliteDatabase');
|
||||
const establishedDatabase = require('src/database/database');
|
||||
|
||||
function resetDatabase() {
|
||||
const database = new SqliteDatabase(':memory:');
|
||||
return Promise.resolve()
|
||||
.then(() => database.connect())
|
||||
// .then(() => database.tearDown())
|
||||
.then(() => database.setUp());
|
||||
function resetDatabase() {
|
||||
return Promise.resolve()
|
||||
.then(() => establishedDatabase.tearDown())
|
||||
.then(() => establishedDatabase.setUp())
|
||||
}
|
||||
|
||||
module.exports = resetDatabase;
|
||||
|
||||
@@ -5,8 +5,10 @@ const createUser = require('test/helpers/createUser');
|
||||
const resetDatabase = require('test/helpers/resetDatabase');
|
||||
|
||||
describe('As a user I want to log in', () => {
|
||||
before(() => resetDatabase());
|
||||
before(() => createUser('test_user', 'test@gmail.com', 'password'));
|
||||
before(() => {
|
||||
return resetDatabase()
|
||||
.then(() => createUser('test_user', 'password'))
|
||||
})
|
||||
|
||||
it('should return 200 with a token if correct credentials are given', () =>
|
||||
request(app)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
const assert = require('assert');
|
||||
const request = require('supertest-as-promised');
|
||||
const app = require('src/webserver/app');
|
||||
const createUser = require('test/helpers/createUser');
|
||||
const resetDatabase = require('test/helpers/resetDatabase');
|
||||
|
||||
describe('As a user I want error when registering existing username', () => {
|
||||
before(() => {
|
||||
return resetDatabase()
|
||||
.then(() => createUser('test_user', 'password'))
|
||||
})
|
||||
|
||||
it('should return 401 with error message when same username is given', () =>
|
||||
request(app)
|
||||
.post('/api/v1/user')
|
||||
.send({ username: 'test_user', password: 'password' })
|
||||
.expect(401)
|
||||
.then(response => assert.equal(response.text, '{"success":false,"error":"That username is already registered"}'))
|
||||
);
|
||||
});
|
||||
@@ -5,8 +5,10 @@ const createUser = require('test/helpers/createUser');
|
||||
const createToken = require('test/helpers/createToken');
|
||||
|
||||
describe('As a user I want to request a movie', () => {
|
||||
before(() => resetDatabase());
|
||||
before(() => createUser('test_user', 'test@gmail.com', 'password'));
|
||||
before(() => {
|
||||
return resetDatabase()
|
||||
.then(() => createUser('test_user', 'test@gmail.com', 'password'));
|
||||
})
|
||||
|
||||
it('should return 200 when item is requested', () =>
|
||||
request(app)
|
||||
|
||||
Reference in New Issue
Block a user