1 | client = require('./client')
|
2 | server = require('connect').createServer()
|
3 | assert = require 'assert'
|
4 |
|
5 |
|
6 | server.use require('../lib/lazorse').app ->
|
7 | for method in client.METHODS
|
8 | resource = {}
|
9 | uri = "/#{method}me"
|
10 | resource[uri] = {}
|
11 | resource[uri][method] = if method is 'HEAD'
|
12 | -> @res.end()
|
13 | else
|
14 | -> @ok "#{method}"
|
15 |
|
16 | @resource resource
|
17 |
|
18 | @resource '/indexed':
|
19 | shortName: 'discoverableResource'
|
20 | GET: -> @ok 'found it'
|
21 |
|
22 | @resource '/404':
|
23 | GET: -> @error 'NotFound', 'string error name', 'works'
|
24 |
|
25 | @resource '/500':
|
26 | GET: -> @next new Error "I'm an unknown error type"
|
27 |
|
28 | @resource '/422':
|
29 | GET: -> @error 'InvalidParameter', 'bad param'
|
30 |
|
31 |
|
32 | describe "A basic app", ->
|
33 | before (start) ->
|
34 | server.listen 0, 'localhost', ->
|
35 | client.usePort server.address().port
|
36 | start()
|
37 |
|
38 | after -> server.close()
|
39 |
|
40 | it "has an index with three resources", (done) ->
|
41 | client.GET '/', (res, resources) ->
|
42 | assert.equal res.statusCode, 200
|
43 | assert.equal resources.length, 3
|
44 | assert 'discoverableResource' in (r.shortName for r in resources)
|
45 | done()
|
46 |
|
47 |
|
48 | it "will return 404 if no resource matches", (done) ->
|
49 | client.GET "/the-nonexistant-resource", (res) ->
|
50 | assert.equal res.statusCode, 404
|
51 | done()
|
52 |
|
53 | for errcode in [404, 422, 500]
|
54 | do (errcode) ->
|
55 | it "can return #{errcode}", (done) ->
|
56 | client.GET "/#{errcode}", (res) ->
|
57 | assert.equal res.statusCode, errcode
|
58 | done()
|
59 |
|
60 | for method in client.METHODS
|
61 | do (method) ->
|
62 | it "can handle the #{method} method", (done) ->
|
63 | client[method] "/#{method}me", (res) ->
|
64 | assert.equal res.statusCode, 200
|
65 | done()
|
66 |
|