-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
Copy pathParseConfigKey.spec.js
89 lines (81 loc) · 3.1 KB
/
ParseConfigKey.spec.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
const Config = require('../lib/Config');
describe('Config Keys', () => {
const invalidKeyErrorMessage = 'Invalid key\\(s\\) found in Parse Server configuration';
let loggerErrorSpy;
beforeEach(async () => {
const logger = require('../lib/logger').logger;
loggerErrorSpy = spyOn(logger, 'error').and.callThrough();
spyOn(Config, 'validateOptions').and.callFake(() => {});
});
it('recognizes invalid keys in root', async () => {
await expectAsync(reconfigureServer({
invalidKey: 1,
})).toBeResolved();
const error = loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '');
expect(error).toMatch(invalidKeyErrorMessage);
});
it('recognizes invalid keys in pages.customUrls', async () => {
await expectAsync(reconfigureServer({
pages: {
customUrls: {
invalidKey: 1,
EmailVerificationSendFail: 1,
}
}
})).toBeResolved();
const error = loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '');
expect(error).toMatch(invalidKeyErrorMessage);
expect(error).toMatch(`invalidKey`);
expect(error).toMatch(`EmailVerificationSendFail`);
});
it('recognizes invalid keys in liveQueryServerOptions', async () => {
await expectAsync(reconfigureServer({
liveQueryServerOptions: {
invalidKey: 1,
MasterKey: 1,
}
})).toBeResolved();
const error = loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '');
expect(error).toMatch(invalidKeyErrorMessage);
expect(error).toMatch(`MasterKey`);
});
it('recognizes invalid keys in rateLimit', async () => {
await expectAsync(reconfigureServer({
rateLimit: [
{ invalidKey: 1 },
{ RequestPath: 1 },
{ RequestTimeWindow: 1 },
]
})).toBeRejected();
const error = loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '');
expect(error).toMatch(invalidKeyErrorMessage);
expect(error).toMatch('rateLimit\\[0\\]\\.invalidKey');
expect(error).toMatch('rateLimit\\[1\\]\\.RequestPath');
expect(error).toMatch('rateLimit\\[2\\]\\.RequestTimeWindow');
});
it_only_db('mongo')('recognizes valid keys in default configuration', async () => {
await expectAsync(reconfigureServer({
...defaultConfiguration,
})).toBeResolved();
expect(loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '')).not.toMatch(invalidKeyErrorMessage);
});
it_only_db('mongo')('recognizes valid keys in databaseOptions (MongoDB)', async () => {
await expectAsync(reconfigureServer({
databaseURI: 'mongodb://localhost:27017/parse',
filesAdapter: null,
databaseAdapter: null,
databaseOptions: {
retryWrites: true,
maxTimeMS: 1000,
maxStalenessSeconds: 10,
maxPoolSize: 10,
minPoolSize: 5,
connectTimeoutMS: 5000,
socketTimeoutMS: 5000,
autoSelectFamily: true,
autoSelectFamilyAttemptTimeout: 3000
},
})).toBeResolved();
expect(loggerErrorSpy.calls.all().reduce((s, call) => s += call.args[0], '')).not.toMatch(invalidKeyErrorMessage);
});
});