import { DyFM_EnvironmentFlag } from '@futdevpro/fsm-dynamo'; import { DyNTS_global_settings } from '../../../_collections/global-settings.const'; import { DyNTS_testEmailPattern } from '../_collections/test-email-pattern.const'; import { DyNTS_TestEmailSink_Service } from './dynts-test-email-sink.service'; describe('| DyNTS_TestEmailSink_Service (BFR-MASTERPROMPTER-015)', () => { let originalEnvironment: DyFM_EnvironmentFlag; let originalSinkSettings: typeof DyNTS_global_settings.testEmailSink; beforeEach(() => { originalEnvironment = DyNTS_global_settings.env_settings.environment; originalSinkSettings = DyNTS_global_settings.testEmailSink; }); afterEach(() => { DyNTS_global_settings.env_settings.environment = originalEnvironment; DyNTS_global_settings.testEmailSink = originalSinkSettings; }); describe('| DyNTS_testEmailPattern', () => { it('| matchel a kanonikus teszt-cimre (case-insensitive)', () => { expect(DyNTS_testEmailPattern.test('e2e-abc123@e2e.test.futdevpro.local')).toBeTrue(); expect(DyNTS_testEmailPattern.test('X@E2E.TEST.FUTDEVPRO.LOCAL')).toBeTrue(); }); it('| NEM matchel valos cimekre (incl. hasonlo domain-vegzodesek)', () => { expect(DyNTS_testEmailPattern.test('user@gmail.com')).toBeFalse(); expect(DyNTS_testEmailPattern.test('user@futdevpro.hu')).toBeFalse(); expect(DyNTS_testEmailPattern.test('user@e2e.test.futdevpro.localhost')).toBeFalse(); expect(DyNTS_testEmailPattern.test('user@notE2e.test.futdevpro.local.evil.com')).toBeFalse(); }); }); describe('| shouldSink — env-gate (fail-closed)', () => { it('| test kornyezetben teszt-cimre → TRUE', () => { DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test; expect(DyNTS_TestEmailSink_Service.shouldSink('x@e2e.test.futdevpro.local')).toBeTrue(); }); it('| local kornyezetben teszt-cimre → TRUE', () => { DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local; expect(DyNTS_TestEmailSink_Service.shouldSink('x@e2e.test.futdevpro.local')).toBeTrue(); }); it('| PROD kornyezetben MEG enabled:true settinggel SEM aktiv (hard fail-closed)', () => { DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.prod; DyNTS_global_settings.testEmailSink = { enabled: true }; expect(DyNTS_TestEmailSink_Service.shouldSink('x@e2e.test.futdevpro.local')).toBeFalse(); }); it('| test kornyezetben enabled:false settinggel kikapcsolhato', () => { DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test; DyNTS_global_settings.testEmailSink = { enabled: false }; expect(DyNTS_TestEmailSink_Service.shouldSink('x@e2e.test.futdevpro.local')).toBeFalse(); }); }); describe('| shouldSink — cimzett-minta', () => { beforeEach(() => { DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test; }); it('| valos cimre → FALSE (test kornyezetben is)', () => { expect(DyNTS_TestEmailSink_Service.shouldSink('user@gmail.com')).toBeFalse(); }); it('| ures/undefined cimre → FALSE', () => { expect(DyNTS_TestEmailSink_Service.shouldSink(undefined)).toBeFalse(); expect(DyNTS_TestEmailSink_Service.shouldSink('')).toBeFalse(); }); it('| vesszos tobb-cimzettes string: MIND teszt-cim → TRUE', () => { expect(DyNTS_TestEmailSink_Service.shouldSink( 'a@e2e.test.futdevpro.local, b@e2e.test.futdevpro.local', )).toBeTrue(); }); it('| KEVERT cimzett-lista (teszt + valos) → FALSE (a valos cimzett nem veszithet emailt)', () => { expect(DyNTS_TestEmailSink_Service.shouldSink( 'a@e2e.test.futdevpro.local, real@gmail.com', )).toBeFalse(); }); it('| tomb-cimzettek: mind teszt → TRUE; kevert → FALSE', () => { expect(DyNTS_TestEmailSink_Service.shouldSink([ 'a@e2e.test.futdevpro.local' ])).toBeTrue(); expect(DyNTS_TestEmailSink_Service.shouldSink([ 'a@e2e.test.futdevpro.local', 'real@x.com' ])).toBeFalse(); }); it('| custom pattern-override settinggel', () => { DyNTS_global_settings.testEmailSink = { pattern: /@sink\.example$/ }; expect(DyNTS_TestEmailSink_Service.shouldSink('x@sink.example')).toBeTrue(); expect(DyNTS_TestEmailSink_Service.shouldSink('x@e2e.test.futdevpro.local')).toBeFalse(); }); }); describe('| extractLinks', () => { it('| minden href-et kinyer sorrendben', () => { const html: string = 'Verify Reset'; expect(DyNTS_TestEmailSink_Service.extractLinks(html)).toEqual([ 'https://x.hu/email-verification/tok3n', 'https://x.hu/reset', ]); }); it('| ures/undefined html → ures tomb', () => { expect(DyNTS_TestEmailSink_Service.extractLinks(undefined)).toEqual([]); expect(DyNTS_TestEmailSink_Service.extractLinks('

no links

')).toEqual([]); }); }); });