thomascube
2009-03-04 961afa19301fabfa65848242e896cc1e6a267f04
Add tests for external stylesheet handling

2 files modified
7 ■■■■ changed files
tests/mailfunc.php 6 ●●●● patch | view | raw | blame | history
tests/src/htmlbody.txt 1 ●●●● patch | view | raw | blame | history
tests/mailfunc.php
@@ -55,15 +55,19 @@
    $this->assertNoPattern('/<form [^>]+>/', $html, "No form tags allowed");
    $this->assertPattern('/Subscription form/', $html, "Include <form> contents");
    $this->assertPattern('/<!-- input not allowed -->/', $html, "No input elements allowed");
    $this->assertPattern('/<!-- link not allowed -->/', $html, "No external links allowed");
    $this->assertPattern('/<a[^>]+ target="_blank">/', $html, "Set target to _blank");
    $this->assertTrue($GLOBALS['REMOTE_OBJECTS'], "Remote object detected");
    
    // render HTML in safe mode
    $html2 = rcmail_print_body($part, array('safe' => true));
    $html2 = rcmail_html4inline(rcmail_print_body($part, array('safe' => true)), 'foo');
    
    $this->assertPattern('/<style [^>]+>/', $html2, "Allow styles in safe mode");
    $this->assertPattern('#src="http://evilsite.net/mailings/ex3.jpg"#', $html2, "Allow external images in HTML (safe mode)");
    $this->assertPattern("#url\('http://evilsite.net/newsletter/image/bg/bg-64.jpg'\)#", $html2, "Allow external images in CSS (safe mode)");
    $css = '<link rel="stylesheet" type="text/css" href="./bin/modcss.php?u='.urlencode('http://anysite.net/styles/mail.css').'&amp;c=foo"';
    $this->assertPattern('#'.preg_quote($css).'#', $html2, "Filter external styleseehts with bin/modcss.php");
  }
  /**
tests/src/htmlbody.txt
@@ -3,6 +3,7 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>RoundCube Test Message</title>
<link rel="stylesheet" type="text/css" href="http://anysite.net/styles/mail.css">
<style type="text/css">
p, a {