Skip to content

Instantly share code, notes, and snippets.

@YanivHaramati
Last active August 29, 2015 14:05
Show Gist options
  • Save YanivHaramati/ed74197d7d2a02f2430c to your computer and use it in GitHub Desktop.
Save YanivHaramati/ed74197d7d2a02f2430c to your computer and use it in GitHub Desktop.
var Promise = require('bluebird'),
request = require('request'),
url = require('url'),
tests = require('./tests').tests;
function promiseableRequest(args) {
return new Promise(function(resolve, reject) {
var opts = {
uri: url.parse(args.url),
followRedirect: !!args.redirect
}
request(opts, function (error, response, body) {
if (error) reject(error);
var match = isMatch(args, response);
resolve({test: {description: args, status: match}});
});
});
}
function isMatch(args, response) {
var status = response.statusCode;
var match = (status === args.status);
if (args.redirect_to) {
match = match && (response.request.uri.href == args.redirect_to);
}
return match;
}
Promise
.reduce(tests.map(promiseableRequest),
function(finalResult, currentResult) {
var test = currentResult.test;
var bucket = (test.status) ? finalResult.pass : finalResult.fail;
bucket.push({test: test.description});
return (finalResult);
}, { pass: [], fail: []})
.catch(function(err) {
console.log("error: " + err);
process.exit(1);
})
.then(function(result) {
console.log(JSON.stringify(result, null, '\t'));
console.log("tests results for " + tests.length + " tests.");
process.exit((result.fail.length) ? 1 : 0);
});
module.exports = {
tests: [
{url: "http://www.realtor.com/local/", status: 200},
{url: "http://www.realtor.com/local", status: 200},
{url: "http://www.realtor.com/local/California", status: 200},
{url: "http://www.realtor.com/local/California/rent-prices", status: 200},
{url: "http://www.realtor.com/local/California/home-prices", status: 200},
{url: "http://www.realtor.com/local/California/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Texas", status: 200},
{url: "http://www.realtor.com/local/Texas/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Texas/home-prices", status: 200},
{url: "http://www.realtor.com/local/Texas/lifestyle", status: 200},
{url: "http://www.realtor.com/local/94131", status: 200},
{url: "http://www.realtor.com/local/94131/rent-prices", status: 200},
{url: "http://www.realtor.com/local/94131/home-prices", status: 200},
{url: "http://www.realtor.com/local/94131/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Irene_Olive-Branch_TN", status: 200},
{url: "http://www.realtor.com/local/Irene_Olive-Branch_TN/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Irene_Olive-Branch_TN/home-prices", status: 200},
{url: "http://www.realtor.com/local/Irene_Olive-Branch_TN/lifestyle", status: 200},
{url: "http://www.realtor.com/local/01061", status: 200},
{url: "http://www.realtor.com/local/01061/rent-prices", status: 200},
{url: "http://www.realtor.com/local/01061/home-prices", status: 200},
{url: "http://www.realtor.com/local/01061/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Plano_TX", status: 200},
{url: "http://www.realtor.com/local/Plano_TX/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Plano_TX/home-prices", status: 200},
{url: "http://www.realtor.com/local/Plano_TX/lifestyle", status: 200},
{url: "http://www.realtor.com/local/San-Francisco-County_CA", status: 200},
{url: "http://www.realtor.com/local/San-Francisco-County_CA/rent-prices", status: 200},
{url: "http://www.realtor.com/local/San-Francisco-County_CA/home-prices", status: 200},
{url: "http://www.realtor.com/local/San-Francisco-County_CA/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Armstrong-Park_Plano_TX", status: 200},
{url: "http://www.realtor.com/local/Armstrong-Park_Plano_TX/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Armstrong-Park_Plano_TX/home-prices", status: 200},
{url: "http://www.realtor.com/local/Armstrong-Park_Plano_TX/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Jefferson-On-The-Bend-Sub_Plano_TX", status: 200},
{url: "http://www.realtor.com/local/Jefferson-On-The-Bend-Sub_Plano_TX/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Jefferson-On-The-Bend-Sub_Plano_TX/home-prices", status: 200},
{url: "http://www.realtor.com/local/Jefferson-On-The-Bend-Sub_Plano_TX/lifestyle", status: 200},
{url: "http://www.realtor.com/local/Hanford-Metro_CA", status: 200},
{url: "http://www.realtor.com/local/Hanford-Metro_CA/rent-prices", status: 200},
{url: "http://www.realtor.com/local/Hanford-Metro_CA/home-prices", status: 200},
{url: "http://www.realtor.com/local/Hanford-Metro_CA/lifestyle", status: 200},
{url: "http://www.realtor.com/local/foobar1123", status: 404},
{url: "http://www.realtor.com/local/Saint-Thomas_VI", status: 301},
{url: "http://www.realtor.com/local/sea", status: 200, redirect: true, redirect_to: "http://www.realtor.com/local/Seattle_WA"},
{url: "http://www.realtor.com/local/Asawa-San-Francisco-School-Of-The-Arts_San-Francisco_San-Francisco-County_CA", status: 301},
{url: "http://www.realtor.com/local/Asawa-San-Francisco-School-Of-The-Arts_San-Francisco_San-Francisco-County_CA/", status: 301},
{url: "http://www.realtor.com/local/Asawa-San-Francisco-School-Of-The-Arts_San-Francisco_San-Francisco-County_CA/education", status: 200},
{url: "http://www.realtor.com/local/Asawa-San-Francisco-School-Of-The-Arts_San-Francisco_San-Francisco-County_CA/test-scores", status: 200},
{url: "http://www.realtor.com/local/San-Francisco-Unified-School-District_San-Francisco_San-Francisco-County_CA", status: 301},
{url: "http://www.realtor.com/local/San-Francisco-Unified-School-District_San-Francisco_San-Francisco-County_CA/", status: 301},
{url: "http://www.realtor.com/local/San-Francisco-Unified-School-District_San-Francisco_San-Francisco-County_CA/education", status: 200},
{url: "http://www.realtor.com/local/Archbishop-Riordan-High-Private-School_San-Francisco_San-Francisco-County_CA", status: 301},
{url: "http://www.realtor.com/local/Archbishop-Riordan-High-Private-School_San-Francisco_San-Francisco-County_CA/", status: 301},
{url: "http://www.realtor.com/local/Archbishop-Riordan-High-Private-School_San-Francisco_San-Francisco-County_CA/education", status: 200},
{url: "http://www.realtor.com/local/Archbishop-Riordan-High-Private-School_San-Francisco_San-Francisco-County_CA/test-scores", status: 200},
]
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment