Example #1
0
    'test routing': function(){
        var server = helpers.run();
        server.use('/products', connect.router(products));
        server.use('/', connect.router(main));
        server.use('/', connect.errorHandler({ showMessage: true }));

        server.assertResponse('GET', '/lang/en', 200, 'en');
        server.assertResponse('GET', '/lang/foobar', 404, 'Cannot GET /lang/foobar');

        server.assertResponse('GET', '/out', 404, 'Cannot GET /out');

        server.assertResponse('GET', '/items/12', 200, 'item 12');
        server.assertResponse('GET', '/items', 200, 'items');
        
        server.assertResponse('GET', '/staff/12', 200, 'GET staff 12');
        server.assertResponse('POST', '/staff/12', 200, 'POST staff 12');

        server.assertResponse('GET', '/failure/12', 500, 'Error: fail boat');

        server.assertResponse('GET', '/products', 200, 'products');
        server.assertResponse('GET', '/products/', 200, 'products');
        server.assertResponse('GET', '/products.json', 200, 'products as json');
        server.assertResponse('GET', '/products/12', 200, 'product 12');
        server.assertResponse('POST', '/products.json', 404, 'only GET is allowed to /products');
        server.assertResponse('PUT', '/products/12', 404, 'only GET is allowed to /products');
        server.assertResponse('DELETE', '/products', 404, 'only GET is allowed to /products');

        server.assertResponse('GET', '/next', 404, 'Cannot GET /next');
        server.assertResponse('GET', '/error', 500, 'Error: boom!');

        server.assertResponse('GET', '/cars/%5Bhey%5D', 200, 'format: undefined id: [hey]');
        server.assertResponse('GET', '/cars/12', 200, 'format: undefined id: 12');
        server.assertResponse('GET', '/cars/12.json', 200, 'format: json id: 12');

        server.assertResponse('GET', '/account/12/files/jquery.js', 200, 'file: jquery.js');

        server.assertResponse('GET', '/', 200, 'GET /', 'Test router GET /');
        server.assertResponse('POST', '/', 200, 'POST /', 'Test router POST /');
        server.assertResponse('PUT', '/', 200, 'PUT /', 'Test router PUT /');
        server.assertResponse('DELETE', '/', 200, 'DELETE /', 'Test router DELETE /');
        server.assertResponse('GET', '/user', 404, 'Cannot GET /user', 'Test router GET unmatched path param');
        server.assertResponse('GET', '/user/12', 200, 'viewing user 12', 'Test router GET matched path param');
        server.assertResponse('GET', '/user/12/', 200, 'viewing user 12', 'Test router GET matched path param with trailing slash');
        server.assertResponse('GET', '/user/99/edit', 200, 'editing user 99', 'Test router GET matched path with several params');
        server.assertResponse('GET', '/user/99/edit/', 200, 'editing user 99', 'Test router GET matched path with several params with trailing slash');
        server.assertResponse('GET', '/range/11-99', 200, 'range 11 to 99');
        server.assertResponse('GET', '/range/11-aa', 404, 'Cannot GET /range/11-aa');
        server.assertResponse('GET', '/range/11-', 200, 'range 11 to HEAD');
        server.assertResponse('GET', '/users.json', 200, 'json format');
        server.assertResponse('GET', '/cookies', 200, 'num num', 'Test router optional placeholder without value');
        server.assertResponse('GET', '/cookies.json', 200, '["num","num"]', 'Test reset optional placeholder with value');
        server.assertResponse('GET', '/public', 404, 'Cannot GET /public', 'Test required splat without value');
        server.assertResponse('GET', '/public/jquery.js', 200, 'splat "jquery.js"', 'Test required splat with value');
        server.assertResponse('GET', '/public/javascripts/jquery.js', 200, 'splat "javascripts/jquery.js"', 'Test required splat with segmented');
        server.assertResponse('GET', '/files/jquery.js', 200, 'path: "jquery" ext: "js"', 'Test several required splats');
        server.assertResponse('GET', '/files/javascripts/jquery.js', 200, 'path: "javascripts/jquery" ext: "js"', 'Test several required splats');
        server.assertResponse('GET', '/commit/foo..bar', 200, 'captures: foo, bar', 'Test RegExp paths');
    }
