Я пишу тесты в Javascript, где мне нужно проверить, что перенаправления со скрытых поддоменов работают правильно. В реальной программе это работает, но была проблема с развертыванием, из-за которой мне пришлось писать тесты, чтобы удостовериться, что 301 - это код состояния ответа.
Моя функция:
function hiddenDomainFetch(url, args) {
console.log("OG url fed is " + url)
var parsed = URL.parse(url);
console.log("url now is " + parsed.href);
parsed.protocol = 'http';
parsed.hostname = 'localhost';
parsed.port = process.env.PORT;
parsed.host = parsed.hostname + ":" + parsed.port;
url = URL.format(parsed);
console.log("after format, url is " + url);
console.log("after format, pathname is " + url.pathname);
// var options = {
// headers: {
// "X-Forward-To": 'https://example.com'
// }
// };
//protocol(url).header('Forwarded','https://example.com');
protocol(url).get(url, function(response) {
console.log(url);
if(response.statusCode == 301) {
//console.log(util.format("Redirecting %s to %s", url, response.headers['location']));
args.success(response);
return;
}
else {
args.fail(response);
return;
}
});
}
и мойкод тестирования:
describe('Restricted Subdomain',function(){
const root = path.resolve(__dirname,'..');
var localBuffer = fs.readFileSync(root + '/project/local.js');
var restrictedDomains = JSON.parse(localBuffer).URLrewrites.redirects; //where forbidden subdomains are pulled from
console.log(restrictedDomains);
var rand = Math.floor((Math.random() * restrictedDomains.length)); //choosing one at random
var testLink = restrictedDomains[rand]; //the chosen link
console.log("here is test link: " + testLink)
it('reroutes to main site correctly',function(done){
var options = {
headers: {
"Forwarded": 'https://example.com'
}
};
hiddenDomainFetch(testLink,
{
success: function(body) {
done();
},
fail: function(response) {
done(new Error(response.statusCode));
}
}, options)
});
})
Я все еще получаю 302 ошибки. То, что закомментировано, это то, что я пробовал, и это не сработало. Как мне заставить его работать правильно?