123456789101112131415161718192021222324252627282930313233343536373839 |
- const { app, safeStorage } = require('electron');
- const { expect } = require('chai');
- (async () => {
- if (!app.isReady()) {
- // isEncryptionAvailable() returns false before the app is ready on
- // Linux: https://github.com/electron/electron/issues/32206
- // and
- // Windows: https://github.com/electron/electron/issues/33640.
- expect(safeStorage.isEncryptionAvailable()).to.equal(process.platform === 'darwin');
- if (safeStorage.isEncryptionAvailable()) {
- const plaintext = 'plaintext';
- const ciphertext = safeStorage.encryptString(plaintext);
- expect(Buffer.isBuffer(ciphertext)).to.equal(true);
- expect(safeStorage.decryptString(ciphertext)).to.equal(plaintext);
- } else {
- expect(() => safeStorage.encryptString('plaintext')).to.throw(/safeStorage cannot be used before app is ready/);
- expect(() => safeStorage.decryptString(Buffer.from(''))).to.throw(/safeStorage cannot be used before app is ready/);
- }
- }
- await app.whenReady();
- // isEncryptionAvailable() will always return false on CI due to a mocked
- // dbus as mentioned above.
- expect(safeStorage.isEncryptionAvailable()).to.equal(process.platform !== 'linux');
- if (safeStorage.isEncryptionAvailable()) {
- const plaintext = 'plaintext';
- const ciphertext = safeStorage.encryptString(plaintext);
- expect(Buffer.isBuffer(ciphertext)).to.equal(true);
- expect(safeStorage.decryptString(ciphertext)).to.equal(plaintext);
- } else {
- expect(() => safeStorage.encryptString('plaintext')).to.throw(/Encryption is not available/);
- expect(() => safeStorage.decryptString(Buffer.from(''))).to.throw(/Decryption is not available/);
- }
- })()
- .then(app.quit)
- .catch((err) => {
- console.error(err);
- app.exit(1);
- });
|