mirror of
https://gitlab.silvrtree.co.uk/martind2000/ft-webplatform.git
synced 2025-02-04 14:40:13 +00:00
112 lines
2.8 KiB
JavaScript
112 lines
2.8 KiB
JavaScript
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(
|
|
'</body',
|
|
`<div>injectedByNode: true, sourceUrl: ${feedUrl}, feedDate: ${new Date()}</div></body`
|
|
);
|
|
writeIntegrationData(feedUrl + '.html', mockContents);
|
|
}
|
|
resolve(response);
|
|
} catch (e) {
|
|
reject(e);
|
|
}
|
|
}
|
|
);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param {Object} feedUrl
|
|
*/
|
|
export function getJsonFeed(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 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);
|
|
}
|
|
}
|
|
);
|
|
});
|
|
}
|