}
if (typeof value !== 'string') {
- throw new TypeError(`Value "${value}" is not a string.`);
+ throw new TypeError(`Value "${JSON.stringify(value)}" is not a string.`);
}
if (version === 'v1') {
*/
export async function decryptRaw(options) {
const { prf, value } = options;
- const [magic, version, valueBase64] = value.split(':');
if (!ArrayBuffer.isView(prf) && !(prf instanceof ArrayBuffer)) {
throw new TypeError(`prf "${prf}" is not an ArrayBuffer or Uint8Array.`);
}
+ if (typeof value !== 'string') {
+ throw new TypeError(`Value "${JSON.stringify(value)}" is not a string.`);
+ }
+
+ const [magic, version, valueBase64] = value.split(':');
+
if (magic !== 'envpass') {
throw new TypeError(`Value "${value}" is not an envpass encrypted value.`);
}
suite('encryptRaw', { concurrency: true }, () => {
test('throws on invalid version', { concurrency: true }, () => {
// @ts-expect-error
- rejects(encryptRaw({ version: 'INVALID', prf, value }));
+ rejects(encryptRaw({ version: 'INVALID', prf, value }), { name: 'TypeError', message: 'envpass version "INVALID" is not supported.' });
});
test('throws on invalid prf', { concurrency: true }, () => {
// @ts-expect-error
- rejects(encryptRaw({ version, prf: 'INVALID', value }));
+ rejects(encryptRaw({ version, prf: 'INVALID', value }, { name: 'TypeError', message: 'prf "INVALID" is not an ArrayBuffer or Uint8Array.' }));
});
test('throws on invalid value', { concurrency: true }, () => {
// @ts-expect-error
- rejects(encryptRaw({ version, prf, value: {} }));
+ rejects(encryptRaw({ version, prf, value: {} }), { name: 'TypeError', message: 'Value "{}" is not a string.' });
});
});
const value = 'envpass:v1:AAA';
test('throws on invalid prf', { concurrency: true }, () => {
// @ts-expect-error
- rejects(decryptRaw({ prf: 'INVALID', value }));
+ rejects(decryptRaw({ prf: 'INVALID', value }), { name: 'TypeError', message: 'prf "INVALID" is not an ArrayBuffer or Uint8Array.' });
});
test('throws on invalid value', { concurrency: true }, () => {
// @ts-expect-error
- rejects(decryptRaw({ prf, value: {} }));
+ rejects(decryptRaw({ prf, value: {} }), { name: 'TypeError', message: 'Value "{}" is not a string.' });
});
test('throws on invalid magic in value', { concurrency: true }, () => {
// @ts-expect-error
- rejects(decryptRaw({ prf, value: 'INVALID:v1:AAA' }));
+ rejects(decryptRaw({ prf, value: 'INVALID:v1:AAA' }), { name: 'TypeError', message: 'Value "INVALID:v1:AAA" is not an envpass encrypted value.' });
});
test('throws on invalid version in value', { concurrency: true }, () => {
// @ts-expect-error
- rejects(decryptRaw({ prf, value: 'envpass:INVALID:AAA' }));
+ rejects(decryptRaw({ prf, value: 'envpass:INVALID:AAA' }), { name: 'TypeError', message: 'envpass version "INVALID" is not supported.' });
});
test('throws on invalid (non-base64) string in value', { concurrency: true }, () => {
- rejects(decryptRaw({ prf, value: 'envpass:v1:🏴☠️' }));
+ rejects(decryptRaw({ prf, value: 'envpass:v1:🏴☠️' }), { name: 'SyntaxError', message: 'Found a character that cannot be part of a valid base64 string.' });
});
});
\ No newline at end of file