1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | "use strict";
|
14 |
|
15 | var fluid = require("infusion"),
|
16 | kettle = require("../kettle.js"),
|
17 | jqUnit = fluid.require("node-jqunit", require, "jqUnit");
|
18 |
|
19 | require("./shared/SessionTestDefs.js");
|
20 |
|
21 | fluid.defaults("kettle.tests.session.ws.testSocket.handler", {
|
22 | gradeNames: ["kettle.request.ws", "kettle.request.sessionAware", "kettle.tests.session.handler.validating"],
|
23 | listeners: {
|
24 | onReceiveMessage: "kettle.tests.session.ws.testSocket.receiveMessage"
|
25 | }
|
26 | });
|
27 |
|
28 | kettle.tests.session.ws.testSocket.receiveMessage = function (request) {
|
29 | var session = request.req.session;
|
30 | jqUnit.assertValue("Received socket message from qualified session", session);
|
31 | fluid.log("testSocket.receiveMessage got session ", session);
|
32 | jqUnit.assertEquals("Session data retrieved from HTTP request", kettle.tests.session.token, session.token);
|
33 | var response = fluid.extend(true, {
|
34 | token: session.token
|
35 | }, kettle.tests.session.response.success);
|
36 | request.sendTypedMessage("midSuccess", response);
|
37 | };
|
38 |
|
39 | kettle.tests.session.ws.proto = {
|
40 | name: "WebSockets Session tests",
|
41 | expect: 31,
|
42 | config: {
|
43 | configName: "kettle.tests.session.webSockets.config",
|
44 | configPath: "%kettle/tests/configs"
|
45 | },
|
46 | components: {
|
47 | wsRequest: {
|
48 | type: "kettle.test.request.wsCookie",
|
49 | options: {
|
50 | path: "/socket_path"
|
51 | }
|
52 | },
|
53 | badRequest: {
|
54 | type: "kettle.test.request.ws",
|
55 | options: {
|
56 | path: "/socket_path"
|
57 | }
|
58 | }
|
59 | }
|
60 | };
|
61 |
|
62 | kettle.tests.session.ws.testSocketResponse = function (data) {
|
63 | var expected = {
|
64 | type: "midSuccess",
|
65 | payload: kettle.tests.session.response.midSuccess
|
66 | };
|
67 | jqUnit.assertDeepEq("Received session-qualified socket response in \"typed message\"", expected, data);
|
68 | };
|
69 |
|
70 | kettle.tests.session.ws.midSequence = [
|
71 | {
|
72 | func: "{wsRequest}.connect"
|
73 | }, {
|
74 | event: "{wsRequest}.events.onConnect",
|
75 | listener: "jqUnit.assert",
|
76 | args: "Received WebSockets connection event"
|
77 | }, {
|
78 | func: "{wsRequest}.send",
|
79 | args: {
|
80 | index: 0,
|
81 | test: true
|
82 | }
|
83 | }, {
|
84 | event: "{wsRequest}.events.onReceiveMessage",
|
85 | listener: "kettle.tests.session.ws.testSocketResponse"
|
86 | }, {
|
87 | func: "{badRequest}.connect"
|
88 | }, {
|
89 | event: "{badRequest}.events.onError",
|
90 | listener: "kettle.test.assertErrorResponse",
|
91 | args: {
|
92 | message: "Received 403 error for non-session qualified request to WebSockets endpoint",
|
93 | errorTexts: "HTTP",
|
94 | statusCode: 403,
|
95 | string: "{arguments}.0",
|
96 | request: "{badRequest}"
|
97 | }
|
98 | }
|
99 | ];
|
100 |
|
101 | kettle.tests.session.ws.testDefs = fluid.extend(true, {}, kettle.tests.session.testDefs, kettle.tests.session.ws.proto);
|
102 |
|
103 | kettle.tests.session.ws.spliceSequence = function () {
|
104 |
|
105 | kettle.test.insertIntoArray(kettle.tests.session.ws.testDefs.sequence, 8, kettle.tests.session.ws.midSequence);
|
106 | };
|
107 |
|
108 | kettle.tests.session.ws.spliceSequence();
|
109 |
|
110 | kettle.test.bootstrapServer(kettle.tests.session.ws.testDefs);
|