core security update
This commit is contained in:
@@ -393,6 +393,16 @@ class LocaleTranslationFunctionalTest extends DrupalWebTestCase {
|
||||
// The indicator should not be here.
|
||||
$this->assertNoRaw($language_indicator, 'String is translated.');
|
||||
|
||||
// Verify that a translation set which has an empty target string can be
|
||||
// updated without any database error.
|
||||
db_update('locales_target')
|
||||
->fields(array('translation' => ''))
|
||||
->condition('language', $langcode, '=')
|
||||
->condition('lid', $lid, '=')
|
||||
->execute();
|
||||
$this->drupalPost('admin/config/regional/translate/edit/' . $lid, $edit, t('Save translations'));
|
||||
$this->assertText(t('The string has been saved.'), 'The string has been saved.');
|
||||
|
||||
// Try to edit a non-existent string and ensure we're redirected correctly.
|
||||
// Assuming we don't have 999,999 strings already.
|
||||
$random_lid = 999999;
|
||||
@@ -2237,6 +2247,37 @@ class LocaleContentFunctionalTest extends DrupalWebTestCase {
|
||||
|
||||
$this->drupalLogout();
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that nodes may be created with different languages.
|
||||
*/
|
||||
function testNodeCreationWithLanguage() {
|
||||
// Create an admin user and log them in.
|
||||
$perms = array(
|
||||
// Standard node permissions.
|
||||
'create page content',
|
||||
'administer content types',
|
||||
'administer nodes',
|
||||
'bypass node access',
|
||||
// Locale.
|
||||
'administer languages',
|
||||
);
|
||||
$web_user = $this->drupalCreateUser($perms);
|
||||
$this->drupalLogin($web_user);
|
||||
|
||||
// Create some test nodes using different langcodes.
|
||||
foreach (array(LANGUAGE_NONE, 'en', 'fr') as $langcode) {
|
||||
$node_args = array(
|
||||
'type' => 'page',
|
||||
'promote' => 1,
|
||||
'language' => $langcode,
|
||||
);
|
||||
$node = $this->drupalCreateNode($node_args);
|
||||
$node_reloaded = node_load($node->nid, NULL, TRUE);
|
||||
$this->assertEqual($node_reloaded->language, $langcode, format_string('The language code of the node was successfully set to @langcode.', array('@langcode' => $langcode)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2629,6 +2670,68 @@ class LocaleUrlRewritingTest extends DrupalWebTestCase {
|
||||
$this->drupalGet("$prefix/$path");
|
||||
$this->assertResponse(404, $message2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check URL rewriting when using a domain name and a non-standard port.
|
||||
*/
|
||||
function testDomainNameNegotiationPort() {
|
||||
$language_domain = 'example.fr';
|
||||
$edit = array(
|
||||
'locale_language_negotiation_url_part' => 1,
|
||||
);
|
||||
$this->drupalPost('admin/config/regional/language/configure/url', $edit, t('Save configuration'));
|
||||
$edit = array(
|
||||
'prefix' => '',
|
||||
'domain' => $language_domain
|
||||
);
|
||||
$this->drupalPost('admin/config/regional/language/edit/fr', $edit, t('Save language'));
|
||||
|
||||
// Enable domain configuration.
|
||||
variable_set('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN);
|
||||
|
||||
// Reset static caching.
|
||||
drupal_static_reset('language_list');
|
||||
drupal_static_reset('language_url_outbound_alter');
|
||||
drupal_static_reset('language_url_rewrite_url');
|
||||
|
||||
// In case index.php is part of the URLs, we need to adapt the asserted
|
||||
// URLs as well.
|
||||
$index_php = strpos(url('', array('absolute' => TRUE)), 'index.php') !== FALSE;
|
||||
|
||||
// Remember current HTTP_HOST.
|
||||
$http_host = $_SERVER['HTTP_HOST'];
|
||||
|
||||
// Fake a different port.
|
||||
$_SERVER['HTTP_HOST'] .= ':88';
|
||||
|
||||
// Create an absolute French link.
|
||||
$languages = language_list();
|
||||
$language = $languages['fr'];
|
||||
$url = url('', array(
|
||||
'absolute' => TRUE,
|
||||
'language' => $language
|
||||
));
|
||||
|
||||
$expected = 'http://example.fr:88/';
|
||||
$expected .= $index_php ? 'index.php/' : '';
|
||||
|
||||
$this->assertEqual($url, $expected, 'The right port is used.');
|
||||
|
||||
// If we set the port explicitly in url(), it should not be overriden.
|
||||
$url = url('', array(
|
||||
'absolute' => TRUE,
|
||||
'language' => $language,
|
||||
'base_url' => $GLOBALS['base_url'] . ':90',
|
||||
));
|
||||
|
||||
$expected = 'http://example.fr:90/';
|
||||
$expected .= $index_php ? 'index.php/' : '';
|
||||
|
||||
$this->assertEqual($url, $expected, 'A given port is not overriden.');
|
||||
|
||||
// Restore HTTP_HOST.
|
||||
$_SERVER['HTTP_HOST'] = $http_host;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3141,3 +3244,46 @@ class LocaleCSSAlterTest extends DrupalWebTestCase {
|
||||
$this->assertRaw('@import url("' . $base_url . '/modules/system/system.messages.css' . $query_string . '");' . "\n" . '@import url("' . $base_url . '/modules/system/system.messages-rtl.css' . $query_string . '");' . "\n", 'CSS: system.messages-rtl.css is added directly after system.messages.css.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests locale translation safe string handling.
|
||||
*/
|
||||
class LocaleStringIsSafeTest extends DrupalWebTestCase {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'Test if a string is safe',
|
||||
'description' => 'Tests locale translation safe string handling.',
|
||||
'group' => 'Locale',
|
||||
);
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
parent::setUp('locale');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests for locale_string_is_safe().
|
||||
*/
|
||||
public function testLocaleStringIsSafe() {
|
||||
// Check a translatable string without HTML.
|
||||
$string = 'Hello world!';
|
||||
$result = locale_string_is_safe($string);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// Check a translatable string which includes trustable HTML.
|
||||
$string = 'Hello <strong>world</strong>!';
|
||||
$result = locale_string_is_safe($string);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// Check an untranslatable string which includes untrustable HTML (according
|
||||
// to the locale_string_is_safe() function definition).
|
||||
$string = 'Hello <img src="world.png" alt="world" />!';
|
||||
$result = locale_string_is_safe($string);
|
||||
$this->assertFalse($result);
|
||||
|
||||
// Check a translatable string which includes a token in an href attribute.
|
||||
$string = 'Hi <a href="[current-user:url]">user</a>';
|
||||
$result = locale_string_is_safe($string);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user