Skip to content

Commit

Permalink
Bug 1642595 - Add more wpt tests for EventSource lastEventId. r=smaug…
Browse files Browse the repository at this point in the history
…,annevk

Differential Revision: https://phabricator.services.mozilla.com/D77785
  • Loading branch information
FarooqAR committed Jun 4, 2020
1 parent 15449ab commit bb21a30
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
56 changes: 56 additions & 0 deletions testing/web-platform/tests/eventsource/format-field-id-3.window.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
const ID_PERSISTS = 1,
ID_RESETS_1 = 2,
ID_RESETS_2 = 3;

async_test(testPersist, "EventSource: lastEventId persists");
async_test(testReset(ID_RESETS_1), "EventSource: lastEventId resets");
async_test(testReset(ID_RESETS_2), "EventSource: lastEventId resets (id without colon)");

function testPersist(t) {
const source = new EventSource("resources/last-event-id2.py?type=" + ID_PERSISTS);
let counter = 0;
t.add_cleanup(() => source.close());
source.onmessage = t.step_func(e => {
counter++;
if (counter === 1) {
assert_equals(e.lastEventId, "1");
assert_equals(e.data, "1");
} else if (counter === 2) {
assert_equals(e.lastEventId, "1");
assert_equals(e.data, "2");
} else if (counter === 3) {
assert_equals(e.lastEventId, "2");
assert_equals(e.data, "3");
} else if (counter === 4) {
assert_equals(e.lastEventId, "2");
assert_equals(e.data, "4");
t.done();
} else {
assert_unreached();
}
});
}

function testReset(type) {
return function (t) {
const source = new EventSource("resources/last-event-id2.py?type=" + type);
let counter = 0;
t.add_cleanup(() => source.close());
source.onmessage = t.step_func(e => {
counter++;
if (counter === 1) {
assert_equals(e.lastEventId, "1");
assert_equals(e.data, "1");
} else if (counter === 2) {
assert_equals(e.lastEventId, "");
assert_equals(e.data, "2");
} else if (counter === 3) {
assert_equals(e.lastEventId, "");
assert_equals(e.data, "3");
t.done();
} else {
assert_unreached();
}
});
}
}
23 changes: 23 additions & 0 deletions testing/web-platform/tests/eventsource/resources/last-event-id2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ID_PERSISTS = 1
ID_RESETS_1 = 2
ID_RESETS_2 = 3

def main(request, response):
response.headers.set(b"Content-Type", b"text/event-stream")
try:
test_type = int(request.GET.first(b"type", ID_PERSISTS))
except:
test_type = ID_PERSISTS

if test_type == ID_PERSISTS:
return b"id: 1\ndata: 1\n\ndata: 2\n\nid: 2\ndata:3\n\ndata:4\n\n"

elif test_type == ID_RESETS_1:
return b"id: 1\ndata: 1\n\nid:\ndata:2\n\ndata:3\n\n"

# empty id field without colon character (:) should also reset
elif test_type == ID_RESETS_2:
return b"id: 1\ndata: 1\n\nid\ndata:2\n\ndata:3\n\n"

else:
return b"data: invalid_test\n\n"

0 comments on commit bb21a30

Please sign in to comment.