summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js')
-rw-r--r--testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js b/testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js
new file mode 100644
index 0000000000..ec4e5e6709
--- /dev/null
+++ b/testing/web-platform/tests/tools/third_party/websockets/experiments/authentication/script.js
@@ -0,0 +1,51 @@
+var token = window.parent.token;
+
+function getExpectedEvents() {
+ return [
+ {
+ type: "open",
+ },
+ {
+ type: "message",
+ data: `Hello ${window.parent.user}!`,
+ },
+ {
+ type: "close",
+ code: 1000,
+ reason: "",
+ wasClean: true,
+ },
+ ];
+}
+
+function isEqual(expected, actual) {
+ // good enough for our purposes here!
+ return JSON.stringify(expected) === JSON.stringify(actual);
+}
+
+function testStep(expected, actual) {
+ if (isEqual(expected, actual)) {
+ document.body.className = "ok";
+ } else if (isEqual(expected.slice(0, actual.length), actual)) {
+ document.body.className = "test";
+ } else {
+ document.body.className = "ko";
+ }
+}
+
+function runTest(websocket) {
+ const expected = getExpectedEvents();
+ var actual = [];
+ websocket.addEventListener("open", ({ type }) => {
+ actual.push({ type });
+ testStep(expected, actual);
+ });
+ websocket.addEventListener("message", ({ type, data }) => {
+ actual.push({ type, data });
+ testStep(expected, actual);
+ });
+ websocket.addEventListener("close", ({ type, code, reason, wasClean }) => {
+ actual.push({ type, code, reason, wasClean });
+ testStep(expected, actual);
+ });
+}