| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| |
| if (!common.hasCrypto) |
| common.skip('missing crypto'); |
| if (common.hasFipsCrypto) |
| common.skip('crypto.createCipher() is not supported in FIPS mode'); |
| |
| const crypto = require('crypto'); |
| const key = '0123456789'; |
| |
| { |
| common.expectWarning({ |
| DeprecationWarning: [ |
| ['crypto.createCipher is deprecated.', 'DEP0106'], |
| ], |
| Warning: [ |
| ['Use Cipheriv for counter mode of aes-256-gcm'], |
| ] |
| }); |
| |
| // Emits regular warning expected by expectWarning() |
| crypto.createCipher('aes-256-gcm', key); |
| } |
| |
| const realEmitWarning = process.emitWarning; |
| |
| { |
| // It's a good idea to make this overridable from userland. |
| process.emitWarning = () => { throw new Error('foo'); }; |
| assert.throws(() => { |
| crypto.createCipher('aes-256-gcm', key); |
| }, /^Error: foo$/); |
| } |
| |
| { |
| Object.defineProperty(process, 'emitWarning', { |
| get() { throw new Error('bar'); }, |
| configurable: true |
| }); |
| assert.throws(() => { |
| crypto.createCipher('aes-256-gcm', key); |
| }, /^Error: bar$/); |
| } |
| |
| // Reset back to default after the test. |
| Object.defineProperty(process, 'emitWarning', { |
| value: realEmitWarning, |
| configurable: true, |
| writable: true |
| }); |