@leansdk/leanrc
Version:
LeanRC is a MVC framework for creating graceful applications
78 lines (76 loc) • 2.75 kB
text/coffeescript
{ IncomingMessage, ServerResponse } = require 'http'
{ expect, assert } = require 'chai'
sinon = require 'sinon'
_ = require 'lodash'
LeanRC = require.main.require 'lib'
{ co } = LeanRC::Utils
describe 'BodyParseMixin', ->
describe '.new', ->
it 'should create new resource', ->
expect ->
class Test extends LeanRC
__dirname
class TestResource extends LeanRC::Resource
LeanRC::BodyParseMixin
Test
entityName: String,
default: 'TestEntity'
resource = TestResource.new()
.to.not.throw Error
describe '#parseBody', ->
it 'should parse request body', ->
co ->
KEY = 'TEST_BODY_PARSE_MIXIN_001'
class Test extends LeanRC
"#{__dirname}/config/root"
facade = Test::Facade.getInstance KEY
configs = Test::Configuration.new Test::CONFIGURATION, Test::ROOT
facade.registerProxy configs
class TestResource extends Test::Resource
Test::BodyParseMixin
Test
entityName: String,
default: 'TestEntity'
class TestRouter extends Test::Router
Test
facade.registerProxy TestRouter.new 'TEST_SWITCH_ROUTER'
class TestSwitch extends Test::Switch
Test
routerName: String,
configurable: yes
default: 'TEST_SWITCH_ROUTER'
body = '{"test":"test"}'
class MyRequest extends IncomingMessage
constructor: (socket) ->
super socket
= 'POST'
= 'http://localhost:8888/space/SPACE123/test_entity'
=
'x-forwarded-for': '192.168.0.1'
'content-type': 'application/json'
'content-length': "#{body.length}"
body
null
class MyResponse extends ServerResponse
req = new MyRequest
res = new MyResponse req
facade.registerMediator TestSwitch.new 'TEST_SWITCH_MEDIATOR'
switchMediator = facade.retrieveMediator 'TEST_SWITCH_MEDIATOR'
resource = TestResource.new()
resource.context = Test::Context.new req, res, switchMediator
yield resource.parseBody()
assert.deepEqual resource.context.request.body, test: 'test'
facade.remove()
yield return