auth-email-from.test.ts82 lines · main
1import { describe, expect, test } from 'bun:test';
2
3import { buildAuthEmailFromHeader } from './project-config.js';
4
5describe('buildAuthEmailFromHeader (SuperTokens-style per-app From)', () => {
6 test('Pando domain → Pando <noreply@pando.so>', () => {
7 const from = buildAuthEmailFromHeader(
8 {
9 senderName: 'Pando',
10 senderDomain: 'pando.so',
11 senderLocalPart: null,
12 senderEmail: null,
13 },
14 'briven.tech',
15 );
16 expect(from).toBe('Pando <noreply@pando.so>');
17 });
18
19 test('custom local part', () => {
20 const from = buildAuthEmailFromHeader({
21 senderName: 'Pando',
22 senderDomain: 'pando.so',
23 senderLocalPart: 'hello',
24 senderEmail: null,
25 });
26 expect(from).toBe('Pando <hello@pando.so>');
27 });
28
29 test('full senderEmail wins over domain', () => {
30 const from = buildAuthEmailFromHeader({
31 senderName: 'mavi pay',
32 senderDomain: 'ignored.com',
33 senderLocalPart: null,
34 senderEmail: 'auth@mavifinans.sh',
35 });
36 expect(from).toBe('"mavi pay" <auth@mavifinans.sh>');
37 });
38
39 test('spaces in name get quoted', () => {
40 const from = buildAuthEmailFromHeader({
41 senderName: 'mavi pay',
42 senderDomain: 'mavifinans.sh',
43 senderLocalPart: null,
44 senderEmail: null,
45 });
46 expect(from).toBe('"mavi pay" <noreply@mavifinans.sh>');
47 });
48
49 test('name only (no domain) still rebrands display on platform mailbox', () => {
50 const from = buildAuthEmailFromHeader(
51 {
52 senderName: 'Pando',
53 senderDomain: null,
54 senderLocalPart: null,
55 senderEmail: null,
56 },
57 'briven.tech',
58 );
59 expect(from).toBe('Pando <noreply@briven.tech>');
60 });
61
62 test('default Briven Auth name without domain → null (use platform From)', () => {
63 const from = buildAuthEmailFromHeader({
64 senderName: 'Briven Auth',
65 senderDomain: null,
66 senderLocalPart: null,
67 senderEmail: null,
68 });
69 expect(from).toBeNull();
70 });
71
72 test('rejects junk domain', () => {
73 const from = buildAuthEmailFromHeader({
74 senderName: 'X',
75 senderDomain: 'not a domain!!!',
76 senderLocalPart: null,
77 senderEmail: null,
78 });
79 // falls back to name + platform domain
80 expect(from).toBe('X <noreply@briven.tech>');
81 });
82});