20 merge requests!10011Issue #3200534 by quietone, longwave, Kristen Pol: Use dataprovider for...,!3134Issue #3222236: Lighthouse SEO: Uncrawlable Link a#main-content,!2571Issue #3000717: Missing mapping for "nodereference_url" widget,!2521Issue #3185775: Place Views preview on the side on large monitors,!1803Issue #2329253: Allow the ChangedItem to skip updating when synchronizing (f.e. when migrating),!1603Issue #3231707: mxr576's core patch playground,!1479Issue #3250298: Return empty string "" with JSON Serializer instead of FALSE,!1478Issue #3250298: Return empty string "" with JSON Serializer instead of FALSE,!1203Issue #3236191 Wrong group exposed form widgets and multiple selection error.,!1076Issue #2903336 Added node context for tokens.,!1015Issue #3226944: REST's Request handler doesn't resolve $data argument for put method,!810Issue #3219541: Remove redudante call $this->requestStack->getCurrentRequest() in FormBuilder::buildForm,!803Issue #3219167: webchick test issue of all time turbo edition super star 20000 NG,!740Issue #3216088: Update Symfony 5 components to 5.3,!657Draft: Remove alpha-stability experimental modules and themes from 9.2.x only, prior...,!577Issue #3209779: Create new database storage for the tracker module,!526Update block module to use once library,!516Issue #3207782: Figure out BC for jquery once by @drupal/once,!400Issue #3051766: Deprecate and replace jQuery Joyride (for tours),!35Issue #3164686 WebAssert::addressEquals() and AssertLegacyTrait::assertUrl() fail to check the querystring
$this->assertStringContainsString($encoded_path,$link,newFormattableMarkup('XSS attack @path was filtered by \Drupal\Core\Utility\LinkGeneratorInterface::generate().',['@path'=>$path]));
$this->assertStringNotContainsString($path,$link,newFormattableMarkup('XSS attack @path was filtered by \Drupal\Core\Utility\LinkGeneratorInterface::generate().',['@path'=>$path]));
// Test \Drupal\Core\Url.
$link=Url::fromUri('base:'.$path)->toString();
$this->assertStringContainsString($encoded_path,$link,newFormattableMarkup('XSS attack @path was filtered by #theme',['@path'=>$path]));
$this->assertStringNotContainsString($path,$link,newFormattableMarkup('XSS attack @path was filtered by #theme',['@path'=>$path]));
}
/**
* Tests that #type=link bubbles outbound route/path processors' metadata.
$this->assertTrue($this->hasAttribute('hreflang',$rendered,$langcode),newFormattableMarkup('hreflang attribute with value @langcode is present on a rendered link when langcode is provided in the render array.',['@langcode'=>$langcode]));
$this->assertTrue($this->hasAttribute('hreflang',$rendered,'foo'),newFormattableMarkup('hreflang attribute with value @hreflang is present on a rendered link when @hreflang is provided in the render array.',['@hreflang'=>'foo']));
// Test the active class in links produced by
// \Drupal\Core\Utility\LinkGeneratorInterface::generate() and #type 'link'.
publicfunctiontestActiveLinkAttributes(){
$options_no_query=[];
$options_query=[
'query'=>[
...
...
@@ -141,194 +56,6 @@ public function testLinkAttributes() {
$links=$this->xpath('//a[@href = :href and not(contains(@class, :class))]',[':href'=>Url::fromRoute('common_test.l_active_class',[],$options_no_query)->toString(),':class'=>'is-active']);
$this->assertTrue(isset($links[0]),'A link generated by the link generator to the current page without a query string when the current page has a query string is not marked active.');
// Test adding a custom class in links produced by
// \Drupal\Core\Utility\LinkGeneratorInterface::generate() and #type 'link'.
$this->assertTrue($this->hasAttribute('class',$link_l,$class_l),newFormattableMarkup('Custom class @class is present on link when requested by Link::toString()',['@class'=>$class_l]));
// Test #type.
$class_theme=$this->randomMachineName();
$type_link=[
'#type'=>'link',
'#title'=>$this->randomMachineName(),
'#url'=>Url::fromRoute('<current>'),
'#options'=>[
'attributes'=>[
'class'=>[$class_theme],
],
],
];
$link_theme=$renderer->renderRoot($type_link);
$this->assertTrue($this->hasAttribute('class',$link_theme,$class_theme),newFormattableMarkup('Custom class @class is present on link when requested by #type',['@class'=>$class_theme]));
}
/**
* Tests that link functions support render arrays as 'text'.
$this->assertStringContainsString($encoded_path,$link,newFormattableMarkup('XSS attack @path was filtered by \Drupal\Core\Utility\LinkGeneratorInterface::generate().',['@path'=>$path]));
$this->assertStringNotContainsString($path,$link,newFormattableMarkup('XSS attack @path was filtered by \Drupal\Core\Utility\LinkGeneratorInterface::generate().',['@path'=>$path]));
// Test \Drupal\Core\Url.
$link=Url::fromUri('base:'.$path)->toString();
$this->assertStringContainsString($encoded_path,$link,newFormattableMarkup('XSS attack @path was filtered by #theme',['@path'=>$path]));
$this->assertStringNotContainsString($path,$link,newFormattableMarkup('XSS attack @path was filtered by #theme',['@path'=>$path]));
}
/**
* Tests that #type=link bubbles outbound route/path processors' metadata.
$this->assertTrue($this->hasAttribute('hreflang',$rendered,$langcode),newFormattableMarkup('hreflang attribute with value @langcode is present on a rendered link when langcode is provided in the render array.',['@langcode'=>$langcode]));
$this->assertTrue($this->hasAttribute('hreflang',$rendered,'foo'),newFormattableMarkup('hreflang attribute with value @hreflang is present on a rendered link when @hreflang is provided in the render array.',['@hreflang'=>'foo']));
// Test adding a custom class in links produced by
// \Drupal\Core\Utility\LinkGeneratorInterface::generate() and #type 'link'.
$this->assertTrue($this->hasAttribute('class',$link_l,$class_l),newFormattableMarkup('Custom class @class is present on link when requested by Link::toString()',['@class'=>$class_l]));
$this->assertTrue($this->hasAttribute('class',$link_theme,$class_theme),newFormattableMarkup('Custom class @class is present on link when requested by #type',['@class'=>$class_theme]));
}
/**
* Tests that link functions support render arrays as 'text'.