Example #2
0
exports.echoServer = function (options) {
  var port = exports.port;
  var protocol = options ? 'https' : 'http';
  var server;

  exports.port += 1;

  function handler(request, response, next) {
    var echo = _getRequestJSON(request);
    var requestedCode = request.headers['x-give-me-status-dude'];
    echo.payload = request.rawBody;
    var returnEcho = JSON.stringify(echo);
    var headers = {
      'Content-Type': 'application/json',
      'X-Foo-Bar' : '2342asdf'
    };

    response.writeHead(requestedCode || 200, headers);

    if (request.method !== 'HEAD') {
      response.write(returnEcho);
    }

    response.end();
    server.close();
  }

  if (options) {
    server = Connect.createServer(
      options,
      Connect.bodyParser(),
      Connect.router(function (app) {
          _routeall(app, /foo(.*)/, handler);
        })
    );
  } else {
    server = Connect.createServer(
      Connect.bodyParser(),
      Gzip(),
      Connect.router(function (app) {
          _routeall(app, /foo(.*)/, handler);
        })
    );
  }

  server.listen(port, 'localhost');

  return {
    url: protocol + '://localhost:' + port,
    serv: server
  };
};
Example #3
0
cli.main(function(args, options) {
  if (options.daemonize && (!options.pid || !options.log)) {
    cli.fatal("--pid and --log are required if --daemonize")
    cli.getUsage()
  }

  connect.bodyParser.parse["plain/text"] = function(rawBody) { return rawBody }

  connect(
    connect.bodyParser(),
    connect.router(function(resource) {
      resource.get("/ping", function(request, response) {
        response.writeHead(200, {"Content-Type": "plain/text"})
        response.end("PONG")
      })
      resource.post("/echo", function(request, response) {
        util.log(request.headers, request.body)
        response.writeHead(200, {"Content-Type": request.headers["content-type"]})
        response.end(request.body)
      })
    }),
    connect["static"](path.join(__dirname, "public"))
  ).listen(options.port, options.host)

  if (options.daemonize) {
    daemon.daemonize(options.log, options.pid, function(error, started) {
      if (error) {
        cli.fatal("unable to make him a daemon:" + error)
        console.dir(error.stack)
        process.exit(1)
      }
    })
  }
})
Example #4
0
  'test .match()': function(){
    var router = connect.router(function(app){
      app.get('/user/:id', function(req, res, next){
        req.params.id = parseInt(req.params.id, 10);
        next();
      });

      app.get('/user/:id', function(req, res){
        res.end(typeof req.params.id);
      });

      app.put('/user/:id', function(){});
      app.get('/user/:id/edit', function(){});
      app.post('/user', function(){});
    });

    var fn = router.match('/user/12')[0];
    fn.keys.should.eql(['id']);
    fn.params.id.should.equal('12');

    router.match('/').should.be.empty;
    router.match('/', 'GET').should.be.empty;
    router.match('/user/12', 'GET')[0].should.be.a('function');
    router.match('/user/12/edit', 'GET').should.have.length(1);
    router.match('/user/12', 'GET').should.have.length(2);
    router.match('/user/12', 'PUT').should.have.length(1);
    router.match('/user', 'POST').should.have.length(1);
    router.match('/user').should.have.length(1);
  },
