fling
Version:
JSON Fling is a simple JSON-RPC framework for NodeJS with built-in permissions and support for different transports.
82 lines (75 loc) • 4.32 kB
JavaScript
;
var express = require( 'express' );
var http = require( 'http' );
var request = require( 'request' );
var httpServer = null;
var server = express();
module.exports = {
init: function( done ) {
httpServer = http.createServer( server ).listen( 8080, done );
},
dinit: function( done ) {
httpServer.close( done );
},
constructor: require( '../lib/transport.receiver.express.js' ),
config: {
express: server,
url: '/rpc',
parser: {
limit: '1kb'
}
},
requestEmitter: function( payload, done ) {
request( {
url: 'http://localhost:8080/rpc',
json: payload,
method: 'POST'
}, function( err, response, body ) {
if ( err ) {
done( null );
} else {
done( body );
}
} );
},
tests: [
{
name: 'payload exactly 1kb in size should succeed',
request: {
jsonrpc: '2.0',
id: 400,
method: 'echoModule.action2',
params: {
string: 'A 1kb string exactly: string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string'
}
},
response: {
jsonrpc: '2.0',
id: 400,
result: {
string: 'A 1kb string exactly: string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string'
}
}
},
{
name: 'payload 1025 bytes in size should fail',
request: {
jsonrpc: '2.0',
id: 500,
method: 'echoModule.action2',
params: {
string: 'A 1kb + 1 byte string exactly: string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string string strin'
}
},
response: {
jsonrpc: '2.0',
id: 0,
error: {
code: 400,
message: 'failed to parse payload: request entity too large',
data: { status: 413 }
}
}
}
]
};