+ it('decrypts secondary (older) secret', async function () {
+ this.slow(500);
+ const oldmb = new MysteryBox(stubLogger, { encryptionSecret: 'old secret' });
+ const newmb = new MysteryBox(stubLogger, { encryptionSecret: ['new secret', 'old secret'] });
+ object = {
+ foo: 'bar',
+ baz: 'quux',
+ flarp: 13,
+ };
+ const oldEncrypted = await oldmb.pack(object);
+ const newDecrypted = await newmb.unpack(oldEncrypted);
+ assert.deepStrictEqual(newDecrypted, object);
+ });
+
+ it('fails to decrypt invalid secret', async function () {
+ this.slow(500);
+ const oldmb = new MysteryBox(stubLogger, { encryptionSecret: 'very old secret' });
+ const newmb = new MysteryBox(stubLogger, { encryptionSecret: ['new secret', 'old secret'] });
+ object = {
+ foo: 'bar',
+ baz: 'quux',
+ flarp: 13,
+ };
+ const oldEncrypted = await oldmb.pack(object);
+ try {
+ await newmb.unpack(oldEncrypted);
+ assert.fail(noExpectedException);
+ } catch (e) {
+ assert(e instanceof Error);
+ }
+ });
+