forked from glynnbird/envoy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
116 lines (98 loc) · 2.46 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
'use strict';
var chance = require('chance')(),
url = require('url'),
PouchDB = require('pouchdb'),
env = require('../lib/env.js'),
auth = require('../lib/auth'),
app = require('../app');
var testUtils = {};
var userCount = 0;
// Delete specified databases
testUtils.cleanup = function (dbs, done) {
env.getCredentials();
var num = dbs.length;
var finished = function() {
if (--num === 0) {
done();
}
};
dbs.forEach(function(db) {
new PouchDB(db).destroy(finished, finished);
});
};
testUtils.url = function(user, password) {
var e = env.getCredentials();
return url.format({
protocol: 'http',
auth: user + ':' + password,
host: e.url,
pathname: app.dbName
});
};
testUtils.uniqueUsername = function() {
return process.env.ENVOY_DATABASE_NAME + 'user' + userCount++;
};
testUtils.uniqueUserUrl = function() {
var username = testUtils.uniqueUsername();
return testUtils.url(username, auth.sha1(username));
};
var makeUser = function() {
var p = new Promise(function(resolve, reject) {
var username = testUtils.uniqueUsername();
var password = 'thepassword';
var url = testUtils.url(username, password);
var x = auth.newUser(username, password, {}, function(err, data) {
if (err) {
return reject(err);
}
resolve(url);
});
});
return p;
}
testUtils.createUser = function(numUsers) {
numUsers = numUsers || 1;
return new Promise(function(resolve, reject) {
if (numUsers === 1) {
makeUser().then(function(url) {
resolve(url);
});
} else {
var arr = [];
for(var i=0; i < numUsers; i++) {
arr.push(makeUser());
}
Promise.all(arr).then(function(results) {
resolve(results);
})
}
});
};
testUtils.makeDocs = function(count) {
var docs = [];
for (var i=0; i<count; i++) {
docs.push({
jobid: chance.guid(),
description: chance.paragraph({sentences: 2}),
client: {
firstname: chance.first(),
lastname: chance.last(),
address: chance.address(),
city: chance.city(),
state: chance.state({full: true}),
phone: chance.phone(),
zip: chance.zip(),
email: chance.email()
},
i: i
});
}
return docs;
};
testUtils.makeDocName = function() {
return 'test_doc_' + new Date().getTime();
};
testUtils.d = function (msg, obj) {
console.log(msg, JSON.stringify(obj, null, 2));
};
module.exports = testUtils;