27 lines
1.2 KiB
JavaScript
27 lines
1.2 KiB
JavaScript
|
|
const test = require("node:test");
|
||
|
|
const assert = require("node:assert/strict");
|
||
|
|
const { extractSseDataPayload } = require("./sseDataLine.cjs");
|
||
|
|
|
||
|
|
test("extractSseDataPayload accepts data: with or without the optional space", () => {
|
||
|
|
assert.equal(extractSseDataPayload('data: {"a":1}'), '{"a":1}');
|
||
|
|
assert.equal(extractSseDataPayload('data:{"a":1}'), '{"a":1}');
|
||
|
|
assert.equal(extractSseDataPayload(' data:{"a":1} \r'), '{"a":1}');
|
||
|
|
assert.equal(extractSseDataPayload("data: [DONE]"), "[DONE]");
|
||
|
|
assert.equal(extractSseDataPayload("data:[DONE]"), "[DONE]");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("extractSseDataPayload strips only one leading space after the colon", () => {
|
||
|
|
assert.equal(extractSseDataPayload("data: keep"), " keep");
|
||
|
|
assert.equal(extractSseDataPayload("data:"), "");
|
||
|
|
assert.equal(extractSseDataPayload("data: "), "");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("extractSseDataPayload ignores non-data SSE lines", () => {
|
||
|
|
assert.equal(extractSseDataPayload(""), null);
|
||
|
|
assert.equal(extractSseDataPayload(": comment"), null);
|
||
|
|
assert.equal(extractSseDataPayload("event: message"), null);
|
||
|
|
assert.equal(extractSseDataPayload("DATA: foo"), null);
|
||
|
|
assert.equal(extractSseDataPayload(null), null);
|
||
|
|
assert.equal(extractSseDataPayload(undefined), null);
|
||
|
|
});
|