ultisuite-client/lib/agenda/agenda-destination-identities.test.ts
R3D347HR4Y ad1370ea7e
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
feat: enhance configuration and add new demo layouts
- Introduced turbopack alias for canvas in next.config.mjs.
- Updated package.json scripts for development and branding tasks.
- Added new dependencies for Tiptap extensions.
- Implemented new demo layouts for agenda, contacts, drive, and mail applications.
- Enhanced globals.css for improved theming and splash screen animations.
- Added OAuth callback handling for drive mounts.
- Updated layout components to integrate new demo shells and improve structure.
2026-06-12 19:10:24 +02:00

99 lines
3.1 KiB
TypeScript

import assert from "node:assert/strict"
import { describe, it } from "node:test"
import {
buildDestinationMailboxes,
destinationEmailFromStoredKey,
normalizeAutoImportDestinationKeys,
normalizeAutoImportInvitationSources,
normalizeInvitationImportExclusions,
} from "./agenda-destination-identities.ts"
describe("destinationEmailFromStoredKey", () => {
it("extrait l'email d'une clé legacy accountId:email", () => {
assert.equal(
destinationEmailFromStoredKey("acc-1:Alias@Example.com"),
"alias@example.com",
)
})
it("normalise un email seul", () => {
assert.equal(destinationEmailFromStoredKey(" User@Mail.fr "), "user@mail.fr")
})
})
describe("buildDestinationMailboxes", () => {
it("déduplique comptes et identités par email", () => {
const mailboxes = buildDestinationMailboxes(
[
{ name: "A", email: "same@x.com", accountId: "1", defaultSignatureId: null },
{ name: "B", email: "Same@X.com", accountId: "2", defaultSignatureId: null },
{ name: "C", email: "other@y.com", accountId: "1", defaultSignatureId: null },
],
["same@x.com", "other@y.com"],
)
assert.equal(mailboxes.length, 2)
assert.deepEqual(
mailboxes.map((m) => m.key).sort(),
["other@y.com", "same@x.com"],
)
})
})
describe("normalizeAutoImportDestinationKeys", () => {
it("fusionne les clés legacy pointant vers le même email", () => {
assert.deepEqual(
normalizeAutoImportDestinationKeys([
"acc1:user@x.com",
"acc2:user@x.com",
"user@x.com",
]),
["user@x.com"],
)
})
})
describe("normalizeAutoImportInvitationSources", () => {
it("accepte mails de destination et contacts expéditeurs", () => {
const items = normalizeAutoImportInvitationSources([
{ type: "identity", value: "acc1:inbox@x.com", label: "inbox@x.com" },
{
type: "contact",
value: "alice@corp.com",
label: "Alice <alice@corp.com>",
},
{
type: "contact",
value: "Alice@corp.com",
label: "Alice <alice@corp.com>",
},
{ type: "folder", value: "spam", label: "Dossier · spam" },
])
assert.equal(items.length, 2)
assert.equal(items[0]?.type, "identity")
assert.equal(items[0]?.value, "inbox@x.com")
assert.equal(items[1]?.type, "contact")
assert.equal(items[1]?.value, "alice@corp.com")
})
})
describe("normalizeInvitationImportExclusions", () => {
it("déduplique les exclusions identité par mail de destination", () => {
const items = normalizeInvitationImportExclusions([
{
type: "identity",
value: "acc1:foo@bar.com",
label: "Foo <foo@bar.com>",
},
{
type: "identity",
value: "foo@bar.com",
label: "foo@bar.com",
},
{ type: "email", value: "spam@x.com", label: "spam@x.com" },
])
assert.equal(items.filter((i) => i.type === "identity").length, 1)
assert.equal(items.find((i) => i.type === "identity")?.value, "foo@bar.com")
assert.equal(items.filter((i) => i.type === "email").length, 1)
})
})