UNPKG

timbits

Version:

Widget framework based on Express

126 lines (110 loc) 3.55 kB
// reduce logging levels to provide clean test feedback process.env.TIMBITS_VERBOSITY = 'critical'; process.env.PANTRY_VERBOSITY = 'critical'; // load modules var timbits = require('../lib/timbits') , should = require('should') , path = require('path') , request = require('request') // load hhtp extensions for should require('should-http'); // set testing environment var homeFolder = path.join(process.cwd(), "examples") , port = 8785 , alltests = process.env.TIMBITS_TEST_WHICH === 'all'; process.env.NODE_ENV = 'test'; // create test server var server = timbits.serve({ home: homeFolder, port: port, verbosity: 'critical' }); // helper function for testing requests function validateRequest(method, vpath, expect) { expect = expect || 'html'; describe(vpath, function() { var test_msg = "should respond with " + expect + " and status 200"; if (typeof expect !== 'string') test_msg = "should respond with status " + expect; it(test_msg, function(done) { if (method=="GET") { request("http://localhost:" + port + vpath, function(err, res) { should.not.exist(err); if (typeof expect === 'string') { res.should.have.status(200); if (expect === 'json') res.should.be.json; else res.should.be.html; } else { res.should.have.status(expect); } done(); }); } else if (method=="POST") { request.post("http://localhost:" + port + vpath, function(err, res) { should.not.exist(err); if (typeof expect === 'string') { res.should.have.status(200); if (expect === 'json') res.should.be.json; else res.should.be.html; } else { res.should.have.status(expect); } done(); }); } }); }); }; describe('timbits', function() { describe('default resources', function() { validateRequest('GET', '/timbits/help'); validateRequest('GET', '/timbits/json', 'json'); }); describe('individual help pages', function() { for (var name in timbits.box) { validateRequest('GET', "/" + name + "/help"); } }); describe('individual test pages', function() { for (var name in timbits.box) { validateRequest('GET', "/" + name + "/test"); } }); describe('automated test cases', function() { for (name in timbits.box) { timbit = timbits.box[name]; // GET requests if (timbit.examples != null && timbit.methods['GET']) { describe('specified examples for ' + name, function() { timbit.examples.forEach(function(example) { validateRequest('GET', example.href); }); }); } // Post Requests if (timbit.examples != null && timbit.methods['POST']) { describe('specified examples for ' + name, function() { timbit.examples.forEach(function(example) { validateRequest('POST', example.href); }); }); } var dynatests = timbit.generateTests(alltests); if (dynatests.length) { describe("dynamic tests for " + name, function() { dynatests.forEach(function(href) { if (timbit.methods['GET']) validateRequest('GET', href); if (timbit.methods['POST']) validateRequest('POST', href); }); }); } } }); });