mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
61 lines
1.9 KiB
JavaScript
61 lines
1.9 KiB
JavaScript
|
/* eslint-disable no-unused-vars */
|
||
|
|
||
|
require('app-module-path').addPath(__dirname);
|
||
|
|
||
|
const { asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('test-utils.js');
|
||
|
const { shim } = require('lib/shim');
|
||
|
const Setting = require('lib/models/Setting');
|
||
|
const KeychainService = require('lib/services/keychain/KeychainService').default;
|
||
|
|
||
|
process.on('unhandledRejection', (reason, p) => {
|
||
|
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
||
|
});
|
||
|
|
||
|
function describeIfCompatible(name, fn) {
|
||
|
if (['win32', 'darwin'].includes(shim.platformName())) {
|
||
|
return describe(name, fn);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
describeIfCompatible('services_KeychainService', function() {
|
||
|
|
||
|
beforeEach(async (done) => {
|
||
|
await setupDatabaseAndSynchronizer(1, { keychainEnabled: true });
|
||
|
await switchClient(1, { keychainEnabled: true });
|
||
|
await Setting.deleteKeychainPasswords();
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
afterEach(async (done) => {
|
||
|
await Setting.deleteKeychainPasswords();
|
||
|
done();
|
||
|
});
|
||
|
|
||
|
it('should be enabled on macOS and Windows', asyncTest(async () => {
|
||
|
expect(Setting.value('keychain.supported')).toBe(1);
|
||
|
}));
|
||
|
|
||
|
it('should set, get and delete passwords', asyncTest(async () => {
|
||
|
const service = KeychainService.instance();
|
||
|
|
||
|
const isSet = await service.setPassword('zz_testunit', 'password');
|
||
|
expect(isSet).toBe(true);
|
||
|
|
||
|
const password = await service.password('zz_testunit');
|
||
|
expect(password).toBe('password');
|
||
|
|
||
|
await service.deletePassword('zz_testunit');
|
||
|
|
||
|
expect(await service.password('zz_testunit')).toBe(null);
|
||
|
}));
|
||
|
|
||
|
it('should save and load secure settings', asyncTest(async () => {
|
||
|
Setting.setObjectKey('encryption.passwordCache', 'testing', '123456');
|
||
|
await Setting.saveAll();
|
||
|
await Setting.load();
|
||
|
const passwords = Setting.value('encryption.passwordCache');
|
||
|
expect(passwords.testing).toBe('123456');
|
||
|
}));
|
||
|
|
||
|
});
|