Merge pull request #6344 from Ms2ger/ws-tests

Fix WebSocket test issues.
This commit is contained in:
jgraham 2015-06-11 20:41:41 +01:00
commit c8f322b267
11 changed files with 35 additions and 26 deletions

View file

@ -1,18 +1,12 @@
//This file requires server-side substitutions and must be included as constants.js?pipe=config
var DOMAIN_FOR_WS_TESTS = "{{host}}";
var DOMAIN_FOR_WSS_TESTS = "{{host}}";
//This file requires server-side substitutions and must be included as constants.js?pipe=sub
var PORT = "{{ports[ws][0]}}";
//FIXME: Add support for wss
var PORT_SSL = "{{ports[ws][0]}}";
// logic for using wss URLs instead of ws
var SCHEME_AND_DOMAIN;
var SCHEME_DOMAIN_PORT;
if (location.search == '?wss') {
SCHEME_AND_DOMAIN = 'wss://'+DOMAIN_FOR_WSS_TESTS;
SCHEME_DOMAIN_PORT = SCHEME_AND_DOMAIN + ":" + PORT_SSL;
SCHEME_DOMAIN_PORT = 'wss://{{host}}:' + PORT_SSL;
} else {
SCHEME_AND_DOMAIN = 'ws://'+DOMAIN_FOR_WS_TESTS;
SCHEME_DOMAIN_PORT = SCHEME_AND_DOMAIN + ":" + PORT;
SCHEME_DOMAIN_PORT = 'ws://{{host}}:' + PORT;
}

View file

@ -11,8 +11,8 @@ test(function() {assert_throws("SyntaxError", function(){new WebSocket("wss://fo
test(function() {assert_throws("SyntaxError", function(){new WebSocket("http://"+location.host+"/")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("mailto:example@example.org")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("about:blank")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/#")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/#test")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket(SCHEME_DOMAIN_PORT+"/#")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket(SCHEME_DOMAIN_PORT+"/#test")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("?test")})});
test(function() {assert_throws("SyntaxError", function(){new WebSocket("#test")})});
</script>

View file

@ -6,18 +6,28 @@
<div id=log></div>
<script>
// empty string
test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/", "")})});
test(function() {
assert_throws("SyntaxError", function() {
new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message', "")
})
});
// chars below U+0020 except U+0000; U+0000 is tested in a separate test
for (var i = 1; i < 0x20; ++i) {
test(function() {
assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/", "a"+String.fromCharCode(i)+"b")}, 'char code '+i);
})
test(function() {
assert_throws("SyntaxError", function() {
new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
"a"+String.fromCharCode(i)+"b")
}, 'char code '+i);
})
}
// some chars above U+007E
for (var i = 0x7F; i < 0x100; ++i) {
test(function() {
assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/", "a"+String.fromCharCode(i)+"b")}, 'char code '+i);
})
test(function() {
assert_throws("SyntaxError", function() {
new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
"a"+String.fromCharCode(i)+"b")
}, 'char code '+i);
})
}
</script>

View file

@ -6,6 +6,6 @@
<div id=log></div>
<script>
test(function() {
assert_true(new WebSocket("ws://"+location.host+"/") instanceof WebSocket);
assert_true(new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message') instanceof WebSocket);
});
</script>

View file

@ -5,5 +5,10 @@
<script src=../constants.js?pipe=sub></script>
<div id=log></div>
<script>
test(function() {assert_throws("SyntaxError", function(){new WebSocket("ws://"+location.host+"/", 'a'+String.fromCharCode(0)+'b')})});
test(function() {
assert_throws("SyntaxError", function() {
new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message',
'a' + String.fromCharCode(0) + 'b')
})
});
</script>

View file

@ -8,7 +8,7 @@
var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
for (var i = 0; i < events.length; ++i) {
test(function(){
var ws = new WebSocket(SCHEME_AND_DOMAIN+'/');
var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
var foo = function() {}
ws[events[i]] = foo;
assert_equals(ws[events[i]], foo, events[i]);

View file

@ -8,7 +8,7 @@
var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
for (var i = 0; i < events.length; ++i) {
test(function(t) {
var ws = new WebSocket(SCHEME_AND_DOMAIN+'/');
var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
ws[events[i]] = 1;
assert_equals(ws[events[i]], null);
}, events[i]);

View file

@ -8,7 +8,7 @@
var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
for (var i = 0; i < events.length; ++i) {
test(function(t) {
var ws = new WebSocket(SCHEME_AND_DOMAIN+'/');
var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
ws[events[i]] = ";";
assert_equals(ws[events[i]], null);
}, events[i]);

View file

@ -8,7 +8,7 @@
var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
for (var i = 0; i < events.length; ++i) {
test(function(t) {
var ws = new WebSocket(SCHEME_AND_DOMAIN+'/');
var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
var obj = {handleEvent:this.unreached_func("handleEvent was called")};
ws[events[i]] = obj;
assert_equals(ws[events[i]], obj);

View file

@ -8,7 +8,7 @@
var events = ['onclose', 'onopen', 'onerror', 'onmessage'];
for (var i = 0; i < events.length; ++i) {
test(function() {
var ws = new WebSocket(SCHEME_AND_DOMAIN+'/');
var ws = new WebSocket(SCHEME_DOMAIN_PORT+'/empty-message');
var foo = function() {}
ws[events[i]] = foo;
assert_equals(ws[events[i]], foo, events[i]);

View file

@ -7,6 +7,6 @@
<script>
test(function(t) {
// The protocol attribute must initially return the empty string
assert_equals((new WebSocket(SCHEME_AND_DOMAIN+'/')).protocol, '');
assert_equals((new WebSocket(SCHEME_DOMAIN_PORT + '/empty-message')).protocol, '');
});
</script>