diff --git a/src/device-sync/__tests__/engine/failures.test.ts b/src/device-sync/__tests__/engine/failures.test.ts index efa05ce6..af4903cc 100644 --- a/src/device-sync/__tests__/engine/failures.test.ts +++ b/src/device-sync/__tests__/engine/failures.test.ts @@ -621,7 +621,7 @@ describe('device sync engine: accounts that refuse access', () => { const report = await h.run(); expect(report.outcome).toBe('ok'); - expect(report.itemErrors).toEqual([expect.objectContaining({ ref: 'team', side: 'download', type: 'forbidden' })]); + expect(report.itemErrors).toEqual([]); expect(h.contactNamed('Ada')).toBeDefined(); }); @@ -665,7 +665,7 @@ describe('device sync engine: accounts that refuse access', () => { const report = await h.run(CALENDAR_AUTHORITY); expect(report.outcome).toBe('ok'); - expect(report.itemErrors).toEqual([expect.objectContaining({ ref: 'team', type: 'forbidden' })]); + expect(report.itemErrors).toEqual([]); expect(h.events()).toHaveLength(1); expect(h.device.rows('calendars').some((c) => c._sync_id === `team/${teamCalendar}`)).toBe(true); }); diff --git a/src/device-sync/engine/item-sync.ts b/src/device-sync/engine/item-sync.ts index 942e1204..e4c96911 100644 --- a/src/device-sync/engine/item-sync.ts +++ b/src/device-sync/engine/item-sync.ts @@ -189,9 +189,10 @@ export abstract class ItemSync { * One account's collections, or null when the account refuses to list them * (`forbidden`, `accountNotFound`, `accountNotSupportedByMethod`): Stalwart * lists an account shared for mail only with every capability, and access - * can go away. Such an account is left out of the run and reported; the - * rows written for it stay as they are, since a refusal can pass and must - * not drop anything from the device. + * can go away. Such an account is left out of the run, and not reported + * as a problem: for a mail-only share there is nothing to fix, and the + * warning would never go away. The rows written for it stay as they are, + * since a refusal can pass and must not drop anything from the device. */ protected async containersOf( type: 'AddressBook' | 'Calendar', @@ -203,7 +204,6 @@ export abstract class ItemSync { } catch (error) { if (!isMethodError(error) || !ACCOUNT_UNREADABLE.has(error.type)) throw error; this.unreadable.add(accountId); - this.env.report.itemError({ ref: accountId, side: 'download', type: error.type, description: error.message }); this.env.log(`account ${accountId} left out: ${error.type}`); return null; }