blob: 24152d88ff69ea9a715a28c2bd0674ae2f22bd52 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script type="text/javascript">
description("Test WebSocket URL parsing.");
// Not enough arguments.
shouldThrow('new WebSocket()');
// Null URL
shouldThrow('new WebSocket(null)');
// Invalid url will fail to be parsed.
shouldThrow('new WebSocket("ws://javascript:a")');
// Can't use relative URLs - because spec says so, and because the scheme is different anyway.
shouldThrow('new WebSocket("/applet")');
// Non ws URL is not allowed.
shouldThrow('new WebSocket("javascript:a")');
// Resolve the url string using the resolve a Web address algorithm.
// Use 127.0.0.1:8880 and existing ws handler to make sure we don't receive unexpected response (so no console message appears)
shouldBe('(new WebSocket("ws://127.0.0.1:8880/a/../simple")).url', '"ws://127.0.0.1:8880/simple"');
shouldBe('(new WebSocket("ws://127.0.0.1:8880/simple?")).url', '"ws://127.0.0.1:8880/simple?"');
shouldBe('(new WebSocket("ws://127.0.0.1:8880/simple?k=v")).url', '"ws://127.0.0.1:8880/simple?k=v"');
// The WebSocket API specification says If /url/ has a <fragment>
// component, then fail the parsing WebSocket URLs, so throw a SYNTAX_ERR
// exception.
shouldThrow('new WebSocket("ws://127.0.0.1/path#")');
shouldThrow('new WebSocket("ws://127.0.0.1/path#fragment")');
shouldThrow('new WebSocket("ws:://127.0.0.1/")');
</script>
</body>
</html>