import assert from 'node:assert/strict' import test from 'node:test' import { GOOGLE_CALENDAR_CONNECT_URL, GOOGLE_INBOX_CONNECT_URL, googleCalendarSetupError, googleInboxSetupError, } from './google-setup.ts' test('calendar 403 names calendar.readonly and the connect URL', () => { const error = googleCalendarSetupError( { status: 403, message: 'ACCESS_TOKEN_SCOPE_INSUFFICIENT' }, 'personal', ) assert.match(error.message, /calendar\.readonly/) assert.match(error.message, /personal/) assert.equal(error.message.includes(GOOGLE_CALENDAR_CONNECT_URL), true) }) test('inbox 403 names gmail.readonly and the BYO connect URL', () => { const error = googleInboxSetupError({ status: 403, message: 'insufficient_scope' }, 'google') assert.match(error.message, /gmail\.readonly/) assert.match(error.message, /Google OAuth client/) assert.equal(error.message.includes(GOOGLE_INBOX_CONNECT_URL), true) }) test('unrelated errors keep their original message', () => { const original = new Error('Calendar backend exploded') assert.equal(googleCalendarSetupError(original, 'personal'), original) assert.equal(googleInboxSetupError(new Error('network down'), 'personal').message, 'network down') })