Initial import
[darksolar] / node_modules / everyauth / node_modules / request / tests / server.js
1 var fs = require('fs')
2   , http = require('http')
3   , path = require('path')
4   , https = require('https')
5   , events = require('events')
6   , stream = require('stream')
7   , assert = require('assert')
8   ;
9
10 exports.createServer =  function (port) {
11   port = port || 6767
12   var s = http.createServer(function (req, resp) {
13     s.emit(req.url, req, resp);
14   })
15   s.port = port
16   s.url = 'http://localhost:'+port
17   return s;
18 }
19
20 exports.createSSLServer = function(port, opts) {
21   port = port || 16767
22
23   var options = { 'key' : path.join(__dirname, 'ssl', 'test.key')
24                 , 'cert': path.join(__dirname, 'ssl', 'test.crt')
25                 }
26   if (opts) {
27     for (var i in opts) options[i] = opts[i]
28   }
29
30   for (var i in options) {
31     options[i] = fs.readFileSync(options[i])
32   }
33
34   var s = https.createServer(options, function (req, resp) {
35     s.emit(req.url, req, resp);
36   })
37   s.port = port
38   s.url = 'https://localhost:'+port
39   return s;
40 }
41
42 exports.createPostStream = function (text) {
43   var postStream = new stream.Stream();
44   postStream.writeable = true;
45   postStream.readable = true;
46   setTimeout(function () {postStream.emit('data', new Buffer(text)); postStream.emit('end')}, 0);
47   return postStream;
48 }
49 exports.createPostValidator = function (text) {
50   var l = function (req, resp) {
51     var r = '';
52     req.on('data', function (chunk) {r += chunk})
53     req.on('end', function () {
54     if (r !== text) console.log(r, text);
55     assert.equal(r, text)
56     resp.writeHead(200, {'content-type':'text/plain'})
57     resp.write('OK')
58     resp.end()
59     })
60   }
61   return l;
62 }
63 exports.createGetResponse = function (text, contentType) {
64   var l = function (req, resp) {
65     contentType = contentType || 'text/plain'
66     resp.writeHead(200, {'content-type':contentType})
67     resp.write(text)
68     resp.end()
69   }
70   return l;
71 }
72 exports.createChunkResponse = function (chunks, contentType) {
73   var l = function (req, resp) {
74     contentType = contentType || 'text/plain'
75     resp.writeHead(200, {'content-type':contentType})
76     chunks.forEach(function (chunk) {
77       resp.write(chunk)
78     })
79     resp.end()
80   }
81   return l;
82 }