chromium/third_party/blink/web_tests/http/tests/websocket/handshake-fail-by-mismatch-protocol-header.html

<!DOCTYPE HTML>
<html>
<head>
<script src="/js-test-resources/js-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description("Test whether WebSocket handshake fails if the server sends mismatched Sec-WebSocket-Protocol header.");

window.jsTestIsAsync = true;

var url = "ws://localhost:8880/handshake-fail-by-mismatch-protocol-header";
var closeEvent;
var ws;
var protocolCase = ["", "MatchProtocol", ["MatchProtocol1", "MatchProtocol2"]];

function doTest(index)
{
    if (protocolCase[index] === "")
        ws = new WebSocket(url);
    else
        ws = new WebSocket(url, protocolCase[index]);

    ws.onopen = function()
    {
        testFailed("Connection established.");
        ws.close();
    };

    ws.onclose = function(event)
    {
        closeEvent = event;
        shouldBeFalse("closeEvent.wasClean");
        if (index === protocolCase.length - 1) {
            finishJSTest();
            return;
        }
        doTest(index + 1);        
    };

    ws.onerror = function(errorEvent)
    {
        testPassed("onerror() was called");
    };
}

doTest(0);

</script>
</body>
</html>