Example #5
0
  'test several splats': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/file/*.*', function(req, res){
          res.end('file ' + req.params[0] + ' ext ' + req.params[1]);
        });

        app.get('/move/*/to/*', function(req, res){
          res.end('moved ' + req.params[0] + ' to ' + req.params[1]);
        });
      })
    );

    assert.response(app,
      { url: '/file/jquery.js' },
      { body: 'file jquery ext js' });
    
    assert.response(app,
      { url: '/file/public/javascripts/jquery.js' },
      { body: 'file public/javascripts/jquery ext js' });

    assert.response(app,
      { url: '/move/jquery/to/jquery.js' },
      { body: 'moved jquery to jquery.js' });
  },
Example #6
0
File: pages.js Project: lansea/nabe
var pages = module.exports = function pages(o) {
  
  console.log('init pages layer > ', o);
  
  return connect.router(function(app) {
    
    // ### `GET /:filename`
    // returns page file in the `templates/pages` directory.
    app.get('/:file', function(req, res, next) {
        var url = req.url,
        file = 'page.' + req.params.file + '.html',
        tmpl = 'tmpl.' + file,
        hasTmpl = util.hasTmpl(tmpl);
        
        // if requested page does not exist, pass control
        // to the next middleware in the stack
        if(!hasTmpl) {return next();}
        
        // render file and end response
        renderer.render(file, res, {headers: req.headers, content: util.toHtml(tmpl, {
          config: renderer.options
        })});
    });
    
  });
};
Example #7
0
  'test params': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/user/:id', function(req, res){
          res.end('user ' + req.params.id);
        });

        app.get('/user/:id/:op', function(req, res){
          res.end(req.params.op + 'ing user ' + req.params.id);
        });
      })
    );

    assert.response(app,
      { url: '/user/12/' },
      { body: 'user 12' });

    assert.response(app,
      { url: '/user/12' },
      { body: 'user 12' });
    
    assert.response(app,
      { url: '/user/tj.holowaychuk' },
      { body: 'user tj.holowaychuk' });
    
    assert.response(app,
      { url: '/user/12/edit' },
      { body: 'editing user 12' });
  },
 that.setupRoutes= function(server) {
   server.use('/', connect.router(function routes(app){
     app.post('/auth/form_callback', function(request, response){
       request.authenticate( [that.name], function(error, authenticated) {
         var redirectUrl= "/"
         var parsedUrl= url.parse(request.url, true);
         if( parsedUrl.query && parsedUrl.query.redirect_url ) {
           redirectUrl= parsedUrl.query.redirect_url;
         }
         response.writeHead(303, { 'Location':  redirectUrl });
         response.end('');
       })
     });
     app.get('/auth/form_callback', function(request, response){
       response.writeHead(200, {'Content-Type': 'text/html'}) 
       var parsedUrl= url.parse(request.url, true);
       var redirectUrl= "";
       if( parsedUrl.query && parsedUrl.query.redirect_url ) {
         redirectUrl= "?redirect_url="+ parsedUrl.query.redirect_url;
       }
       response.end("<html><body><form action='/auth/form_callback"+ redirectUrl+ "' method='post'> \n\
                <label for='user'>Name</label><input type='text' name='user' id='user'/><br/> \n\
                <label for='password'>Password</label><input type='password' name='password' id='password'/> \n\
                <input type='submit'/> \n\
                </form></body</html>");
     });
   }));
 };
Example #9
0
  'test OPTIONS': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/items', function(){});
        app.post('/items', function(){});
        app.get('/users', function(){});
        app.options('/accounts', function(req, res){
          res.writeHead(204, { Allow: 'GET' });
          res.end();
        });
      })
    );

    assert.response(app,
      { url: '/items', method: 'OPTIONS' },
      { body: 'GET,POST', headers: { Allow: 'GET,POST' }});
    
    assert.response(app,
      { url: '/users', method: 'OPTIONS' },
      { body: 'GET', headers: { Allow: 'GET' }});

    assert.response(app,
      { url: '/accounts', method: 'OPTIONS' },
      { headers: { Allow: 'GET' }});
  },
Example #10
0
  'test next()': function(){
    var hits = [];

    var app = connect.createServer(
      connect.router(function(app){
        app.get('/:user', function(req, res, next){
          hits.push('a');
          next();
        });
        
        app.get('/:user', function(req, res, next){
          hits.push('b');
          next();
        });
        
        app.get('/:user', function(req, res, next){
          hits.push('c');
          res.end(req.params.user);
        });
      })
    );
    
    assert.response(app,
      { url: '/tj' },
      { body: 'tj' },
      function(){
        hits.should.eql(['a', 'b', 'c']);
      });
  },
Example #11
0
var WebServer = function(site) {
  this.site = site;

  this.server = connect.createServer(
    // log HTTP requests
    connect.logger(),

    // decode application/x-www-form-urlencoded and application/json requests
    connect.bodyDecoder(),

    // populate req.cookies
    connect.cookieDecoder(),

    // dole out session cookies
    connect.session({ store: new MemoryStore({ reapInterval: 5 * MINUTE }) }),

    // conditional HTTP GETs
    connect.conditionalGet(),

    // handle /
    connect.router(this.mainHandler()),

    // cache manifest for offline app
    //connect.cacheManifest(),

    // merge static files into /
    connect.staticProvider({root: __dirname + "/../public", maxAge: 1000}),

    connect.errorHandler({ showStack: true })
  );
};
Example #12
0
  'test .lookup()': function(){
    var router = connect.router(function(app){
      app.get('/user/:id', function(req, res, next){
        req.params.id = parseInt(req.params.id, 10);
        next();
      });

      app.get('/user/:id', function(req, res){
        res.end(typeof req.params.id);
      });

      app.put('/user/:id', function(){});
      app.get('/user/:id/edit', function(){});
      app.post('/user', function(){});
    });

    var fn = router.lookup('/user/:id')[0];
    fn.regexp.should.be.an.instanceof(RegExp);
    fn.path.should.equal('/user/:id');
    fn.method.should.equal('GET');
    fn.keys.should.eql(['id']);

    router.lookup('/user/:id')[0].should.be.a('function');
    router.lookup('/user/:id').should.have.length(3);
    router.lookup('/user/:id', 'GET').should.have.length(2);
    router.lookup('/user/:id', 'get').should.have.length(2);
    router.lookup('/user/:id/edit', 'GET').should.have.length(1);
    router.lookup('/user/:id', 'PUT').should.have.length(1);
    router.lookup('/user/:id', 'FOO').should.be.empty;
  },
Example #13
0
dbManager.open(function (error, db) {
	if ( error ) { 
		console.log("Mongo DB connection failed.");
	}
	
	// Web
	connect.createServer(connect.router(function (app) {
		
		// 1. Emergency
		//  http://127.0.0.1:8210/check
		app.get('/check', function(req, res, next) {		
			emergency(db, req, res);
		});
			
		// 2. Notice
		app.get('/notice', function(req, res, next)	{		
			var query = url.parse(req.url, true).query;				
			res.writeHead(200, {'Content-Type' : 'text/html' });		
			res.end();
		}); 
		
		// 3. SignIn
		app.get('/user/auth/login', function(req, res, next)	{		
			signin(db, req, res);				
		}); 
		
	})).listen(8210, function() {
		console.log('GameServer running at http://127.0.0.1:8210');
});

 db.close();
});
Example #14
0
exports.main = function(onReadyDeferred, options)
{
    var server = CONNECT();

    server.use(CONNECT.router(function(app)
    {
        app.get(/^\/$/, CONNECT.static(__dirname));

        app.get(/^\/loader.js/, CONNECT.static(PATH.dirname(require.resolve("sourcemint-loader-js/loader.js"))));

        app.get(/^\/packages\/([^\/]*?)(?:\.js)?(\/.*)?$/, BUNDLER.hoist(__dirname + "/packages/$1", {
            distributionBasePath: __dirname + "/dist",
            packageIdHashSeed: "__EXAMPLE__"
        }));
    }));

    /*TEST*/ if (onReadyDeferred) {
    /*TEST*/     server.once("listening", function() {
    /*TEST*/         onReadyDeferred.resolve(function onTestDone(stoppedCallback) {
    /*TEST*/             server.once("close", function() {
    /*TEST*/                 stoppedCallback();
    /*TEST*/             });
    /*TEST*/             server.close();
    /*TEST*/         });
    /*TEST*/     });
    /*TEST*/ }

    server.listen(options.port, "127.0.0.1");

    console.log("Server running at http://127.0.0.1:" + options.port + "/");
}
Example #15
0
  'test methods': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/', function(req, res){
          res.end('GET /');
        });
        
        app.post('/', function(req, res){
          res.end('POST /');
        });
        
        app.put('/', function(req, res){
          res.end('PUT /');
        });
      })
    );

    assert.response(app,
      { url: '/' },
      { body: 'GET /' });
    
    assert.response(app,
      { url: '/', method: 'POST' },
      { body: 'POST /' });
    
    assert.response(app,
      { url: '/', method: 'PUT' },
      { body: 'PUT /' });
  },
