feat: add snjs package
This commit is contained in:
111
packages/snjs/mocha/settings.test.js
Normal file
111
packages/snjs/mocha/settings.test.js
Normal file
@@ -0,0 +1,111 @@
|
||||
import * as Factory from './lib/factory.js'
|
||||
chai.use(chaiAsPromised)
|
||||
const expect = chai.expect
|
||||
|
||||
describe('settings service', function () {
|
||||
const validSetting = SettingName.GoogleDriveBackupFrequency
|
||||
const fakePayload = 'Im so meta even this acronym'
|
||||
const updatedFakePayload = 'is meta'
|
||||
|
||||
let application
|
||||
let context
|
||||
|
||||
beforeEach(async function () {
|
||||
context = await Factory.createAppContextWithFakeCrypto()
|
||||
|
||||
await context.launch()
|
||||
|
||||
application = context.application
|
||||
|
||||
await Factory.registerUserToApplication({
|
||||
application: context.application,
|
||||
email: context.email,
|
||||
password: context.password,
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(async function () {
|
||||
await Factory.safeDeinit(application)
|
||||
})
|
||||
|
||||
it('creates and reads a setting', async function () {
|
||||
await application.settings.updateSetting(validSetting, fakePayload)
|
||||
const responseCreate = await application.settings.getSetting(validSetting)
|
||||
expect(responseCreate).to.equal(fakePayload)
|
||||
})
|
||||
|
||||
it('throws error on an invalid setting update', async function () {
|
||||
const invalidSetting = 'FAKE_SETTING'
|
||||
let caughtError = undefined
|
||||
try {
|
||||
await application.settings.updateSetting(invalidSetting, fakePayload)
|
||||
} catch (error) {
|
||||
caughtError = error
|
||||
}
|
||||
|
||||
expect(caughtError).not.to.equal(undefined)
|
||||
})
|
||||
|
||||
it('creates and lists settings', async function () {
|
||||
await application.settings.updateSetting(validSetting, fakePayload)
|
||||
const responseList = await application.settings.listSettings()
|
||||
expect(responseList.getSettingValue(validSetting)).to.eql(fakePayload)
|
||||
})
|
||||
|
||||
it('creates and deletes a setting', async function () {
|
||||
await application.settings.updateSetting(validSetting, fakePayload)
|
||||
const responseCreate = await application.settings.getSetting(validSetting)
|
||||
expect(responseCreate).to.eql(fakePayload)
|
||||
|
||||
await application.settings.deleteSetting(validSetting)
|
||||
const responseDeleted = await application.settings.listSettings()
|
||||
expect(responseDeleted.getSettingValue(validSetting)).to.not.be.ok
|
||||
})
|
||||
|
||||
it('creates and updates a setting', async function () {
|
||||
await application.settings.updateSetting(validSetting, fakePayload)
|
||||
await application.settings.updateSetting(validSetting, updatedFakePayload)
|
||||
const responseUpdated = await application.settings.getSetting(validSetting)
|
||||
expect(responseUpdated).to.eql(updatedFakePayload)
|
||||
})
|
||||
|
||||
it('reads a nonexistent setting', async () => {
|
||||
const setting = await application.settings.getSetting(validSetting)
|
||||
expect(setting).to.equal(undefined)
|
||||
})
|
||||
|
||||
it('reads a nonexistent sensitive setting', async () => {
|
||||
const setting = await application.settings.getDoesSensitiveSettingExist(SettingName.MfaSecret)
|
||||
expect(setting).to.equal(false)
|
||||
})
|
||||
|
||||
it('creates and reads a sensitive setting', async () => {
|
||||
await application.settings.updateSetting(SettingName.MfaSecret, 'fake_secret', true)
|
||||
const setting = await application.settings.getDoesSensitiveSettingExist(SettingName.MfaSecret)
|
||||
expect(setting).to.equal(true)
|
||||
})
|
||||
|
||||
it('creates and lists a sensitive setting', async () => {
|
||||
await application.settings.updateSetting(SettingName.MfaSecret, 'fake_secret', true)
|
||||
await application.settings.updateSetting(SettingName.MuteFailedBackupsEmails, MuteFailedBackupsEmailsOption.Muted)
|
||||
const settings = await application.settings.listSettings()
|
||||
expect(settings.getSettingValue(SettingName.MuteFailedBackupsEmails)).to.eql(MuteFailedBackupsEmailsOption.Muted)
|
||||
expect(settings.getSettingValue(SettingName.MfaSecret)).to.not.be.ok
|
||||
})
|
||||
|
||||
it('reads a subscription setting', async () => {
|
||||
await Factory.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
|
||||
userEmail: context.email,
|
||||
subscriptionId: 1,
|
||||
subscriptionName: 'PRO_PLAN',
|
||||
subscriptionExpiresAt: (new Date().getTime() + 3_600_000) * 1_000,
|
||||
timestamp: Date.now(),
|
||||
offline: false,
|
||||
})
|
||||
|
||||
await Factory.sleep(0.5)
|
||||
|
||||
const setting = await application.settings.getSubscriptionSetting('FILE_UPLOAD_BYTES_LIMIT')
|
||||
expect(setting).to.be.a('string')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user