// Generated by CoffeeScript 1.6.1 var factory_body_check; module('End to End'); factory_body_check = function(protocol) { var n; if (!SockJS[protocol] || !SockJS[protocol].enabled(client_opts.sockjs_opts)) { n = " " + protocol + " [unsupported by client]"; return test(n, function() { return log('Unsupported protocol (by client): "' + protocol + '"'); }); } else { return asyncTest(protocol, function() { var code, hook, url; expect(5); url = client_opts.url + '/echo'; code = "hook.test_body(!!document.body, typeof document.body);\n\nvar sock = new SockJS('" + url + "', null,\n{protocols_whitelist:['" + protocol + "']});\nsock.onopen = function() {\n var m = hook.onopen();\n sock.send(m);\n};\nsock.onmessage = function(e) {\n hook.onmessage(e.data);\n sock.close();\n};"; hook = newIframe('sockjs-in-head.html'); hook.open = function() { hook.iobj.loaded(); ok(true, 'open'); return hook.callback(code); }; hook.test_body = function(is_body, type) { return equal(is_body, false, 'body not yet loaded ' + type); }; hook.onopen = function() { ok(true, 'onopen'); return 'a'; }; return hook.onmessage = function(m) { equal(m, 'a'); ok(true, 'onmessage'); hook.iobj.cleanup(); hook.del(); return start(); }; }); } }; module('connection errors'); asyncTest("invalid url 404", function() { var r; expect(4); r = newSockJS('/invalid_url', 'jsonp-polling'); ok(r); r.onopen = function(e) { return ok(false); }; r.onmessage = function(e) { return ok(false); }; return r.onclose = function(e) { if (u.isXHRCorsCapable() < 4) { equals(e.code, 1002); equals(e.reason, 'Can\'t connect to server'); } else { equals(e.code, 2000); equals(e.reason, 'All transports failed'); } equals(e.wasClean, false); return start(); }; }); asyncTest("invalid url port", function() { var dl, r; expect(4); dl = document.location; r = newSockJS(dl.protocol + '//' + dl.hostname + ':1079', 'jsonp-polling'); ok(r); r.onopen = function(e) { return ok(false); }; return r.onclose = function(e) { if (u.isXHRCorsCapable() < 4) { equals(e.code, 1002); equals(e.reason, 'Can\'t connect to server'); } else { equals(e.code, 2000); equals(e.reason, 'All transports failed'); } equals(e.wasClean, false); return start(); }; }); asyncTest("disabled websocket test", function() { var r; expect(3); r = newSockJS('/disabled_websocket_echo', 'websocket'); r.onopen = function(e) { return ok(false); }; r.onmessage = function(e) { return ok(false); }; return r.onclose = function(e) { equals(e.code, 2000); equals(e.reason, "All transports failed"); equals(e.wasClean, false); return start(); }; }); asyncTest("close on close", function() { var r; expect(4); r = newSockJS('/close', 'jsonp-polling'); r.onopen = function(e) { return ok(true); }; r.onmessage = function(e) { return ok(false); }; return r.onclose = function(e) { equals(e.code, 3000); equals(e.reason, "Go away!"); equals(e.wasClean, true); r.onclose = function() { return ok(false); }; r.close(); return u.delay(10, function() { return start(); }); }; }); asyncTest("EventEmitter exception handling", function() { var prev_onerror, r; expect(1); r = newSockJS('/echo', 'xhr-streaming'); prev_onerror = window.onerror; window.onerror = function(e) { ok(/onopen error/.test('' + e)); window.onerror = prev_onerror; return r.close(); }; r.onopen = function(e) { throw "onopen error"; }; return r.onclose = function() { return start(); }; });