You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.5 KiB

var test = require('tape');
var http = require('http');
var hyperquest = require('../');
var bufferFrom = require('buffer-from');
var server = http.createServer(function (req, res) {
var au = req.headers.authorization;
if (!au) return res.end('ACCESS DENIED');
var buf = bufferFrom(au.replace(/^Basic\s+/, ''), 'base64');
var s = buf.toString().split(':');
if (s[0] === 'm##' && s[1] === 'h@x') {
res.end('WELCOME TO ZOMBO COM');
}
else {
res.end('ACCESS DENIED!!!');
}
});
test('basic auth with escaped params', function (t) {
t.plan(3);
server.listen(0, function () {
var port = server.address().port;
checkUnauth(t, port);
checkValid(t, port);
checkInvalid(t, port);
});
t.on('end', server.close.bind(server));
});
function checkUnauth (t, port) {
var r = hyperquest('http://localhost:' + port);
var data = '';
r.on('data', function (buf) { data += buf });
r.on('end', function () { t.equal(data, 'ACCESS DENIED') });
}
function checkValid (t, port) {
var r = hyperquest('http://m%23%23:h%40x@localhost:' + port);
var data = '';
r.on('data', function (buf) { data += buf });
r.on('end', function () { t.equal(data, 'WELCOME TO ZOMBO COM') });
}
function checkInvalid (t, port) {
var r = hyperquest('http://beep:boop@localhost:' + port);
var data = '';
r.on('data', function (buf) { data += buf });
r.on('end', function () { t.equal(data, 'ACCESS DENIED!!!') });
}