Skip to content

Commit de5deef

Browse files
committed
test: Investigate integration test timeout
1 parent 539ba2a commit de5deef

File tree

5 files changed

+35
-41
lines changed

5 files changed

+35
-41
lines changed

integration/test/ParseEventuallyQueueTest.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ describe('Parse EventuallyQueue', () => {
194194
const parseServer = await reconfigureServer();
195195
const object = new TestObject({ hash: 'saveSecret' });
196196
await parseServer.handleShutdown();
197-
await new Promise(resolve => parseServer.server.close(resolve));
198197
await object.saveEventually();
199198

200199
const length = await Parse.EventuallyQueue.length();
@@ -226,7 +225,6 @@ describe('Parse EventuallyQueue', () => {
226225
const object = new TestObject({ hash: 'saveSecret' });
227226
object.setACL(acl);
228227
await parseServer.handleShutdown();
229-
await new Promise(resolve => parseServer.server.close(resolve));
230228
await object.saveEventually();
231229

232230
const length = await Parse.EventuallyQueue.length();
@@ -252,7 +250,6 @@ describe('Parse EventuallyQueue', () => {
252250
const object = new TestObject({ hash: 'deleteSecret' });
253251
await object.save();
254252
await parseServer.handleShutdown();
255-
await new Promise(resolve => parseServer.server.close(resolve));
256253
await object.destroyEventually();
257254
const length = await Parse.EventuallyQueue.length();
258255

integration/test/ParseServerTest.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
'use strict';
22

3-
const assert = require('assert');
4-
53
describe('ParseServer', () => {
64
it('can reconfigure server', async () => {
7-
const parseServer = await reconfigureServer({ serverURL: 'www.google.com' });
8-
assert.strictEqual(parseServer.config.serverURL, 'www.google.com');
5+
let parseServer = await reconfigureServer({ serverURL: 'www.google.com' });
6+
expect(parseServer.config.serverURL).toBe('www.google.com');
97
await parseServer.handleShutdown();
10-
await new Promise(resolve => parseServer.server.close(resolve));
11-
await reconfigureServer();
8+
parseServer = await reconfigureServer();
9+
expect(parseServer.config.serverURL).toBe('http://localhost:1337/parse');
1210
});
1311

1412
it('can shutdown', async () => {
13+
let close = 0;
1514
const parseServer = await reconfigureServer();
15+
parseServer.server.on('close', () => {
16+
close += 1;
17+
});
1618
const object = new TestObject({ foo: 'bar' });
1719
await parseServer.handleShutdown();
18-
await new Promise(resolve => parseServer.server.close(resolve));
20+
expect(close).toBe(1);
1921
await expectAsync(object.save()).toBeRejectedWithError(
2022
'XMLHttpRequest failed: "Unable to connect to the Parse API"'
2123
);
2224
await reconfigureServer({});
2325
await object.save();
24-
assert(object.id);
26+
expect(object.id).toBeDefined();
2527
});
2628
});

integration/test/clear.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

integration/test/helper.js

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const ParseServer = require('parse-server').default;
77
const CustomAuth = require('./CustomAuth');
88
const { TestUtils } = require('parse-server');
99
const Parse = require('../../node');
10-
const fs = require('fs');
10+
const fs = require('fs').promises;
1111
const path = require('path');
1212
const dns = require('dns');
1313
const MockEmailAdapterWithOptions = require('./support/MockEmailAdapterWithOptions');
@@ -21,6 +21,7 @@ const port = 1337;
2121
const mountPath = '/parse';
2222
const serverURL = 'http://localhost:1337/parse';
2323
let didChangeConfiguration = false;
24+
const distFiles = {};
2425

2526
/*
2627
To generate the auth data below, the Twitter app "GitHub CI Test App" has
@@ -96,8 +97,11 @@ let parseServer;
9697

9798
const reconfigureServer = async (changedConfiguration = {}) => {
9899
if (parseServer) {
99-
await parseServer.handleShutdown();
100-
await new Promise(resolve => parseServer.server.close(resolve));
100+
try {
101+
await parseServer.handleShutdown();
102+
} catch (e) {
103+
console.error('Failed to shutdown the server', e);
104+
}
101105
parseServer = undefined;
102106
return reconfigureServer(changedConfiguration);
103107
}
@@ -113,8 +117,7 @@ const reconfigureServer = async (changedConfiguration = {}) => {
113117
return reconfigureServer(newConfiguration);
114118
}
115119
const app = parseServer.expressApp;
116-
for (const fileName of ['parse.js', 'parse.min.js']) {
117-
const file = fs.readFileSync(path.resolve(__dirname, `./../../dist/${fileName}`)).toString();
120+
for (const [fileName, file] of Object.entries(distFiles)) {
118121
app.get(`/${fileName}`, (_req, res) => {
119122
res.send(`<html><head>
120123
<meta charset="utf-8">
@@ -132,12 +135,6 @@ const reconfigureServer = async (changedConfiguration = {}) => {
132135
</body></html>`);
133136
});
134137
}
135-
app.get('/clear/:fast', (req, res) => {
136-
const { fast } = req.params;
137-
TestUtils.destroyAllDataPermanently(fast).then(() => {
138-
res.send('{}');
139-
});
140-
});
141138
parseServer.server.on('connection', connection => {
142139
const key = `${connection.remoteAddress}:${connection.remotePort}`;
143140
openConnections[key] = connection;
@@ -157,18 +154,29 @@ global.TestObject = Parse.Object.extend('TestObject');
157154
global.reconfigureServer = reconfigureServer;
158155

159156
beforeAll(async () => {
157+
const promise = ['parse.js', 'parse.min.js'].map(fileName => {
158+
return fs.readFile(path.resolve(__dirname, `./../../dist/${fileName}`), 'utf8').then(file => {
159+
distFiles[fileName] = file;
160+
});
161+
});
162+
await Promise.all(promise);
160163
await reconfigureServer();
161164
Parse.initialize('integration');
162165
Parse.CoreManager.set('SERVER_URL', serverURL);
163166
Parse.CoreManager.set('MASTER_KEY', 'notsosecret');
167+
Parse.CoreManager.set('REQUEST_ATTEMPT_LIMIT', 1);
164168
});
165169

166170
afterEach(async () => {
167-
await Parse.User.logOut();
168-
Parse.Storage._clear();
169-
await TestUtils.destroyAllDataPermanently(true);
170-
if (didChangeConfiguration) {
171-
await reconfigureServer();
171+
try {
172+
await Parse.User.logOut();
173+
Parse.Storage._clear();
174+
await TestUtils.destroyAllDataPermanently(true);
175+
if (didChangeConfiguration) {
176+
await reconfigureServer();
177+
}
178+
} catch (e) {
179+
console.error('Failed to tear down the server', e);
172180
}
173181
});
174182

jasmine.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@
66
"spec_files": [
77
"*Test.js"
88
],
9-
"random": true,
10-
"timeout": 20000
9+
"random": true
1110
}

0 commit comments

Comments
 (0)