11// Load Environment
2- var dotenv = require ( 'dotenv' ) ;
2+ const dotenv = require ( 'dotenv' ) ;
33dotenv . load ( ) ;
44process . env . MONGO_DATABASE = 'mongodb://localhost:27017/connect' ;
55process . 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' ) ( ) ;
179require ( './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 ,
285029- 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