node-static-auth
Version:
Node.js static server with Basic auth and access file logging, HTTPS support and custom error pages
158 lines (128 loc) • 4.31 kB
JavaScript
;
var _sourceMapSupport2 = require('source-map-support');
var _utils = require('./server/utils');
var _utils2 = _interopRequireDefault(_utils);
var _betterAssert = require('better-assert');
var _betterAssert2 = _interopRequireDefault(_betterAssert);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _nodeRunCmd = require('node-run-cmd');
var _nodeRunCmd2 = _interopRequireDefault(_nodeRunCmd);
var _superagent = require('superagent');
var _superagent2 = _interopRequireDefault(_superagent);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _sourceMapSupport2.install)();
var config = void 0,
inst = void 0,
logg = void 0;
/**
* custom error pages tests
*
*/
// eslint-disable-next-line no-sync
var cert = _fs2.default.readFileSync(__dirname + '/../example/server/localhost-test-cert.pem');
config = {
nodeStatic: {
// all available node-static options https://www.npmjs.com/package/node-static: `new static.Server(root, options)`
// use path relative to project root, i.e. process.cwd()
root: 'example/public',
customPages: {
forbidden: 'forbidden.html',
notFound: 'not-found.html',
error: 'error.html'
}
},
// our web server options
server: {
port: 5012,
http2: false,
ssl: {
enabled: true,
httpListener: 3010,
// enter path relative to project root
key: 'example/server/localhost-test-privkey.pem',
cert: 'example/server/localhost-test-cert.pem'
}
},
// basic auth credentials
auth: {
enabled: true, // false disable
name: 'test',
pass: 'test',
realm: 'Private'
},
logger: {
use: true, // false disable
// make sure directory exists first
filename: 'custom-access.log',
folder: 'example/server/clogs',
type: 'combined'
}
};
before(function (done) {
// runs before all tests in this block
var NodeStaticAuth2 = require('../lib');
// eslint-disable-next-line no-unused-vars
var custom = new NodeStaticAuth2(config, function (svr, log) {
inst = svr;
// get logger instance to close stream
logg = log;
console.log('custom test svr running');
done();
});
});
// todo: read content
var forbidden = '<h1 style="color:red;">Forbidden</h1>';
var notFound = '<h1>404</h1>';
describe('static-auth server with custom pages', function () {
it('should get custom forbidden page ', function (done) {
_superagent2.default.get((config.server.ssl.enabled ? 'https://' : 'http://') + 'localhost:' + config.server.port + '/?forbidden').auth('hack', 'hack', {
type: 'auto'
}).ca(cert).end(function (err, res) {
(0, _betterAssert2.default)(res.status === 401);
(0, _betterAssert2.default)(res.text.includes(forbidden));
done();
});
});
it('should get custom 404 page', function (done) {
var supportsHttp2 = _utils2.default.isHttp2Supported();
if (config.server.http2 && supportsHttp2) {
// eslint-disable-next-line no-invalid-this
this.skip();
} else {
_superagent2.default.get((config.server.ssl.enabled ? 'https://' : 'http://') + 'localhost:' + config.server.port + '/no-page-here').auth(config.auth.name, config.auth.pass, {
type: 'auto'
}).ca(cert).end(function (err, res) {
(0, _betterAssert2.default)(res.status === 404);
(0, _betterAssert2.default)(res.text.includes(notFound));
// eslint-disable-next-line no-unused-vars
done();
});
}
});
it('should get custom 500 page', function (done) {
// eslint-disable-next-line no-unused-vars
this.skip();
});
});
after(function (done) {
// clean up logs folders
// need to close fs.stream manually
// due to fuse hidden file preventing on some linux dist
logg.close(function () {
//console.log('logg closed');
inst.close(function () {
//console.log('svr closed');
var dataCallback = function dataCallback(data) {
//console.log('done deleting files', data)
done();
};
_nodeRunCmd2.default.run('rm -rf ' + config.logger.folder, {
onDone: dataCallback,
onError: dataCallback
//onData: dataCallback,
});
});
});
});
//# sourceMappingURL=custom.spec.js.map