Example #16
0
function server (store) {
    var webserver = connect.createServer();
    webserver.use(connect.bodyParser());
    webserver.use(sesame({ store : store }));
    
    webserver.use(connect.router(function (app) {
        app.get('/whoami', function (req, res) {
            res.writeHead(200, { 'Content-Type' : 'text/html' });
            res.end(req.session.name || 'nobody');
        });
        
        app.post('/sign-in', function (req, res) {
            req.on('data', function (body) {
                var name = body.toString().match(/name=(.+)/)[1];
                req.session = { name : name };
                res.writeHead(200, { 'Content-Type' : 'text/html' });
                res.end('ok');
            });
        });
        
        app.get('/sign-out', function (req, res) {
            req.session = {};
            res.writeHead(200, { 'Content-Type' : 'text/html' });
            res.end('ok');
        });
    }));
    
    return webserver;
}
Example #17
0
(function () {
  "use strict";

  var steve = require('./steve')
    , connect = require('connect')
    , _ = require('underscore')
    , forEachAsync = require('forEachAsync')
    , app = connect.createServer()
    ;


  function getHello(request, response) {
    response.json(request.params);
    response.end();
  }

  function router(rest) {
    rest.get('/hello/:name?', getHello);
  }

  app
    .use(steve)
    .use(connect.router(router))
    ;

  module.exports = app;
}());
Example #18
0
  'test optional params': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/user/:id?', function(req, res){
          res.end('user ' + (req.params.id || 'account'));
        });

        app.get('/account/:id?/:op', function(req, res){
          res.end(req.params.op + 'ing user ' + (req.params.id || 'account'));
        });
      })
    );

    assert.response(app,
      { url: '/user/12' },
      { body: 'user 12' });
    
    assert.response(app,
      { url: '/account/edit' },
      { body: 'editing user account' });

    assert.response(app,
      { url: '/account/12/edit' },
      { body: 'editing user 12' });
  },
