123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- From f8ea05469f22005733e7d030f45ff85771924f14 Mon Sep 17 00:00:00 2001
- From: Jaleel Carter <Jaleel.Carter@acquia.com>
- Date: Thu, 14 Jul 2016 13:29:03 -0400
- Subject: [PATCH] 2299657-45
- 2299657-45-1
- ---
- link.install | 14 +++++++++++
- link.module | 16 +++++++-----
- tests/link.attribute.test | 6 +++--
- tests/link.crud.test | 6 +++--
- tests/link.crud_browser.test | 46 ++++++++++++++++++++---------------
- tests/link.test | 8 +++---
- tests/link.validate.test | 58 ++++++++++++++++++--------------------------
- 7 files changed, 87 insertions(+), 67 deletions(-)
- diff --git a/link.install b/link.install
- index 14e745d..e1820f7 100644
- --- a/link.install
- +++ b/link.install
- @@ -115,3 +115,17 @@ function link_update_7001() {
- }
- }
- }
- +
- +/**
- + * Removes unused link_extra_domains variable.
- + */
- +function link_update_7002() {
- + variable_del('link_extra_domains');
- +}
- +
- +/**
- + * Implements hook_uninstall().
- + */
- +function link_uninstall() {
- + variable_del('link_allowed_domains');
- +}
- diff --git a/link.module b/link.module
- index 1e9d088..aece66d 100644
- --- a/link.module
- +++ b/link.module
- @@ -10,7 +10,6 @@ define('LINK_INTERNAL', 'internal');
- define('LINK_FRONT', 'front');
- define('LINK_EMAIL', 'email');
- define('LINK_NEWS', 'news');
- -define('LINK_DOMAINS', 'aero|arpa|asia|biz|build|com|cat|ceo|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|post|pro|tel|travel|mobi|local|xxx');
-
- define('LINK_TARGET_DEFAULT', 'default');
- define('LINK_TARGET_NEW_WINDOW', '_blank');
- @@ -1261,7 +1260,7 @@ function link_validate_url($text, $langcode = NULL) {
- *
- * @param string $text
- * Url to be checked.
- - *
- + *
- * @return mixed
- * Returns boolean FALSE if the URL is not valid. On success, returns one of
- * the LINK_(linktype) constants.
- @@ -1383,11 +1382,16 @@ function link_url_type($text) {
- }
-
- /**
- - * Returns the list of allowed domains, including domains added by admins via variable_set/$config.
- + * Returns the list of allowed domains.
- + *
- + * If the variable link_allowed_domains is set, restrict allowed domains to the
- + * strings in that array. If the variable link_allowed_domains is not set, allow
- + * all domains between 2 and 63 characters in length.
- + * See https://tools.ietf.org/html/rfc1034.
- */
- function _link_domains() {
- - $link_extra_domains = variable_get('link_extra_domains', array());
- - return empty($link_extra_domains) ? LINK_DOMAINS : LINK_DOMAINS . '|' . implode('|', $link_extra_domains);
- + $link_allowed_domains = variable_get('link_allowed_domains', array());
- + return empty($link_allowed_domains) ? '[a-z][a-z0-9-]{1,62}' : implode('|', $link_allowed_domains);
- }
-
- /**
- @@ -1439,7 +1443,7 @@ function link_field_settings_form() {
-
- /**
- * Additional callback to adapt the property info of link fields.
- - *
- + *
- * @see entity_metadata_field_entity_property_info()
- */
- function link_field_property_info_callback(&$info, $entity_type, $field, $instance, $field_type) {
- diff --git a/tests/link.attribute.test b/tests/link.attribute.test
- index 36e6be5..4765814 100644
- --- a/tests/link.attribute.test
- +++ b/tests/link.attribute.test
- @@ -31,8 +31,10 @@ class LinkAttributeCrudTest extends DrupalWebTestCase {
- parent::setup('field_ui', 'link');
- $this->zebra = 0;
- // Create and login user.
- - $this->web_user = $this->drupalCreateUser(array('administer content types'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
- }
-
- protected function createLink($url, $title, $attributes = array()) {
- diff --git a/tests/link.crud.test b/tests/link.crud.test
- index e9b7db4..5f12840 100644
- --- a/tests/link.crud.test
- +++ b/tests/link.crud.test
- @@ -29,8 +29,10 @@ class LinkContentCrudTest extends DrupalWebTestCase {
- $title = $this->randomName(20);
-
- // Create and login user.
- - $this->web_user = $this->drupalCreateUser(array('administer content types'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- $this->drupalGet('admin/structure/types');
-
- diff --git a/tests/link.crud_browser.test b/tests/link.crud_browser.test
- index be04260..803169b 100644
- --- a/tests/link.crud_browser.test
- +++ b/tests/link.crud_browser.test
- @@ -42,15 +42,11 @@ class LinkUITest extends DrupalWebTestcase {
- */
- function testLinkCreate() {
- //libxml_use_internal_errors(true);
- - $this->web_user = $this->drupalCreateUser(array(
- - 'administer content types',
- - 'administer nodes',
- - 'administer filters',
- - 'access content',
- - 'create page content',
- - 'access administration pages'
- - ));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
- +
-
- // create field
- $name = strtolower($this->randomName());
- @@ -133,7 +129,7 @@ class LinkUITest extends DrupalWebTestcase {
- $input_test_cases[] = $test_case;
-
- foreach ($input_test_cases as $input) {
- - $this->drupalLogin($this->web_user);
- + $this->drupalLogin($admin);
- $this->drupalGet('node/add/page');
-
- $edit = array(
- @@ -179,8 +175,10 @@ class LinkUITest extends DrupalWebTestcase {
- * title actually displays <strong>.
- */
- function testStaticLinkCreate() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -227,8 +225,10 @@ class LinkUITest extends DrupalWebTestcase {
- * Testing that if you have the title but no url, the title is not sanitized twice.
- */
- function testCRUDTitleOnlyTitleNoLink() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -278,8 +278,10 @@ class LinkUITest extends DrupalWebTestcase {
- * sure they are set to the expected results.
- */
- function testCRUDCreateFieldDefaults() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -318,8 +320,10 @@ class LinkUITest extends DrupalWebTestcase {
- * sure they are set to the expected results.
- */
- function testCRUDCreateFieldWithClass() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -390,8 +394,10 @@ class LinkUITest extends DrupalWebTestcase {
- * sure they are set to the expected results.
- */
- function testCRUDCreateFieldWithTwoClasses() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types', 'access content', 'create page content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- diff --git a/tests/link.test b/tests/link.test
- index 962197f..b030153 100644
- --- a/tests/link.test
- +++ b/tests/link.test
- @@ -23,9 +23,11 @@ class LinkBaseTestClass extends DrupalWebTestCase {
- $modules[] = 'field_ui';
- $modules[] = 'link';
- parent::setUp($modules);
- -
- - $this->web_user = $this->drupalCreateUser($this->permissions);
- - $this->drupalLogin($this->web_user);
- +
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
- }
-
- protected function createLinkField($node_type = 'page', $settings = array()) {
- diff --git a/tests/link.validate.test b/tests/link.validate.test
- index a9ac116..f03a64c 100644
- --- a/tests/link.validate.test
- +++ b/tests/link.validate.test
- @@ -61,13 +61,10 @@ class LinkValidateTest extends LinkValidateTestCase {
- * Test if we're stopped from posting a bad url on default validation.
- */
- function test_link_validate_bad_url_validate_default() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types',
- - 'administer nodes',
- - 'administer filters',
- - 'access content',
- - 'create page content',
- - 'access administration pages'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -106,13 +103,10 @@ class LinkValidateTest extends LinkValidateTestCase {
- * Test if we're stopped from posting a bad url with validation on.
- */
- function test_link_validate_bad_url_validate_on() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types',
- - 'administer nodes',
- - 'administer filters',
- - 'access content',
- - 'create page content',
- - 'access administration pages'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -152,13 +146,10 @@ class LinkValidateTest extends LinkValidateTestCase {
- * Test if we can post a bad url if the validation is expressly turned off.
- */
- function test_link_validate_bad_url_validate_off() {
- - $this->web_user = $this->drupalCreateUser(array('administer content types',
- - 'administer nodes',
- - 'administer filters',
- - 'access content',
- - 'create page content',
- - 'access administration pages'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
-
- // create field
- $name = strtolower($this->randomName());
- @@ -202,13 +193,10 @@ class LinkValidateTest extends LinkValidateTestCase {
- */
- function x_test_link_validate_switching_between_validation_status() {
- $this->acquireContentTypes(1);
- - $this->web_user = $this->drupalCreateUser(array('administer content types',
- - 'administer nodes',
- - 'access administration pages',
- - 'access content',
- - 'create ' . $this->content_types[0]->type . ' content',
- - 'edit any ' . $this->content_types[0]->type . ' content'));
- - $this->drupalLogin($this->web_user);
- + $perms = user_role_permissions(array(array_search('administrator', user_roles()) => 'administrator'));
- + $perms = array_keys($perms[array_search('administrator', user_roles())]);
- + $admin = $this->drupalCreateUser($perms);
- + $this->drupalLogin($admin);
- variable_set('node_options_' . $this->content_types[0]->name, array('status', 'promote'));
- $field_settings = array(
- 'type' => 'link',
- @@ -368,7 +356,7 @@ class LinkValidateUrlLight extends DrupalWebTestCase {
- 'group' => 'Link',
- );
- }
- -
- +
- function setUp() {
- parent::setUp('link');
- }
- @@ -429,11 +417,10 @@ class LinkValidateUrlLight extends DrupalWebTestCase {
- function testValidateInternalLinks() {
- $tempfile = drupal_tempnam('public://files', 'test');
- $links = array(
- - 'rss.xml',
- file_uri_target($tempfile),
- drupal_realpath($tempfile),
- );
- -
- +
- foreach ($links as $link) {
- $type = link_url_type($link);
- $this->assertEqual(LINK_INTERNAL, $type, 'Test ' . $link . ' is an internal link.');
- @@ -482,8 +469,8 @@ class LinkValidateUrlLight extends DrupalWebTestCase {
- //$valid2 = valid_url($link, TRUE);
- //$this->assertEqual(TRUE, $valid2, "Using valid_url() on $link.");
- }
- - // Test if we can make a tld valid:
- - variable_set('link_extra_domains', array('frog'));
- + // Test if we can make a tld allowable:
- + variable_set('link_allowed_domains', array('frog'));
- $valid = link_validate_url('http://www.example.frog');
- $this->assertEqual(LINK_EXTERNAL, $valid, "Testing that http://www.example.frog is a valid external link if we've added 'frog' to the list of valid domains.");
- }
- @@ -495,7 +482,6 @@ class LinkValidateUrlLight extends DrupalWebTestCase {
- 'http://4827.0.0.2/',
- '//www.example.com/',
- 'http://www.testß.com/', // ß not allowed in domain names!
- - 'http://www.example.frog/', // Bad TLD
- //'http://www.-fudge.com/', // domains can't have sections starting with a dash.
- 'http://example.com/index.php?page=this\that',
- 'example@example.com',
- @@ -504,5 +490,9 @@ class LinkValidateUrlLight extends DrupalWebTestCase {
- $valid = link_validate_url($link);
- $this->assertEqual(FALSE, $valid, 'Testing that ' . $link . ' is not a valid link.');
- }
- + // Test if we can make a tld disallowed:
- + variable_set('link_allowed_domains', array('toad'));
- + $valid = link_validate_url('http://www.example.frog');
- + $this->assertEqual(FALSE, $valid, "Testing that http://www.example.frog is an invalid external link if we've not added 'frog' to the list of valid domains.");
- }
- }
- --
- 2.7.4 (Apple Git-66)
|