it("Message", function() { var handler = new mq.Chain([ function(v) { return {}; }, function(v) { assert.isObject(v.result); return "aaa" + v.result; } ]); var req = new mq.Message(); mq.invoke(handler, req); assert.equal("aaa[object Object]", req.result); var handler = new mq.Chain([ function(v) { v.params[0] = {}; }, function(v) { assert.isObject(v.params[0]); } ]); var req = new mq.Message(); req.params.push("aaasssssssssssssss"); mq.invoke(handler, req); });
it("await", function() { var n = 100; mq.invoke(mq.jsHandler(function(r) { var aw = mq.await(); function delayend() { assert.equal(n, 100); n = 200; aw.end(); } delayend.start(); return aw; }), m); assert.equal(n, 200); n = 300; mq.invoke(mq.jsHandler(function(r) { var aw = mq.await(); assert.equal(n, 300); n = 400; aw.end(); return aw; }), m); assert.equal(n, 400); });
it("path to value", function() { var r = new mq.Routing({ "^/api/a$": function(v) {}, "^/api/a(/.*)$": function(v) {} }); var m = new mq.Message(); m.value = '/api/a'; mq.invoke(r, m); assert.equal('', m.value); m.value = '/api/a/test'; mq.invoke(r, m); assert.equal('/test', m.value); });
it("simple path", function() { n = 0; m.value = 'a'; mq.invoke(r, m); assert.equal(1, n); n = 0; m.value = 'b'; mq.invoke(r, m); assert.equal(2, n); n = 0; m.value = 'c'; mq.invoke(r, m); assert.equal(4, n); });
it("regex path", function() { m.value = 'params/123.a456.html'; mq.invoke(r, m); assert.equal("param: 123,a456", n); m.value = 'params0/999.html'; mq.invoke(r, m); assert.equal("param0", n); m.value = 'params1/789.html'; mq.invoke(r, m); assert.equal("param1: 789", n); m.value = 'params2/123.b456.html'; mq.invoke(r, m); assert.equal("param2: 123,b456", n); m.value = 'params3/123.b456c789.html'; mq.invoke(r, m); assert.equal("param3: 123,b456c789", n); });
it("params", function() { function chain_params(v, p1, p2) { assert.equal(v.value, ''); assert.equal(v.params.length, 2); assert.equal(v.params[0], "123"); assert.equal(v.params[1], "b1234"); assert.equal(p1, "123"); assert.equal(p2, "b1234"); } var chain1 = new mq.Chain([chain_params, chain_params, mq.jsHandler(chain_params) ]); m.value = ''; m.params.resize(2); m.params[0] = '123'; m.params[1] = 'b1234'; mq.invoke(chain1, m); });
function invoke(url, method, params, headers, d) { if (method && !params && !headers) { headers = method; method = null; } var req = new http.Request(); req.address = req.value = url; if (headers) req.setHeader(headers); if (d) { req.body.write(d); req.body.rewind(); req.method = 'POST'; } else if (method || params) { req.setHeader("Content-Type", "application/json, charset=utf-8;"); req.body.write(new Buffer(JSON.stringify({ method: method, params: params, id: 1234 }))); } mq.invoke(handler, req); req.response.body.rewind(); function hander(req) { var s1 = req.response.body.readAll() || String(""); var s = s1.toString(); var extend = { toBuffer: function() { return s1; }, toString: function() { return s; }, toJSON: function() { return JSON.parse(s); }, toName: function() { return s.substr(21, s.length - 21 - 11); }, toNameJSON: function() { return JSON.parse(s.substr(21, s.length - 21 - 11)); }, toDefine: function() { var result; new Function("define", s)(function(val) { result = val; }); return result; } } return { get: function(receiver, name) { return extend[name] || req.response[name]; } } } return Proxy.create(hander(req)); }
assert.throws(function() { mq.invoke(function(v) { return 100; }, v); });
it("recursion invoke", function() { n = 0; mq.invoke(jv, v); assert.equal(7, n); });
assert.throws(function() { mq.invoke(r, m); });