UNPKG

4.17 kBtext/coffeescriptView Raw
1# Dependencies
2express= require 'express'
3turnout= require '../'
4
5Promise= require 'bluebird'
6request= Promise.promisify(require 'request')
7cheerio= require 'cheerio'
8
9# Environment
10port= 59798
11url= 'http://localhost:'+port+'/'
12
13# Spec
14describe 'Options',->
15 server= null
16
17 describe 'blacklist',->
18 beforeAll (done)->
19 options=
20 blacklist: [
21 /^secret/
22 ]
23
24 app= express()
25 app.use turnout options
26 app.use (req,res)-> res.sendFile __dirname+'/fixture.html'
27
28 server= app.listen port,done
29 afterAll ->
30 server.close()
31
32 it 'Allow /first',(done)->
33 request
34 url: url+'first'
35 headers:
36 'User-Agent': 'Googlebot'
37 .spread (response)->
38 expect(response.statusCode).toBe 200
39
40 $= cheerio response.body
41 expect($.find('h1').text()).toBe 'first'
42 expect($.find('a').text()).toBe 'second'
43
44 done()
45
46 it 'Allow /second',(done)->
47 request
48 url: url+'second'
49 headers:
50 'User-Agent': 'Googlebot'
51 .spread (response)->
52 expect(response.statusCode).toBe 200
53
54 $= cheerio response.body
55 expect($.find('h1').text()).toBe 'second'
56 expect($.find('a').text()).toBe 'first'
57
58 done()
59
60 it 'Disallow /secret',(done)->
61 request
62 url: url+'secret'
63 headers:
64 'User-Agent': 'Googlebot'
65 .spread (response)->
66 expect(response.statusCode).toBe 403
67
68 done()
69
70 describe 'whitelist',->
71 beforeAll (done)->
72 options=
73 whitelist: [
74 /^first/
75 /^second/
76 ]
77
78 app= express()
79 app.use turnout options
80 app.use (req,res)-> res.sendFile __dirname+'/fixture.html'
81
82 server= app.listen port,done
83 afterAll ->
84 server.close()
85
86 it 'Allow /first',(done)->
87 request
88 url: url+'first'
89 headers:
90 'User-Agent': 'Googlebot'
91 .spread (response)->
92 expect(response.statusCode).toBe 200
93 expect(response.headers['x-powered-by']).toBe 'Express-turnout'
94
95 $= cheerio response.body
96 expect($.find('h1').text()).toBe 'first'
97 expect($.find('a').text()).toBe 'second'
98
99 done()
100
101 it 'Allow /second',(done)->
102 request
103 url: url+'second'
104 headers:
105 'User-Agent': 'Googlebot'
106 .spread (response)->
107 expect(response.statusCode).toBe 200
108 expect(response.headers['x-powered-by']).toBe 'Express-turnout'
109
110 $= cheerio response.body
111 expect($.find('h1').text()).toBe 'second'
112 expect($.find('a').text()).toBe 'first'
113
114 done()
115
116 it 'Disallow /secret',(done)->
117 request
118 url: url+'secret'
119 headers:
120 'User-Agent': 'Googlebot'
121 .spread (response)->
122 expect(response.statusCode).toBe 403
123 expect(response.headers['x-powered-by']).toBe 'Express-turnout'
124
125 done()
126
127 describe 'timeout',->
128 beforeAll (done)->
129 options=
130 timeout: 1
131
132 app= express()
133 app.use turnout options
134 app.use (req,res)-> res.sendFile __dirname+'/fixture.html'
135
136 server= app.listen port,done
137 afterAll ->
138 server.close()
139
140 it 'Timeup /first',(done)->
141 request
142 url: url+'first'
143 headers:
144 'User-Agent': 'Googlebot'
145 .spread (response)->
146 expect(response.statusCode).toBe 403
147 expect(response.headers['x-powered-by']).toBe 'Express-turnout'
148 expect(response.body).toBe 'Timeout'
149
150 done()
151
152 describe 'ua',->
153 beforeAll (done)->
154 options=
155 ua: ['先行者']
156
157 app= express()
158 app.use turnout options
159 app.use (req,res)-> res.sendFile __dirname+'/fixture.html'
160
161 server= app.listen port,done
162 afterAll ->
163 server.close()
164
165 it 'Change target defaults to "先行者"',(done)->
166 request
167 url: url+'first'
168 headers:
169 'User-Agent': 'Googlebot'
170 .spread (response)->
171 expect(response.statusCode).toBe 200
172 expect(response.headers['x-powered-by']).toBe 'Express'
173
174 done()