mirror of
https://github.com/standardnotes/server
synced 2026-07-14 00:01:54 -04:00
* feat(auth): add triggering post setting update actions * feat(auth): refactor email backups * fix: add extra logs for backups * fix: specs
105 lines
4.0 KiB
TypeScript
105 lines
4.0 KiB
TypeScript
import {
|
|
DomainEventPublisherInterface,
|
|
EmailBackupRequestedEvent,
|
|
MuteEmailsSettingChangedEvent,
|
|
UserDisabledSessionUserAgentLoggingEvent,
|
|
} from '@standardnotes/domain-events'
|
|
import { EmailBackupFrequency, LogSessionUserAgentOption, MuteMarketingEmailsOption } from '@standardnotes/settings'
|
|
import { SettingName, Result } from '@standardnotes/domain-core'
|
|
|
|
import { TriggerPostSettingUpdateActions } from './TriggerPostSettingUpdateActions'
|
|
import { DomainEventFactoryInterface } from '../../Event/DomainEventFactoryInterface'
|
|
import { TriggerEmailBackupForUser } from '../TriggerEmailBackupForUser/TriggerEmailBackupForUser'
|
|
|
|
describe('TriggerPostSettingUpdateActions', () => {
|
|
let domainEventPublisher: DomainEventPublisherInterface
|
|
let domainEventFactory: DomainEventFactoryInterface
|
|
let triggerEmailBackupForUser: TriggerEmailBackupForUser
|
|
|
|
const createUseCase = () =>
|
|
new TriggerPostSettingUpdateActions(domainEventPublisher, domainEventFactory, triggerEmailBackupForUser)
|
|
|
|
beforeEach(() => {
|
|
triggerEmailBackupForUser = {} as jest.Mocked<TriggerEmailBackupForUser>
|
|
triggerEmailBackupForUser.execute = jest.fn().mockReturnValue(Result.ok())
|
|
|
|
domainEventPublisher = {} as jest.Mocked<DomainEventPublisherInterface>
|
|
domainEventPublisher.publish = jest.fn()
|
|
|
|
domainEventFactory = {} as jest.Mocked<DomainEventFactoryInterface>
|
|
domainEventFactory.createEmailBackupRequestedEvent = jest
|
|
.fn()
|
|
.mockReturnValue({} as jest.Mocked<EmailBackupRequestedEvent>)
|
|
domainEventFactory.createUserDisabledSessionUserAgentLoggingEvent = jest
|
|
.fn()
|
|
.mockReturnValue({} as jest.Mocked<UserDisabledSessionUserAgentLoggingEvent>)
|
|
domainEventFactory.createMuteEmailsSettingChangedEvent = jest
|
|
.fn()
|
|
.mockReturnValue({} as jest.Mocked<MuteEmailsSettingChangedEvent>)
|
|
})
|
|
|
|
it('should trigger session cleanup if user is disabling session user agent logging', async () => {
|
|
await createUseCase().execute({
|
|
updatedSettingName: SettingName.NAMES.LogSessionUserAgent,
|
|
userUuid: '4-5-6',
|
|
userEmail: '[email protected]',
|
|
unencryptedValue: LogSessionUserAgentOption.Disabled,
|
|
})
|
|
|
|
expect(domainEventPublisher.publish).toHaveBeenCalled()
|
|
expect(domainEventFactory.createUserDisabledSessionUserAgentLoggingEvent).toHaveBeenCalledWith({
|
|
userUuid: '4-5-6',
|
|
email: '[email protected]',
|
|
})
|
|
})
|
|
|
|
it('should trigger backup if email backup setting is created - emails not muted', async () => {
|
|
await createUseCase().execute({
|
|
updatedSettingName: SettingName.NAMES.EmailBackupFrequency,
|
|
userUuid: '4-5-6',
|
|
userEmail: '[email protected]',
|
|
unencryptedValue: EmailBackupFrequency.Daily,
|
|
})
|
|
|
|
expect(triggerEmailBackupForUser.execute).toHaveBeenCalled()
|
|
})
|
|
|
|
it('should trigger backup if email backup setting is created - emails muted', async () => {
|
|
await createUseCase().execute({
|
|
updatedSettingName: SettingName.NAMES.EmailBackupFrequency,
|
|
userUuid: '4-5-6',
|
|
userEmail: '[email protected]',
|
|
unencryptedValue: EmailBackupFrequency.Daily,
|
|
})
|
|
|
|
expect(triggerEmailBackupForUser.execute).toHaveBeenCalled()
|
|
})
|
|
|
|
it('should not trigger backup if email backup setting is disabled', async () => {
|
|
await createUseCase().execute({
|
|
updatedSettingName: SettingName.NAMES.EmailBackupFrequency,
|
|
userUuid: '4-5-6',
|
|
userEmail: '[email protected]',
|
|
unencryptedValue: EmailBackupFrequency.Disabled,
|
|
})
|
|
|
|
expect(triggerEmailBackupForUser.execute).not.toHaveBeenCalled()
|
|
})
|
|
|
|
it('should trigger mute subscription emails rejection if mute setting changed', async () => {
|
|
await createUseCase().execute({
|
|
updatedSettingName: SettingName.NAMES.MuteMarketingEmails,
|
|
userUuid: '4-5-6',
|
|
userEmail: '[email protected]',
|
|
unencryptedValue: MuteMarketingEmailsOption.Muted,
|
|
})
|
|
|
|
expect(domainEventPublisher.publish).toHaveBeenCalled()
|
|
expect(domainEventFactory.createMuteEmailsSettingChangedEvent).toHaveBeenCalledWith({
|
|
emailSubscriptionRejectionLevel: 'MARKETING',
|
|
mute: true,
|
|
username: '[email protected]',
|
|
})
|
|
})
|
|
})
|