Files
CloudBudget/test/db.js

119 lines
3.5 KiB
JavaScript

var mongoose = require('mongoose'),
jwt = require('jsonwebtoken'),
security = require('../config/security');
var USER_ID = '55c9e2e3d300cc798928cc87',
HACKER_ID = '55c9e2e4d300cc798928cc88',
ACCOUNT_ID = '55c9e2fcd300cc798928cc8b';
var DATA = {
User: [
{
_id: USER_ID,
username: 'test',
password: 's3cr3t'
},
{
_id: HACKER_ID,
username: 'hacker',
password: 'bl4ckh4t'
}
],
Account: [
{
_id: ACCOUNT_ID,
name: 'Default',
reference: '1234567890',
user_id: USER_ID,
categories: [{key: 'test', label: 'Test', sub_categories: []}]
}
],
Entry: [
{
account_id: ACCOUNT_ID,
label: 'Test bill',
type: 'BILL',
amount: -100,
date: '2015-08-13',
}
]
},
process_collection = function(collection, data, done) {
mongoose.connection.base.models[collection].find({}).remove(function(err) {
if (err) {
console.log('Can\'t delete collection ' + collection, err );
}
var res = [];
for( var item in data ) {
mongoose.connection.base.models[collection].create(data[item], function(err, newItem) {
res.push(err);
if( err ) {
console.log('Can\'t insert document', err);
}
if (res.length === data.length) {
return done();
}
newItem.save(function(error) {
res.push(err);
if (res.length === data.length) {
return done();
}
});
});
}
});
},
drop_collection = function(collection, data, done) {
mongoose.connection.base.models[collection].find({}).remove(function(err) {
if (err) {
console.log('Can\'t delete collection ' + collection, err );
}
return done();
});
};
module.exports = {
USER_ID: USER_ID,
HACKER_ID: HACKER_ID,
ACCOUNT_ID: ACCOUNT_ID,
init : function(done) {
var collections_to_process = Object.keys(DATA).length,
collectionsDone = 0;
for( var collection in DATA ) {
process_collection(collection, DATA[collection], function() {
collectionsDone++;
if( collectionsDone === collections_to_process ) {
done();
}
})
}
},
drop : function(done) {
var collections_to_process = Object.keys(DATA).length,
collectionsDone = 0;
for( var collection in DATA ) {
drop_collection(collection, DATA[collection], function() {
collectionsDone++;
if( collectionsDone === collections_to_process ) {
done();
}
})
}
},
get_user_token: function() {
return jwt.sign( { user_id: USER_ID}, security.jwt.secretOrKey);
},
get_hacker_token: function() {
return jwt.sign( { user_id: HACKER_ID}, security.jwt.secretOrKey);
}
}