Example #19
0
  'test next(err)': function(){
    var hits = [];

    var app = connect.createServer(
      connect.router(function(app){
        app.get('/:user', function(req, res, next){
          hits.push('a');
          next();
        });
        
        app.get('/:user', function(req, res, next){
          hits.push('b');
          next(new Error('keyboard cat'));
        });
        
        app.get('/:user', function(req, res, next){
          hits.push('c');
          res.end(req.params.user);
        });
      }),
      function(err, req, res, next) {
        res.end(err.toString());
      }
    );
    
    assert.response(app,
      { url: '/tj' },
      { body: 'Error: keyboard cat' },
      function(){
        hits.should.eql(['a', 'b']);
      });
  },
Example #20
0
  ent1.$save( function(err,ent1) {
    sys.puts(ent1);
    sys.puts('http://localhost:3000/seneca/1.0/entity/test/foo/bar/id/'+ent1.id);

    var server = connect.createServer(
      connect.router(seneca.router)
    );

    server.listen(3000);
  });
Example #21
0
 that.setupRoutes= function(server) {
   server.use('/', connect.router(function routes(app){
     app.get('/auth/bitbucket_callback', function(req, res){
       req.authenticate([that.name], {scope: req.session[that.name + '_auth_scope']}, function(error, authenticated) {
         res.writeHead(303, { 'Location': req.session.bitbucket_redirect_url });
         res.end('');
       });
     });
   }));
 }
 that.setupRoutes= function(server) {
   server.use('/', connect.router(function routes(app){
     app.get('/auth/twitter_callback', function(req, res){
       req.authenticate([that.name], function(error, authenticated) {
         res.writeHead(303, { 'Location': req.session.twitter_redirect_url });
         res.end('');
       });
     });
   }));
 }
