Setup schema and tests.
This commit is contained in:
parent
806f42e3f8
commit
de0284e48a
7 changed files with 49 additions and 17 deletions
|
@ -1,8 +1,13 @@
|
||||||
image: node:6
|
image: node:6
|
||||||
services:
|
services:
|
||||||
- mongo
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
|
|
||||||
|
variables:
|
||||||
|
POSTGRES_DB: hostr_test
|
||||||
|
POSTGRES_USER: hostr_test
|
||||||
|
POSTGRES_PASSWORD: ""
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- test
|
- test
|
||||||
|
|
||||||
|
@ -16,7 +21,7 @@ test:
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
variables:
|
variables:
|
||||||
MONGO_URL: "mongodb://mongo:27017/hostr"
|
DATABASE_URL: "postgres://hostr_test@postgres:5432/hostr_test"
|
||||||
REDIS_URL: "redis://redis:6379"
|
REDIS_URL: "redis://redis:6379"
|
||||||
DEBUG: "hostr*"
|
DEBUG: "hostr*"
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
export default function (sequelize, DataTypes) {
|
export default function (sequelize, DataTypes) {
|
||||||
const Activation = sequelize.define('activation', {
|
const Activation = sequelize.define('activation', {
|
||||||
id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true },
|
id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true },
|
||||||
activated: false,
|
activated: { type: DataTypes.BOOLEAN, defaultValue: false, primaryKey: true },
|
||||||
email: DataTypes.STRING,
|
email: DataTypes.STRING,
|
||||||
}, {
|
}, {
|
||||||
classMethods: {
|
classMethods: {
|
||||||
|
|
|
@ -21,6 +21,11 @@ export default function (sequelize, DataTypes) {
|
||||||
md5: DataTypes.STRING(32), // eslint-disable-line new-cap
|
md5: DataTypes.STRING(32), // eslint-disable-line new-cap
|
||||||
malwarePositives: DataTypes.INTEGER,
|
malwarePositives: DataTypes.INTEGER,
|
||||||
}, {
|
}, {
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['userId'],
|
||||||
|
},
|
||||||
|
],
|
||||||
classMethods: {
|
classMethods: {
|
||||||
accessed: (id) => sequelize.query(`
|
accessed: (id) => sequelize.query(`
|
||||||
UPDATE files
|
UPDATE files
|
||||||
|
|
|
@ -4,6 +4,11 @@ export default function (sequelize, DataTypes) {
|
||||||
successful: { type: DataTypes.BOOLEAN },
|
successful: { type: DataTypes.BOOLEAN },
|
||||||
ip: { type: 'inet' },
|
ip: { type: 'inet' },
|
||||||
}, {
|
}, {
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['ip'],
|
||||||
|
},
|
||||||
|
],
|
||||||
classMethods: {
|
classMethods: {
|
||||||
associate: (models) => {
|
associate: (models) => {
|
||||||
Login.belongsTo(models.user);
|
Login.belongsTo(models.user);
|
||||||
|
|
|
@ -6,6 +6,11 @@ export default function (sequelize, DataTypes) {
|
||||||
type: DataTypes.ENUM('direct', 'paypal'), // eslint-disable-line new-cap
|
type: DataTypes.ENUM('direct', 'paypal'), // eslint-disable-line new-cap
|
||||||
ip: 'inet',
|
ip: 'inet',
|
||||||
}, {
|
}, {
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['userId'],
|
||||||
|
},
|
||||||
|
],
|
||||||
classMethods: {
|
classMethods: {
|
||||||
associate: (models) => {
|
associate: (models) => {
|
||||||
Transaction.belongsTo(models.user);
|
Transaction.belongsTo(models.user);
|
||||||
|
|
|
@ -9,6 +9,11 @@ export default function (sequelize, DataTypes) {
|
||||||
banned: DataTypes.BOOLEAN,
|
banned: DataTypes.BOOLEAN,
|
||||||
deleted: DataTypes.BOOLEAN,
|
deleted: DataTypes.BOOLEAN,
|
||||||
}, {
|
}, {
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['email'],
|
||||||
|
},
|
||||||
|
],
|
||||||
classMethods: {
|
classMethods: {
|
||||||
associate: (models) => {
|
associate: (models) => {
|
||||||
User.hasMany(models.file);
|
User.hasMany(models.file);
|
||||||
|
|
35
test/fixtures/user.js
vendored
35
test/fixtures/user.js
vendored
|
@ -1,27 +1,34 @@
|
||||||
|
import co from 'co';
|
||||||
|
|
||||||
import models from '../../models';
|
import models from '../../models';
|
||||||
|
|
||||||
function createUser() {
|
import debugname from 'debug';
|
||||||
models.user.create({
|
const debug = debugname('hostr:db');
|
||||||
|
|
||||||
|
function *createUser() {
|
||||||
|
const user = yield models.user.create({
|
||||||
'email': 'test@hostr.co',
|
'email': 'test@hostr.co',
|
||||||
'password': '$pbkdf2-256-1$2$kBhIDRqFwnF/1ms6ZHfME2o2$a48e8c350d26397fcc88bf0a7a2817b1cdcd1ffffe0521a5',
|
'password': '$pbkdf2-256-1$2$kBhIDRqFwnF/1ms6ZHfME2o2$a48e8c350d26397fcc88bf0a7a2817b1cdcd1ffffe0521a5',
|
||||||
'ip': '127.0.0.1',
|
'ip': '127.0.0.1',
|
||||||
'plan': 'Free',
|
'plan': 'Free',
|
||||||
'activated': true,
|
'activated': true,
|
||||||
}).then((user) => {
|
|
||||||
user.save().then(() => {
|
|
||||||
models.sequelize.close();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
yield user.save();
|
||||||
|
yield models.sequelize.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
models.user.findOne({
|
co(function *sync() {
|
||||||
where: {
|
debug('Syncing schema');
|
||||||
email: 'test@hostr.co',
|
yield models.sequelize.sync();
|
||||||
},
|
debug('Schema synced');
|
||||||
}).then((user) => {
|
const user = yield models.user.findOne({
|
||||||
|
where: {
|
||||||
|
email: 'test@hostr.co',
|
||||||
|
},
|
||||||
|
});
|
||||||
if (user) {
|
if (user) {
|
||||||
user.destroy().then(createUser);
|
yield user.destroy();
|
||||||
} else {
|
|
||||||
createUser();
|
|
||||||
}
|
}
|
||||||
|
debug('Creating test user');
|
||||||
|
yield createUser();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue