Skip to content

Commit

Permalink
test: add initial pull delay and prototype pollution prevention tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sonsurim authored Aug 3, 2024
1 parent 5d6c76a commit d172da8
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions test/parallel/test-whatwg-readablestream.js
Original file line number Diff line number Diff line change
Expand Up @@ -1701,3 +1701,50 @@ class Source {
assert.deepStrictEqual(value, new Uint8Array([1, 1, 1]));
}));
}

// Initial Pull Delay
{
const stream = new ReadableStream({
start(controller) {
controller.enqueue('data');
controller.close();
}
});

const iterator = stream.values();

let microtaskCompleted = false;
Promise.resolve().then(() => { microtaskCompleted = true; });

iterator.next().then(common.mustCall(({ done, value }) => {
assert.strictEqual(done, false);
assert.strictEqual(value, 'data');
assert.strictEqual(microtaskCompleted, true);
}));
}

// Avoiding Prototype Pollution
{
const stream = new ReadableStream({
start(controller) {
controller.enqueue('data');
controller.close();
}
});

const iterator = stream.values();

// Modify Promise.prototype.then to simulate prototype pollution
const originalThen = Promise.prototype.then;
Promise.prototype.then = function(onFulfilled, onRejected) {
return originalThen.call(this, onFulfilled, onRejected);
};

iterator.next().then(common.mustCall(({ done, value }) => {
assert.strictEqual(done, false);
assert.strictEqual(value, 'data');

// Restore original then method
Promise.prototype.then = originalThen;
}));
}

0 comments on commit d172da8

Please sign in to comment.