]> git.ardis.lu - envpass/commitdiff
Define expected error messages in tests
authorArdis Lu <ardisglu@gmail.com>
Fri, 4 Sep 2026 03:46:09 +0000 (20:46 -0700)
committerArdis Lu <ardisglu@gmail.com>
Fri, 4 Sep 2026 03:46:09 +0000 (20:46 -0700)
src/crypto.js
test/crypto.test.js

index 2dd5146c81852952e85b5b877e015d96e58f9091..07e8ba34eab8c2e6760ccf77d4d23fce0d3d58e9 100644 (file)
@@ -55,7 +55,7 @@ export async function encryptRaw(options) {
   }
 
   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') {
@@ -108,12 +108,17 @@ export async function encryptRaw(options) {
  */
 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.`);
   }
index c2013dce60bdfa548c3befc768d28501134f30a7..b6fbf7d326adef68df0c2d0c4b2a8069e252e4f5 100644 (file)
@@ -17,15 +17,15 @@ suite('encryptRaw and decryptRaw', { concurrency: true }, () => {
 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.' });
   });
 });
 
@@ -33,21 +33,21 @@ suite('decryptRaw', { concurrency: true }, () => {
   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
This page took 0.036762 seconds and 4 git commands to generate.