Example #23
0
            target: function() {

                server = connect.createServer(
                    connect.cookieParser(),
                    connect.session({
                        store: ng.db.getMongoStore(),
                        secret: 'blah',
                        fingerprint: '',
                        cookie: {
                            maxAge: 12 * 24 * 60 * 60 * 1000
                        }
                    }),
                    connect.bodyParser(),
                    connect.router(routes),
                    connect.static('./static')
                )

                var sio = io.listen(server, {'log level': 3})

                sio.set('authorization', function(data, accept) {

                    var cookies = connect.utils.parseCookie(data.headers.cookie)
                      , sessionId = cookies['connect.sid']

                    if (!sessionId) {
                        accept(null, false)
                        return
                    }

                    ng.db.getMongoStore().get(sessionId, function(err, session) {

                        if (err) {
                            accept(err, false)
                            return
                        }

                        if (!session) {
                            accept(null, false)
                            return
                        }

                        data.session = session
                        accept(null, true)
                    })
                })

                sio.sockets.on('connection', function(socket) {
                    ng.clientSocket.onSocketReady(socket, socket.handshake.session)
                })

                ng.log.log('Starting HTTP Server: ' + ng.conf.server_ip + ':' + ng.conf.server_port)
                server.listen(ng.conf.server_port, ng.conf.server_ip, function() {
		   console.log(arguments)
                })
            }
Example #24
0
var Server = exports = module.exports = function Server(middleware){
  var self = this;
  this.config = {};
  this.settings = {};
  this.redirects = {};
  this.isCallbacks = {};
  this.viewHelpers = {};
  this.dynamicViewHelpers = {};
  this.errorHandlers = [];
  connect.Server.call(this, []);

  // Default "home" to / 
  this.set('home', '/');

  // Set "env" to NODE_ENV, defaulting to "development"
  this.set('env', process.env.NODE_ENV || 'development');

  // Expose objects to each other
  this.use(function(req, res, next){
    req.query = {};
    res.headers = { 'X-Powered-By': 'Express' };
    req.app = res.app = self;
    req.res = res;
    res.req = req;
    req.next = next;
    // Assign req.params.get
    if (req.url.indexOf('?') > 0) {
      var query = url.parse(req.url).query;
      req.query = exports.parseQueryString(query);
    }
    next();
  });

  // Apply middleware
  if (middleware) {
    middleware.forEach(function(fn){
      self.use(fn);
    });
  }

  // Use router, expose as app.get(), etc
  var fn = router(function(app){ self.routes = app; });
  this.__defineGetter__('router', function(){
    this.__usedRouter = true;
    return fn;
  });

  // Default production configuration
  this.configure('production', function(){
    this.enable('cache views');
  });
};
Example #25
0
 that.setupRoutes= function(server) {
   server.use('/', connect.router(function routes(app){
     function handleJanrainCallback(req,res) {
       if( req.method == 'GET' ) req.getAuthDetails().janrain_came_back_with_get= true; // If we get a GET to this url it suggests a login failure.
       req.authenticate([that.name], function(error, authenticated) {
           res.writeHead(303, { 'Location': req.getAuthDetails().janrain_redirect_url });
           res.end('');
       })
     }
     app.get('/auth/janrain_callback', handleJanrainCallback);
     app.post('/auth/janrain_callback', handleJanrainCallback);
   }));
 }
