Spaces:
Runtime error
Runtime error
| namespace Tests\Unit; | |
| use App\Domain\Communications\EmailLayoutRenderer; | |
| use Tests\TestCase; | |
| class EmailLayoutRendererTest extends TestCase | |
| { | |
| public function test_email_layout_wraps_plain_text_body(): void | |
| { | |
| $html = app(EmailLayoutRenderer::class)->bodyToHtml("Thank you.\n\nPay here: https://example.com/pay?token=abc"); | |
| $this->assertStringContainsString('<p>Thank you.</p>', $html); | |
| $this->assertStringContainsString('href="https://example.com/pay?token=abc"', $html); | |
| $this->assertStringNotContainsString('<script', strtolower($html)); | |
| } | |
| public function test_email_layout_escapes_body_html(): void | |
| { | |
| $html = app(EmailLayoutRenderer::class)->bodyToHtml('<strong>Code</strong>'); | |
| $this->assertStringContainsString('<strong>Code</strong>', $html); | |
| $this->assertStringNotContainsString('<strong>Code</strong>', $html); | |
| } | |
| public function test_email_layout_renders_safe_bold_markers_after_escaping_body(): void | |
| { | |
| $html = app(EmailLayoutRenderer::class)->bodyToHtml('Your code is **123456**. Do not trust **<script>bad</script>**.'); | |
| $this->assertStringContainsString('Your code is <strong>123456</strong>.', $html); | |
| $this->assertStringContainsString('<strong><script>bad</script></strong>', $html); | |
| $this->assertStringNotContainsString('<script>bad</script>', $html); | |
| } | |
| public function test_email_layout_has_black_header_and_footer_fallbacks_without_script(): void | |
| { | |
| $template = file_get_contents(resource_path('views/emails/mdn-layout.blade.php')); | |
| $this->assertStringContainsString('background-color: #0b0b0b', $template); | |
| $this->assertStringContainsString('bgcolor="#0b0b0b"', $template); | |
| $this->assertStringContainsString('<header class="email-header" bgcolor="#0b0b0b" style="background-color: #0b0b0b;">', $template); | |
| $this->assertStringContainsString('<footer class="email-footer" bgcolor="#0b0b0b" style="background-color: #0b0b0b;">', $template); | |
| $this->assertStringNotContainsString('<script', strtolower($template)); | |
| } | |
| } | |