public function LinkCheckerInterfaceTest::testLinkCheckerCreateNodeWithBrokenLinks in Link checker 7
File
- ./
linkchecker.test, line 432 - Test file for Link checker module.
Class
Code
public function testLinkCheckerCreateNodeWithBrokenLinks() {
// Enable all node type page for link extraction.
variable_set('linkchecker_scan_node_page', TRUE);
// Core enables the URL filter for "Full HTML" by default.
// -> Blacklist / Disable URL filter for testing.
variable_set('linkchecker_filter_blacklist', array(
'filter_url' => 'filter_url',
));
// Extract from all link checker supported HTML tags.
variable_set('linkchecker_extract_from_a', 1);
variable_set('linkchecker_extract_from_audio', 1);
variable_set('linkchecker_extract_from_embed', 1);
variable_set('linkchecker_extract_from_iframe', 1);
variable_set('linkchecker_extract_from_img', 1);
variable_set('linkchecker_extract_from_object', 1);
variable_set('linkchecker_extract_from_video', 1);
$url1 = 'http://example.com/node/broken/link';
$body = 'Lorem ipsum dolor sit amet <a href="' . $url1 . '">broken link</a> sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat';
// Save folder names in variables for reuse.
$folder1 = $this
->randomName(10);
$folder2 = $this
->randomName(5);
// Fill node array.
$langcode = LANGUAGE_NONE;
$edit = array();
$edit['title'] = $this
->randomName(32);
$edit["body[{$langcode}][0][value]"] = $body;
$edit['path[alias]'] = $folder1 . '/' . $folder2;
$edit["body[{$langcode}][0][format]"] = 'full_html';
// Extract only full qualified URLs.
variable_set('linkchecker_check_links_types', 1);
// Verify path input field appears on add "Basic page" form.
$this
->drupalGet('node/add/page');
// Verify path input is present.
$this
->assertFieldByName('path[alias]', '', 'Path input field present on add Basic page form.');
// Save node.
$this
->drupalPost('node/add/page', $edit, t('Save'));
$this
->assertText(t('@type @title has been created.', array(
'@type' => 'Basic page',
'@title' => $edit['title'],
)), 'Node was created.');
$node = $this
->drupalGetNodeByTitle($edit['title']);
$this
->assertTrue($node, 'Node found in database.');
// Verify if the content link is extracted properly.
$link = $this
->getLinkCheckerLink($url1);
if ($link) {
$this
->assertIdentical($link->url, $url1, format_string('URL %url found.', array(
'%url' => $url1,
)));
}
else {
$this
->fail(format_string('URL %url not found.', array(
'%url' => $url1,
)));
}
// Set link as failed once.
$fail_count = 1;
$status = '301';
$this
->setLinkAsBroken($url1, $status, $fail_count);
$this
->drupalGet('node/' . $node->nid . '/edit');
$this
->assertRaw(format_plural($fail_count, 'Link check of <a href="@url">@url</a> failed once (status code: @code).', 'Link check of <a href="@url">@url</a> failed @count times (status code: @code).', array(
'@url' => $url1,
'@code' => $status,
)), 'Link check failed once found.');
// Set link as failed multiple times.
$fail_count = 4;
$status = '404';
$this
->setLinkAsBroken($url1, $status, $fail_count);
$this
->drupalGet('node/' . $node->nid . '/edit');
$this
->assertRaw(format_plural($fail_count, 'Link check of <a href="@url">@url</a> failed once (status code: @code).', 'Link check of <a href="@url">@url</a> failed @count times (status code: @code).', array(
'@url' => $url1,
'@code' => $status,
)), 'Link check failed multiple times found.');
}