forked from parse-community/parse-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParseServer.Security.spec.js
More file actions
76 lines (73 loc) · 2.27 KB
/
Copy pathParseServer.Security.spec.js
File metadata and controls
76 lines (73 loc) · 2.27 KB
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
'use strict';
const Parse = require('parse/node');
const request = require('../lib/request');
const defaultHeaders = {
'X-Parse-Application-Id': 'test',
'X-Parse-Rest-API-Key': 'rest',
'Content-Type': 'application/json',
};
const masterKeyHeaders = {
'X-Parse-Application-Id': 'test',
'X-Parse-Rest-API-Key': 'rest',
'X-Parse-Master-Key': 'test',
'Content-Type': 'application/json',
};
const defaultOptions = {
headers: defaultHeaders,
json: true,
};
const masterKeyOptions = {
headers: masterKeyHeaders,
json: true,
};
describe('SecurityChecks', () => {
it('should reject access when not using masterKey (/securityChecks)', done => {
request(
Object.assign({ url: Parse.serverURL + '/securityChecks' }, defaultOptions)
).then(done.fail, () => done());
});
it('should reject access by default to /securityChecks, even with masterKey', done => {
request(
Object.assign({ url: Parse.serverURL + '/securityChecks' }, masterKeyOptions)
).then(done.fail, () => done());
});
it('can get security advice', async done => {
await reconfigureServer({
securityChecks: {
enableSecurityChecks: true,
enableLogOutput: true,
},
});
const options = Object.assign({}, masterKeyOptions, {
method: 'GET',
url: Parse.serverURL + '/securityChecks',
});
request(options).then(res => {
expect(res.data.CLP).not.toBeUndefined();
expect(res.data.ServerConfiguration).not.toBeUndefined();
expect(res.data.Database).not.toBeUndefined();
expect(res.data.Total).not.toBeUndefined();
done();
});
});
it('can get security on start', async done => {
await reconfigureServer({
securityChecks: {
enableSecurityChecks: true,
enableLogOutput: true,
},
});
const logger = require('../lib/logger').logger;
spyOn(logger, 'warn').and.callFake(() => {});
await new Promise(resolve => {
setTimeout(resolve, 2000);
});
let messagesCalled = '';
for (const item in logger.warn.calls.all()) {
const call = logger.warn.calls.all()[item];
messagesCalled = messagesCalled + ' ' + (call.args || []).join(' ');
}
expect(messagesCalled).toContain('Clients are currently allowed to create new classes.');
done();
});
});