Example #26
0
 setupRoutes: function(server) {
     server.use('/', connect.router(function routes(app) {
         app.get("/auth/github_callback", function(req, res) {
             req.authenticate([name], {
                 scope: req.session[name + "_auth_scope"]
             }, function(error, authenticated) {
                 res.writeHead(303, {
                     "Location": req.session.github_redirect_url
                 });
                 res.end("");
             });
         });
     }));
 },
Example #27
0
  function create(options) {

    function router(app) {
      /*
      app.get('/fs-meta', getAllFsFilesInfo);
      app.get('/fs-meta/*', getFsFileInfo);
      app.delete('/fs-meta/*', removeFile);
      app.get('/fs/*', getFsFile);
      app.post('/fs/*', createFsFile);
      app.put('/fs/*', createFsFile);
      */

      app.post('/meta/new', createIds);
      app.get('/meta/:id', getMetadata);
      app.delete('/meta/:id', removeFile);
      // deprecated
      app.delete('/files/:id', removeFile);
      app.post('/files/new', createIds);

      app.post('/files', receiveFiles);
      app.get('/files/:id/:filename?', sendFile);
    }

    options = options || {};

    // there could potentially be a race condition here at startup
    // sholud be negligable
    storage = require('./redis-wrapper').create(options.redis || {});

    filesDir = options.files;

    if (options.allowUserSpecifiedIds) {
      allowUserSpecifiedIds = true;
    }

    server = connect.createServer(
        connect.cors()
      , connect.static(options.client || __dirname + '/../public')
      , connect.bodyParser()
      , connect.query()
      //, connect.methodOverride()
      , connect.router(router)
      // Development
      , connect.errorHandler({ dumpExceptions: true, showStack: true })
      // Production
      //, connect.errorHandler()
    );

    return server;
  }
Example #28
0
module.exports = function () {
    var connect = require('connect'),
        fs = require('fs'),
        utils = require('./build/utils'),
        tests = [],
        html = fs.readFileSync(__dirname + "/btest/test.html", "utf-8"),
        pack = require('./build/pack'),
        conf = require('./build/conf'),
        doc,
        modules,
        specs,
        app = connect(
            connect.static(__dirname + "/../lib/"),
            connect.static(__dirname + "/../"),
            connect.router(function (app) {
                app.get('/', function (req, res) {
                    res.writeHead(200, {
                        "Cache-Control": "no-cache",
                        "Content-Type": "text/html"
                    });
                    res.end(doc);
                });
            })
        );

    //HACK: Openlayers causes weird stuff with the browser runner, so lets pop it off the list until we fix it
    var openlayers = conf.thirdpartyIncludes.pop();
    if (openlayers !== "OpenLayers.js") {
        console.log("HACK: we wanted to pop OpenLayers off but it looks like it wasn't the last one anymore");
    }

    modules = pack();

    utils.collect(__dirname + "/../test", tests);

    specs = tests.reduce(function (str, file) {
        str += '<script src="' +
            file.replace(/^.*test/, "test") +
            '" type="text/javascript" charset="utf-8"></script>\n';
        return str;
    }, "");

    doc = html.replace(/<!-- SPECS -->/g, specs).replace(/##FILES##/g, modules.js);

    app.listen(3000);

    process.stdout.write("Test Server running on:");
    process.stdout.write("http://127.0.0.1:3000");
};
Example #29
0
  'test regular expressions': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get(/\/commits\/(\w+)\.\.(\w+)\/?/i, function(req, res){
          res.end(
              'from ' + req.params[0]
            + ' to ' + req.params[1]);
        });
      })
    );

    assert.response(app,
      { url: '/commits/abc..def' },
      { body: 'from abc to def' });
  },
Example #30
0
  'test HEAD': function(){
    var app = connect.createServer(
      connect.router(function(app){
        app.get('/items', function(req, res){
          res.end('HEAD' == req.method
            ? ''
            : 'foo, bar, baz');
        });
      })
    );

    assert.response(app,
      { url: '/items', method: 'HEAD' },
      { body: '' });
  },