UNPKG

swint-server

Version:
284 lines (260 loc) 6.45 kB
var assert = require('assert'), request = require('request'), path = require('path'), fs = require('fs'), os = require('os'), swintServer = require('../lib'); global.swintVar.printLevel = 5; describe('HTTPS-only server', function() { var server; before(function(done) { var credPath = path.join(process.env.HOME, '.swint', 'swint-server-test.json'), cred; try { fs.accessSync(credPath); cred = JSON.parse(fs.readFileSync(credPath)); } catch(e) { cred = { mysql: { host: process.env.SWINT_SERVER_TEST_HOST, database: process.env.SWINT_SERVER_TEST_DATABASE, user: process.env.SWINT_SERVER_TEST_USER, password: process.env.SWINT_SERVER_TEST_PASSWORD } }; } fs.mkdirSync(path.join(os.tmpdir(), 'swint-server')); server = new swintServer({ http: { mode: 'redirect' }, https: { mode: 'enabled' }, middleware: { loader: [ { dir: path.join(__dirname, '../test_case/middleware') }, { dir: path.join(__dirname, '../node_modules/swint-middleware/lib/middlewares') } ], pre: [ 'favicon', 'pre-middleware1', { name: 'pre-middleware2', options: { string: 'middlewareOptionString' } } ], post: [ 'post-middleware' ] }, exceptHandlers : [ 'except-handlers' ], router: { dir: path.join(__dirname, '../test_case/router') }, static: { url: '/static', path: path.join(__dirname, '../test_case/static') }, orm: cred.mysql }, function() { done(); }); }); it('Protocol Redirection', function(done) { request.get({ url: 'http://localhost:8080/', strictSSL: false, followRedirect: false }, function(err, resp, body) { assert.equal(resp.statusCode, 302); assert.equal(body, 'Found. Redirecting to https://localhost:8443/'); done(); }); }); it('Host Redirection', function(done) { request.get({ url: 'https://127.0.0.1:8443/', strictSSL: false, followRedirect: false }, function(err, resp, body) { assert.equal(resp.statusCode, 302); assert.equal(body, 'Found. Redirecting to https://localhost:8443/'); done(); }); }); it('Middleware load', function(done) { request.get({ url: 'https://localhost:8443/test_case', strictSSL: false }, function(err, resp, body) { assert.equal(resp.headers['x-pre-middleware1'], 'middleware1'); assert.equal(resp.headers['x-pre-middleware2'], 'middlewareOptionString'); assert.equal(resp.headers['x-pre-middleware3'], 'middleware3'); assert.equal(resp.headers['x-pre-middleware4'], 'middlewareOptionString'); assert.equal( fs.readFileSync(path.join(os.tmpdir(), 'swint-server/post-middleware.txt'), 'utf-8'), 'test' ); assert.equal( fs.readFileSync(path.join(os.tmpdir(), 'swint-server/post-middleware2.txt'), 'utf-8'), 'test' ); done(); }); }); it('Static service', function(done) { request.get({ url: 'https://localhost:8443/static/foo.txt', strictSSL: false }, function(err, resp, body) { assert.equal(body, 'bar\n'); done(); }); }); it('exceptHandlers test 503', function(done){ request.get({ url: 'https://localhost:8443/exceptHandlerTest/503', headers: { Accept: 'application/json' }, strictSSL: false }, function(err, resp, body) { assert.equal(resp.statusCode, 503); done(); }); }); it('exceptHandlers test 500', function(done){ request.get({ url: 'https://localhost:8443/exceptHandlerTest/500', headers: { Accept: 'application/json' }, strictSSL: false }, function(err, resp, body) { assert.equal(resp.statusCode, 500); done(); }); }); it('404 test', function(done) { request.get({ url: 'https://localhost:8443/notFound', headers: { Accept: 'application/json' }, strictSSL: false }, function(err, resp, body) { assert.equal(resp.statusCode, 404); assert.equal(body, '"Swint - 404 Not found"\r\n'); done(); }); }); it('500 test', function(done) { request.get({ url: 'https://localhost:8443/error', headers: { Accept: 'application/json' }, strictSSL: false }, function(err, resp, body) { assert.equal(resp.statusCode, 500); assert.equal(body, '"Swint - 500 Internal server error"\r\n'); done(); }); }); after(function() { try { fs.unlinkSync(path.join(os.tmpdir(), 'swint-server/post-middleware.txt')); fs.unlinkSync(path.join(os.tmpdir(), 'swint-server/post-middleware2.txt')); } catch(e) {} fs.rmdirSync(path.join(os.tmpdir(), 'swint-server')); }); }); describe('Another setting', function() { var server; before(function(done) { var credPath = path.join(process.env.HOME, '.swint', 'swint-server-test.json'), cred; try { fs.accessSync(credPath); cred = JSON.parse(fs.readFileSync(credPath)); } catch(e) { cred = { mysql: { host: process.env.SWINT_SERVER_TEST_HOST, database: process.env.SWINT_SERVER_TEST_DATABASE, user: process.env.SWINT_SERVER_TEST_USER, password: process.env.SWINT_SERVER_TEST_PASSWORD } }; } fs.mkdirSync(path.join(os.tmpdir(), 'swint-server')); server = new swintServer({ http: { port: 8081, mode: 'enabled', validHost: ['*'] }, https: { mode: 'disabled' }, middleware: { loader: [ { dir: path.join(__dirname, '../test_case/middleware') }, { dir: path.join(__dirname, '../node_modules/swint-middleware/lib/middlewares') } ], pre: [ 'favicon', 'pre-middleware1', { name: 'pre-middleware2', options: { string: 'middlewareOptionString' } } ], post: [ 'post-middleware' ] }, router: { dir: path.join(__dirname, '../test_case/router') }, static: { url: '/static', path: path.join(__dirname, '../test_case/static') }, orm: cred.mysql }, function() { done(); }); }); it('No Redirection', function(done) { request.get({ url: 'http://127.0.0.1:8081/test_case', followRedirect: false }, function(err, resp, body) { assert.equal(resp.statusCode, 200); done(); }); }); after(function() { try { fs.unlinkSync(path.join(os.tmpdir(), 'swint-server/post-middleware.txt')); fs.unlinkSync(path.join(os.tmpdir(), 'swint-server/post-middleware2.txt')); } catch(e) {} fs.rmdirSync(path.join(os.tmpdir(), 'swint-server')); }); });