UnitTestCase('Mail body rendering tests'); // simulate environment to successfully include func.inc $GLOBALS['RCMAIL'] = $RCMAIL = rcmail::get_instance(); $GLOBALS['OUTPUT'] = $OUTPUT = $RCMAIL->load_gui(); $RCMAIL->action = 'spell'; $IMAP = $RCMAIL->imap; require_once 'steps/mail/func.inc'; $GLOBALS['EMAIL_ADDRESS_PATTERN'] = $EMAIL_ADDRESS_PATTERN; } /** * Helper method to create a HTML message part object */ function get_html_part($body) { $part = new rcube_message_part; $part->ctype_primary = 'text'; $part->ctype_secondary = 'html'; $part->body = file_get_contents(TESTS_DIR . $body); $part->replaces = array(); return $part; } /** * Test sanitization of a "normal" html message */ function test_html() { $part = $this->get_html_part('src/htmlbody.txt'); $part->replaces = array('ex1.jpg' => 'part_1.2.jpg', 'ex2.jpg' => 'part_1.2.jpg'); // render HTML in normal mode $html = rcmail_html4inline(rcmail_print_body($part, array('safe' => false)), 'foo'); $this->assertPattern('/src="'.$part->replaces['ex1.jpg'].'"/', $html, "Replace reference to inline image"); $this->assertPattern('#background="./program/blocked.gif"#', $html, "Replace external background image"); $this->assertNoPattern('/ex3.jpg/', $html, "No references to external images"); $this->assertNoPattern('/]+>/', $html, "No meta tags allowed"); $this->assertNoPattern('/