diff --git a/integration/test/ParseDistTest.js b/integration/test/ParseDistTest.js index 625131bb5..0e2072b7c 100644 --- a/integration/test/ParseDistTest.js +++ b/integration/test/ParseDistTest.js @@ -6,6 +6,7 @@ let page = null; for (const fileName of ['parse.js', 'parse.min.js']) { describe(`Parse Dist Test ${fileName}`, () => { beforeEach(async () => { + console.log('beforeEach', fileName); browser = await puppeteer.launch({ args: ['--disable-web-security', '--incognito', '--no-sandbox'], }); @@ -16,6 +17,9 @@ for (const fileName of ['parse.js', 'parse.min.js']) { }); afterEach(async () => { + console.log('afterEach', fileName); + console.log('page', typeof page); + console.log('browser', typeof browser); await page.close(); await browser.close(); }); diff --git a/integration/test/ParseEventuallyQueueTest.js b/integration/test/ParseEventuallyQueueTest.js index e05ffe182..e358ebfde 100644 --- a/integration/test/ParseEventuallyQueueTest.js +++ b/integration/test/ParseEventuallyQueueTest.js @@ -194,7 +194,6 @@ describe('Parse EventuallyQueue', () => { const parseServer = await reconfigureServer(); const object = new TestObject({ hash: 'saveSecret' }); await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); await object.saveEventually(); const length = await Parse.EventuallyQueue.length(); @@ -226,7 +225,6 @@ describe('Parse EventuallyQueue', () => { const object = new TestObject({ hash: 'saveSecret' }); object.setACL(acl); await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); await object.saveEventually(); const length = await Parse.EventuallyQueue.length(); @@ -252,7 +250,6 @@ describe('Parse EventuallyQueue', () => { const object = new TestObject({ hash: 'deleteSecret' }); await object.save(); await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); await object.destroyEventually(); const length = await Parse.EventuallyQueue.length(); diff --git a/integration/test/ParseServerTest.js b/integration/test/ParseServerTest.js index 1ae23a7b4..c13c123c7 100644 --- a/integration/test/ParseServerTest.js +++ b/integration/test/ParseServerTest.js @@ -1,26 +1,28 @@ 'use strict'; -const assert = require('assert'); - describe('ParseServer', () => { it('can reconfigure server', async () => { - const parseServer = await reconfigureServer({ serverURL: 'www.google.com' }); - assert.strictEqual(parseServer.config.serverURL, 'www.google.com'); + let parseServer = await reconfigureServer({ serverURL: 'www.google.com' }); + expect(parseServer.config.serverURL).toBe('www.google.com'); await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); - await reconfigureServer(); + parseServer = await reconfigureServer(); + expect(parseServer.config.serverURL).toBe('http://localhost:1337/parse'); }); it('can shutdown', async () => { + let close = 0; const parseServer = await reconfigureServer(); + parseServer.server.on('close', () => { + close += 1; + }); const object = new TestObject({ foo: 'bar' }); await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); + expect(close).toBe(1); await expectAsync(object.save()).toBeRejectedWithError( 'XMLHttpRequest failed: "Unable to connect to the Parse API"' ); await reconfigureServer({}); await object.save(); - assert(object.id); + expect(object.id).toBeDefined(); }); }); diff --git a/integration/test/clear.js b/integration/test/clear.js deleted file mode 100644 index 2ae35ef2a..000000000 --- a/integration/test/clear.js +++ /dev/null @@ -1,12 +0,0 @@ -const Parse = require('../../node'); - -/** - * Destroys all data in the database - * Calls /clear route in integration/test/server.js - * - * @param {boolean} fast set to true if it's ok to just drop objects and not indexes. - * @returns {Promise} A promise that is resolved when database is deleted. - */ -module.exports = function (fast = true) { - return Parse._ajax('GET', `http://localhost:1337/clear/${fast}`, ''); -}; diff --git a/integration/test/helper.js b/integration/test/helper.js index 7f766e361..037e5bf3a 100644 --- a/integration/test/helper.js +++ b/integration/test/helper.js @@ -1,4 +1,4 @@ -jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000; +jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; const { SpecReporter } = require('jasmine-spec-reporter'); jasmine.getEnv().addReporter(new SpecReporter()); @@ -7,7 +7,7 @@ const ParseServer = require('parse-server').default; const CustomAuth = require('./CustomAuth'); const { TestUtils } = require('parse-server'); const Parse = require('../../node'); -const fs = require('fs'); +const fs = require('fs').promises; const path = require('path'); const dns = require('dns'); const MockEmailAdapterWithOptions = require('./support/MockEmailAdapterWithOptions'); @@ -21,6 +21,7 @@ const port = 1337; const mountPath = '/parse'; const serverURL = 'http://localhost:1337/parse'; let didChangeConfiguration = false; +const distFiles = {}; /* To generate the auth data below, the Twitter app "GitHub CI Test App" has @@ -97,7 +98,6 @@ let parseServer; const reconfigureServer = async (changedConfiguration = {}) => { if (parseServer) { await parseServer.handleShutdown(); - await new Promise(resolve => parseServer.server.close(resolve)); parseServer = undefined; return reconfigureServer(changedConfiguration); } @@ -113,8 +113,7 @@ const reconfigureServer = async (changedConfiguration = {}) => { return reconfigureServer(newConfiguration); } const app = parseServer.expressApp; - for (const fileName of ['parse.js', 'parse.min.js']) { - const file = fs.readFileSync(path.resolve(__dirname, `./../../dist/${fileName}`)).toString(); + for (const [fileName, file] of Object.entries(distFiles)) { app.get(`/${fileName}`, (_req, res) => { res.send(`
@@ -132,12 +131,6 @@ const reconfigureServer = async (changedConfiguration = {}) => { `); }); } - app.get('/clear/:fast', (req, res) => { - const { fast } = req.params; - TestUtils.destroyAllDataPermanently(fast).then(() => { - res.send('{}'); - }); - }); parseServer.server.on('connection', connection => { const key = `${connection.remoteAddress}:${connection.remotePort}`; openConnections[key] = connection; @@ -157,18 +150,29 @@ global.TestObject = Parse.Object.extend('TestObject'); global.reconfigureServer = reconfigureServer; beforeAll(async () => { + const promise = ['parse.js', 'parse.min.js'].map(fileName => { + return fs.readFile(path.resolve(__dirname, `./../../dist/${fileName}`), 'utf8').then(file => { + distFiles[fileName] = file; + }); + }); + await Promise.all(promise); await reconfigureServer(); Parse.initialize('integration'); Parse.CoreManager.set('SERVER_URL', serverURL); Parse.CoreManager.set('MASTER_KEY', 'notsosecret'); + Parse.CoreManager.set('REQUEST_ATTEMPT_LIMIT', 1); }); afterEach(async () => { - await Parse.User.logOut(); - Parse.Storage._clear(); - await TestUtils.destroyAllDataPermanently(true); - if (didChangeConfiguration) { - await reconfigureServer(); + try { + await Parse.User.logOut(); + Parse.Storage._clear(); + await TestUtils.destroyAllDataPermanently(true); + if (didChangeConfiguration) { + await reconfigureServer(); + } + } catch (e) { + console.error('Failed to tear down the server', e); } }); diff --git a/jasmine.json b/jasmine.json index 9590307f3..032337cde 100644 --- a/jasmine.json +++ b/jasmine.json @@ -6,6 +6,5 @@ "spec_files": [ "*Test.js" ], - "random": true, - "timeout": 20000 + "random": true }