« index
Coverage for /Users/kris/q-io/spec/http-apps/proxy-spec.js : 100%
80 lines |
80 run |
0 missing |
0 partial |
11 blocks |
11 blocks run |
0 blocks missing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | require("../lib/jasmine-promise"); var Q = require("q"); var Http = require("../../http"); var Apps = require("../../http-apps"); var FS = require("../../fs"); describe("http proxy", function () { it("should work", function () { var requestProxy; var responseProxy; var requestActual; var responseActual; var app = Apps.Chain() .use(Apps.Trap, function (response) { responseActual = response; return response; }) .use(Apps.Tap, function (request) { requestActual = request; }) .use(function (next) { return Apps.Branch({ "foo": Apps.Branch({ "bar": new Apps.Chain() .use(Apps.Cap) .use(function () { return Apps.Content(["Hello, World!"]) }) .end() }) }) }) .end(); var server1 = Http.Server(app); return Q.when(server1.listen(0)) .then(function (server1) { var port = server1.node.address().port; var server2 = Http.Server( Apps.Trap( Apps.Tap( Apps.ProxyTree("http://127.0.0.1:" + port + "/foo/"), function (request) { requestProxy = request; } ), function (response) { responseProxy = response; return response; } ) ); return [server1, server2.listen(0)]; }) .spread(function (server1, server2) { var port = server2.node.address().port; return Http.read({ url: "http://127.0.0.1:" + port + "/bar", charset: "utf-8" }) .then(function (content) { expect(content).toBe("Hello, World!"); expect(requestActual).toBeTruthy(); expect(responseActual).toBeTruthy(); expect(requestProxy).toBeTruthy(); expect(responseProxy).toBeTruthy(); }) .finally(server1.stop) .finally(server2.stop) }) }); }); |