This repository has been archived by the owner on Dec 16, 2023. It is now read-only.
/
helpers.coffee
84 lines (68 loc) · 1.92 KB
/
helpers.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# NOTES:
# All requests using a hostname are routed to 127.0.0.1
# Port 3001 has a live server, see below for paths and responses
# Port 3002 has no server, connections will be refused
# Port 3443 has a live https server
DNS = require("dns")
Express = require("express")
Replay = require("../lib/replay")
File = require("fs")
Async = require("async")
# Directory to load fixtures from.
Replay.fixtures = "#{__dirname}/fixtures"
# Redirect HTTP requests to pass-through domain
original_lookup = DNS.lookup
DNS.lookup = (domain, callback)->
if domain == "pass-through"
callback null, "127.0.0.1", 4
else
original_lookup domain, callback
# Serve pages from localhost.
server = Express.createServer()
server.use Express.bodyParser()
# Success page.
server.get "/", (req, res)->
res.send "Success!"
# Not found
server.get "/404", (req, res)->
res.send 404, "Not found"
# Internal error
server.get "/500", (req, res)->
res.send 500, "Boom!"
# SSL Server
ssl_server = Express.createServer(
key: File.readFileSync("#{__dirname}/ssl/privatekey.pem")
cert: File.readFileSync("#{__dirname}/ssl/certificate.pem")
)
ssl_server.use Express.bodyParser()
# Success page.
ssl_server.get "/", (req, res)->
res.send "Success!"
# Not found
ssl_server.get "/404", (req, res)->
res.send 404, "Not found"
# Internal error
ssl_server.get "/500", (req, res)->
res.send 500, "Boom!"
# Setup environment for running tests.
setup = (callback)->
Async.parallel [
(done)->
server.listen 3001, done
(done)->
ssl_server.listen 3443, done
], callback
return
if server._connected
callback null
return
server.on "listening", callback
unless server._connecting
server._connecting = true
server.listen 3001, ->
server._connected = true
exports.assert = require("assert")
exports.setup = setup
exports.HTTP = require("http")
exports.HTTPS = require("https")
exports.Replay = Replay