| OLD | NEW |
| (Empty) | |
| 1 var middleware = require('../lib/middleware.js'); |
| 2 |
| 3 describe('middleware', function() { |
| 4 var m, next, playImpl; |
| 5 beforeEach(function() { |
| 6 playImpl = { burn: false, |
| 7 record: jasmine.createSpy('record'), |
| 8 playback: jasmine.createSpy('playback') |
| 9 }; |
| 10 m = middleware.endpoint({ |
| 11 playbackImpl: playImpl |
| 12 }); |
| 13 next = jasmine.createSpy('next'); |
| 14 }); |
| 15 |
| 16 |
| 17 it('should call next() for requests it does not handle', function() { |
| 18 m({url: '/notrecord'}, undefined, next); |
| 19 expect(next).toHaveBeenCalled(); |
| 20 }); |
| 21 |
| 22 it('should call playback.record for POST requests', function() { |
| 23 var req = jasmine.createSpy('req'); |
| 24 var res = { |
| 25 writeHead: jasmine.createSpy('writeHead'), |
| 26 end: jasmine.createSpy('end') |
| 27 }; |
| 28 |
| 29 req.url = '/record'; |
| 30 req.method = 'POST'; |
| 31 var dataCb, endCb; |
| 32 req.on = function(type, cb) { |
| 33 if (type == 'data') dataCb = cb; |
| 34 else if (type == 'end') endCb = cb; |
| 35 else throw "Unknown type " + type; |
| 36 }; |
| 37 |
| 38 m(req, res, next); |
| 39 |
| 40 dataCb('{"key": "K",'); |
| 41 dataCb('"data": "V"}'); |
| 42 endCb(); |
| 43 |
| 44 expect(next).not.toHaveBeenCalled(); |
| 45 expect(playImpl.record).toHaveBeenCalledWith('K', 'V'); |
| 46 expect(res.writeHead).toHaveBeenCalledWith(200); |
| 47 expect(res.end).toHaveBeenCalled(); |
| 48 }); |
| 49 |
| 50 |
| 51 it('should call playback.playback for GET requests', function() { |
| 52 var req = { |
| 53 url: '/record', |
| 54 method: 'GET' |
| 55 }; |
| 56 |
| 57 var res = { |
| 58 writeHead: jasmine.createSpy('writeHead'), |
| 59 end: jasmine.createSpy('end') |
| 60 }; |
| 61 |
| 62 playImpl.playback.andReturn('data from a dart file'); |
| 63 |
| 64 m(req, res, next); |
| 65 |
| 66 expect(next).not.toHaveBeenCalled(); |
| 67 expect(playImpl.playback).toHaveBeenCalled(); |
| 68 expect(res.writeHead).toHaveBeenCalledWith(200, { |
| 69 'Content-Type' : 'application/dart', |
| 70 'Content-Length' : 21 }); |
| 71 expect(res.end).toHaveBeenCalledWith('data from a dart file'); |
| 72 }); |
| 73 }); |
| OLD | NEW |