let request = require('request'); import fs from 'fs'; // import gutil from 'gulp-util'; /** * @param {Response} response */ export function expectHtmlResponse(response) { expect(response.error).toBeFalsy(); expect(response.statusCode).toBe(200); } /** * @param {Response} response * @param {Function} done */ export function expectJsonResponse(response, done) { try { expect(response.error).toBeFalsy(); expect(response.statusCode).toBe(200); let parsedJsonObject; try { parsedJsonObject = JSON.parse(response.body); } catch (e) { expect('JSON is invalid').toBeNull(); expect(e.message).toBeNull(); } if (parsedJsonObject) { expect(parsedJsonObject).not.toBe(null); expect(parsedJsonObject).not.toEqual({}); } } catch (e) { // https://github.com/jasmine/jasmine/issues/1204 done.fail(e); } } /** * @param {string} fileName * @param {string} mockContents */ export function writeIntegrationData(fileName, mockContents) { let dir = 'test/integration/downloaded-data'; let file = `test/integration/downloaded-data/${fileName.replace(/[=?\/:\\]/g, '_')}`; file = file.replace(/^http___rcovlnx0192_8322_/, ''); if (dir && !fs.existsSync(dir)) { fs.mkdirSync(dir); } fs.writeFileSync(file, mockContents); } /** * @param {Object} feedUrl */ export function getHtmlPage(feedUrl) { return new Promise((resolve, reject) => { request.post( feedUrl, {}, function(error, response, body) { try { if (!error && response.statusCode === 200) { // gutil.log('Getting feed from ' + feedUrl); let mockContents = body.replace( 'injectedByNode: true, sourceUrl: ${feedUrl}, feedDate: ${new Date()} { request.post( feedUrl, {}, function(error, response, body) { try { if (!error && response.statusCode === 200) { // gutil.log('Getting feed from ' + feedUrl); let obj = JSON.parse(body); if (obj) { obj.__debug = { injectedByNode: true, sourceUrl: feedUrl, feedDate: new Date() }; let mockContents = JSON.stringify(obj, null, 2); writeIntegrationData(feedUrl + '.json', mockContents); } } resolve(response); } catch (e) { reject(e); } } ); }); }