Skip to content
This repository was archived by the owner on Apr 13, 2023. It is now read-only.

Commit 5c91944

Browse files
authored
Merge pull request #33 from SpringRoll/chore/160028517_seeder-improvement
Chore/160028517 seeder improvement
2 parents 754bbad + c783884 commit 5c91944

File tree

4 files changed

+154
-33
lines changed

4 files changed

+154
-33
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ node_modules
22
*.map
33
.env
44
springroll.log
5+
log.txt

app/routes/groups/add.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ router.post('/', function(req, res)
88
{
99
// Validation
1010
req.checkBody('name', 'Name is required').notEmpty();
11-
req.checkBody('privilege', 'Repository needs to be a URL').isNumeric();
11+
req.checkBody('privilege', 'Privilege needs to be a number').isNumeric();
1212
req.checkBody('slug', 'Slug must be alpha numeric characters').isSlug();
1313

1414
var errors = req.validationErrors();

npm-shrinkwrap.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

seed.js

Lines changed: 151 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,162 @@
11
// Load Environment
2-
var dotenv = require('dotenv');
2+
const dotenv = require('dotenv');
33
dotenv.load();
44
process.env.MONGO_DATABASE = 'mongodb://localhost:27017/connect';
55
process.env.OUTPUT_LOG = './log.txt';
66

7-
// create a password
8-
var crypto = require('crypto');
9-
var password = ''
10-
crypto.randomBytes(16).forEach(value => {
11-
password += (value % 16).toString(16);
12-
})
13-
14-
var app = require('express')();
15-
16-
// stub out the schema
7+
const crypto = require('crypto');
8+
const app = require('express')();
179
require('./app/helpers/database')(app);
10+
const User = require('./app/models/user');
11+
const Game = require('./app/models/game');
12+
const Group = require('./app/models/group');
13+
const uuid = require('uuid/v1');
14+
const Release = require('./app/models/release');
1815

19-
// create an admin user
20-
var access = require('./app/helpers/access');
21-
var User = require('./app/models/user');
16+
function makeRandomString(length){
17+
let random = '';
18+
crypto.randomBytes(length).forEach(value => {
19+
random += (value % length).toString(length);
20+
});
21+
return random;
22+
}
2223

23-
console.log('Creating admin user...');
24-
User.createUser(
25-
{
24+
async function makeDummyData(){
25+
let admin = await makeAdmin();
26+
let game = await makeGame();
27+
let groups = await makeGroups();
28+
return Promise.all([
29+
admin,
30+
game,
31+
groups
32+
]);
33+
}
34+
35+
async function makeAdmin() {
36+
console.log('Creating admin user...');
37+
let passwordAdmin = makeRandomString(16);
38+
let adminGroup = new Group({
39+
name: 'Admin2',
40+
slug: 'Admin2',
41+
token: 'myAccessToken',
42+
tokenExpires: null,
43+
privilege: 2,
44+
isUserGroup: true
45+
});
46+
adminGroup.save();
47+
let admin = new User({
2648
username: 'admin',
27-
password: password,
49+
password: passwordAdmin,
2850
29-
name: 'Admin'
30-
},
31-
access.privilege.admin,
32-
function(err, user)
33-
{
34-
if (err) {
35-
throw err;
36-
process.exit(1)
37-
}
38-
39-
console.log(`User admin created with password ${password}`);
40-
process.exit(0);
51+
name: 'Admin',
52+
groups: [adminGroup._id]
53+
});
54+
console.log(`User admin created with password ${passwordAdmin}`);
55+
return admin.save();
56+
}
57+
58+
async function makeGame(){
59+
console.log('Creating example game with releases...');
60+
//set your values as desired
61+
let gameParams = {
62+
title: '',
63+
slug: '',
64+
repository: '',
65+
location: '',
66+
description: ''
67+
};
68+
gameParams.created = gameParams.updated = Date.now();
69+
let game = new Game(gameParams);
70+
game.bundleId = uuid();
71+
game.releases = [];
72+
game.groups = [];
73+
game.save();
74+
let levels = ["dev", "qa", "prod"];
75+
levels.forEach(level => {
76+
let newRelease = addReleases(game.id, level);
77+
game.releases.push(newRelease);
78+
});
79+
return game.save()
80+
}
81+
82+
function addReleases(gameId, releaseLevel){
83+
console.log('Adding release with level: ' + releaseLevel);
84+
let commitHash = makeRandomString(16);
85+
let releaseParams = {
86+
game: gameId,
87+
status: releaseLevel,
88+
// branch: 'origin/my-branch',
89+
commitId: commitHash,
90+
created: Date.now(),
91+
updated: Date.now(),
4192
}
42-
);
93+
let release = new Release(releaseParams);
94+
release.save();
95+
return release;
96+
}
97+
98+
async function makeGroups(){
99+
console.log('Creating example groups...');
100+
let groupA = new Group({
101+
name: 'GroupA',
102+
privilege: 0,
103+
slug: 'groupSlugA',
104+
token: 'groupAToken',
105+
tokenExpires: null,
106+
isUserGroup: false,
107+
games: []
108+
});
109+
return groupA.save()
110+
.then(() => {
111+
return addUsers(groupA);
112+
})
113+
.then(() => {
114+
let groupB = new Group({
115+
name: 'GroupB',
116+
privilege: 0,
117+
slug: 'groupSlugB',
118+
token: 'groupBToken',
119+
tokenExpires: null,
120+
isUserGroup: false,
121+
games: []
122+
});
123+
return groupB.save()
124+
.then(() => {
125+
return addUsers(groupB);
126+
});
127+
});
128+
}
129+
130+
async function addUsers(incGroup){
131+
console.log('Creating creating non-admin user for group...');
132+
let password = makeRandomString(16);
133+
let userHash = 'user' + makeRandomString(4);
134+
let newUserGroup = new Group({
135+
name: userHash,
136+
slug: userHash,
137+
token: userHash,
138+
tokenExpires: null,
139+
privilege: 1,
140+
isUserGroup: true
141+
});
142+
newUserGroup.save();
143+
console.log('Made user specific group, now making user...')
144+
let newUser = new User({
145+
username: userHash,
146+
password: password,
147+
email: userHash + '@email.com',
148+
name: userHash,
149+
groups: [newUserGroup._id, incGroup._id]
150+
});
151+
return newUser.save();
152+
}
153+
154+
makeDummyData()
155+
.then(()=>{
156+
console.log('Dummy data loaded!');
157+
process.exit(0);
158+
})
159+
.catch(err => {
160+
console.log(err);
161+
process.exit(-1);
162+
});

0 commit comments

Comments
 (0)