mirror of
https://github.com/openpgpjs/openpgpjs.git
synced 2025-06-24 23:22:30 +00:00
Fix streaming tests for browser, drop NodeReadableStream tests in Node.js
Unclear why the Node tests fails, but we're planning to drop support
This commit is contained in:
parent
b094274d98
commit
1aefed9602
@ -3329,10 +3329,8 @@ XfA3pqV4mTzF
|
||||
it('Streaming encrypt and decrypt small message roundtrip', async function() {
|
||||
const plaintext = [];
|
||||
let i = 0;
|
||||
const useNativeStream = (() => { try { new global.ReadableStream(); return true; } catch (e) { return false; } })(); // eslint-disable-line no-new
|
||||
await loadStreamsPolyfill();
|
||||
const GenericReadableStream = useNativeStream ? global.ReadableStream : ReadableStream;
|
||||
const data = new GenericReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
pull(controller) {
|
||||
if (i++ < 4) {
|
||||
const randomBytes = random.getRandomBytes(10);
|
||||
@ -3347,7 +3345,7 @@ XfA3pqV4mTzF
|
||||
message: await openpgp.createMessage({ binary: data }),
|
||||
passwords: ['test']
|
||||
}));
|
||||
expect(stream.isStream(encrypted)).to.equal(useNativeStream ? 'web' : 'web-like');
|
||||
expect(stream.isStream(encrypted)).to.equal('web');
|
||||
|
||||
const message = await openpgp.readMessage({ armoredMessage: encrypted });
|
||||
const decrypted = await openpgp.decrypt({
|
||||
@ -3355,7 +3353,7 @@ XfA3pqV4mTzF
|
||||
message,
|
||||
format: 'binary'
|
||||
});
|
||||
expect(stream.isStream(decrypted.data)).to.equal(useNativeStream ? 'web' : 'web-like');
|
||||
expect(stream.isStream(decrypted.data)).to.equal('web');
|
||||
expect(await stream.readToEnd(decrypted.data)).to.deep.equal(util.concatUint8Array(plaintext));
|
||||
});
|
||||
});
|
||||
@ -3658,17 +3656,13 @@ XfA3pqV4mTzF
|
||||
|
||||
it('should streaming sign and verify binary data without one-pass signature', async function () {
|
||||
const data = new Uint8Array([3, 14, 15, 92, 65, 35, 59]);
|
||||
const dataStream = global.ReadableStream ? new global.ReadableStream({
|
||||
const dataStream = new globalThis.ReadableStream({
|
||||
start(controller) {
|
||||
controller.enqueue(data);
|
||||
controller.close();
|
||||
}
|
||||
}) : new (require('stream').Readable)({
|
||||
read() {
|
||||
this.push(data);
|
||||
this.push(null);
|
||||
}
|
||||
});
|
||||
|
||||
const signOpt = {
|
||||
message: await openpgp.createMessage({ binary: dataStream }),
|
||||
signingKeys: privateKey,
|
||||
@ -3679,7 +3673,7 @@ XfA3pqV4mTzF
|
||||
format: 'binary'
|
||||
};
|
||||
return openpgp.sign(signOpt).then(async function (signed) {
|
||||
expect(stream.isStream(signed)).to.equal(global.ReadableStream ? 'web' : 'node');
|
||||
expect(stream.isStream(signed)).to.equal('web');
|
||||
const message = await openpgp.readMessage({ binaryMessage: signed });
|
||||
message.packets.push(...await stream.readToEnd(message.packets.stream, _ => _));
|
||||
const packets = new openpgp.PacketList();
|
||||
@ -3687,12 +3681,12 @@ XfA3pqV4mTzF
|
||||
packets.push(message.packets.findPacket(openpgp.enums.packet.literalData));
|
||||
verifyOpt.message = await openpgp.readMessage({
|
||||
binaryMessage: stream[
|
||||
global.ReadableStream ? 'toStream' : 'webToNode'
|
||||
globalThis.ReadableStream ? 'toStream' : 'webToNode'
|
||||
](packets.write())
|
||||
});
|
||||
return openpgp.verify(verifyOpt);
|
||||
}).then(async function (verified) {
|
||||
expect(stream.isStream(verified.data)).to.equal(global.ReadableStream ? 'web' : 'node');
|
||||
expect(stream.isStream(verified.data)).to.equal('web');
|
||||
expect([].slice.call(await stream.readToEnd(verified.data))).to.deep.equal([].slice.call(data));
|
||||
expect(await verified.signatures[0].verified).to.be.true;
|
||||
expect(await privateKey.getSigningKey(verified.signatures[0].keyID))
|
||||
|
@ -12,9 +12,6 @@ import util from '../../src/util.js';
|
||||
|
||||
import * as input from './testInputs.js';
|
||||
|
||||
const useNativeStream = (() => { try { new global.ReadableStream(); return true; } catch (e) { return false; } })(); // eslint-disable-line no-new
|
||||
const NodeReadableStream = useNativeStream ? undefined : require('stream').Readable;
|
||||
|
||||
const detectNode = () => typeof globalThis.process === 'object' && typeof globalThis.process.versions === 'object';
|
||||
|
||||
const pub_key = [
|
||||
@ -180,18 +177,12 @@ let dataArrived;
|
||||
function tests() {
|
||||
it('Encrypt small message', async function() {
|
||||
dataArrived(); // Do not wait until data arrived.
|
||||
const data = global.ReadableStream ? new global.ReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
start(controller) {
|
||||
controller.enqueue(util.stringToUint8Array('hello '));
|
||||
controller.enqueue(util.stringToUint8Array('world'));
|
||||
controller.close();
|
||||
}
|
||||
}) : new NodeReadableStream({
|
||||
read() {
|
||||
this.push(util.stringToUint8Array('hello '));
|
||||
this.push(util.stringToUint8Array('world'));
|
||||
this.push(null);
|
||||
}
|
||||
});
|
||||
const encrypted = await openpgp.encrypt({
|
||||
message: await openpgp.createMessage({ binary: data }),
|
||||
@ -657,18 +648,12 @@ function tests() {
|
||||
|
||||
it('Detached sign small message', async function() {
|
||||
dataArrived(); // Do not wait until data arrived.
|
||||
const data = global.ReadableStream ? new global.ReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
start(controller) {
|
||||
controller.enqueue(util.stringToUint8Array('hello '));
|
||||
controller.enqueue(util.stringToUint8Array('world'));
|
||||
controller.close();
|
||||
}
|
||||
}) : new NodeReadableStream({
|
||||
read() {
|
||||
this.push(util.stringToUint8Array('hello '));
|
||||
this.push(util.stringToUint8Array('world'));
|
||||
this.push(null);
|
||||
}
|
||||
});
|
||||
const signed = await openpgp.sign({
|
||||
message: await openpgp.createMessage({ binary: data }),
|
||||
@ -692,18 +677,12 @@ function tests() {
|
||||
|
||||
it('Detached sign small message using brainpool curve keys', async function() {
|
||||
dataArrived(); // Do not wait until data arrived.
|
||||
const data = global.ReadableStream ? new global.ReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
start(controller) {
|
||||
controller.enqueue(util.stringToUint8Array('hello '));
|
||||
controller.enqueue(util.stringToUint8Array('world'));
|
||||
controller.close();
|
||||
}
|
||||
}) : new NodeReadableStream({
|
||||
read() {
|
||||
this.push(util.stringToUint8Array('hello '));
|
||||
this.push(util.stringToUint8Array('world'));
|
||||
this.push(null);
|
||||
}
|
||||
});
|
||||
const pub = await openpgp.readKey({ armoredKey: brainpoolPub });
|
||||
const priv = await openpgp.decryptKey({
|
||||
@ -734,18 +713,12 @@ function tests() {
|
||||
|
||||
it('Detached sign small message using curve25519 keys (legacy format)', async function() {
|
||||
dataArrived(); // Do not wait until data arrived.
|
||||
const data = global.ReadableStream ? new global.ReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
async start(controller) {
|
||||
controller.enqueue(util.stringToUint8Array('hello '));
|
||||
controller.enqueue(util.stringToUint8Array('world'));
|
||||
controller.close();
|
||||
}
|
||||
}) : new NodeReadableStream({
|
||||
read() {
|
||||
this.push(util.stringToUint8Array('hello '));
|
||||
this.push(util.stringToUint8Array('world'));
|
||||
this.push(null);
|
||||
}
|
||||
});
|
||||
const pub = await openpgp.readKey({ armoredKey: xPub });
|
||||
const priv = await openpgp.decryptKey({
|
||||
@ -843,7 +816,7 @@ function tests() {
|
||||
|
||||
const plaintext = [];
|
||||
let i = 0;
|
||||
const data = global.ReadableStream ? new global.ReadableStream({
|
||||
const data = new globalThis.ReadableStream({
|
||||
async pull(controller) {
|
||||
await new Promise(resolve => { setTimeout(resolve, 10); });
|
||||
if (i++ < 10) {
|
||||
@ -854,20 +827,6 @@ function tests() {
|
||||
controller.close();
|
||||
}
|
||||
}
|
||||
}) : new NodeReadableStream({
|
||||
encoding: 'utf8',
|
||||
async read() {
|
||||
while (true) {
|
||||
await new Promise(resolve => { setTimeout(resolve, 10); });
|
||||
if (i++ < 10) {
|
||||
const randomData = input.createSomeMessage();
|
||||
plaintext.push(randomData);
|
||||
if (!this.push(randomData)) break;
|
||||
} else {
|
||||
return this.push(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
const encrypted = await openpgp.encrypt({
|
||||
message: await openpgp.createMessage({ text: data }),
|
||||
@ -970,7 +929,7 @@ export default () => describe('Streaming', function() {
|
||||
plaintext = [];
|
||||
i = 0;
|
||||
canceled = false;
|
||||
data = global.ReadableStream ? new global.ReadableStream({
|
||||
data = new globalThis.ReadableStream({
|
||||
async pull(controller) {
|
||||
await new Promise(setTimeout);
|
||||
if (test === currentTest && i < (expectedType === 'web' ? 100 : 500)) {
|
||||
@ -988,27 +947,8 @@ export default () => describe('Streaming', function() {
|
||||
}
|
||||
}, new ByteLengthQueuingStrategy({
|
||||
highWaterMark: 1024
|
||||
})) : new NodeReadableStream({
|
||||
highWaterMark: 1024,
|
||||
async read() {
|
||||
while (true) {
|
||||
await new Promise(setTimeout);
|
||||
if (test === currentTest && i < (expectedType === 'web' ? 100 : 500)) {
|
||||
i++;
|
||||
if (i === 4) await dataArrivedPromise;
|
||||
const randomBytes = random.getRandomBytes(1024);
|
||||
plaintext.push(randomBytes);
|
||||
if (!this.push(randomBytes)) break;
|
||||
} else {
|
||||
return this.push(null);
|
||||
}
|
||||
}
|
||||
},
|
||||
destroy() {
|
||||
canceled = true;
|
||||
}
|
||||
});
|
||||
expectedType = global.ReadableStream ? 'web' : 'node';
|
||||
}));
|
||||
expectedType = 'web';
|
||||
});
|
||||
|
||||
tests();
|
||||
|
Loading…
x
Reference in New Issue
Block a user