Skip to content
Extraits de code Groupes Projets
Valider 992df67c rédigé par marcimat's avatar marcimat Validation de marcimat
Parcourir les fichiers

tests: tests liens_ouvrants en phpunit

parent 80dea2c3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<?php
declare(strict_types=1);
namespace Spip\Test\Urls;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
class LiensOuvrantsTest extends TestCase
{
public static function setUpBeforeClass(): void {
find_in_path('./inc/utils.php', '', true);
}
#[DataProvider('providerAttendus')]
public function testAttendus($text) {
$link = liens_ouvrants($text);
$this->assertEquals('_blank', extraire_attribut($link, 'target'), sprintf('Lien ouvrant "%s" n’a pas target', $link));
$this->assertStringContainsString('noopener', extraire_attribut($link, 'rel'), sprintf('Lien ouvrant "%s" n’a pas noopener', $link));
$this->assertStringContainsString('noreferrer', extraire_attribut($link, 'rel'), sprintf('Lien ouvrant "%s" n’a pas noreferrer', $link));
}
public static function providerAttendus(): array {
return [
'lien spip #1' => [
'text' => '<a href="https://www.spip.net/" class="spip_out">link</a>',
],
'lien spip #2' => [
'text' => '<a href="https://www.spip.net/" class="spip_url">link</a>',
],
];
}
#[DataProvider('providerNonAttendus')]
public function testNonAttendus($text) {
$link = liens_ouvrants($text);
$this->assertNull(extraire_attribut($link, 'target'), sprintf('Lien "%s" a un target imprevu', $link));
$this->assertNull(extraire_attribut($link, 'rel'), sprintf('Lien "%s" a un rel imprevu', $link));
}
public static function providerNonAttendus(): array {
return [
'non spip #1' => [
'expected' => null,
'text' => '<a href="https://www.spip.net/">link</a>',
],
'non spip #2' => [
'expected' => null,
'text' => '<a href="https://www.spip.net/" class="spip_in">link</a>',
],
'non spip #3' => [
'expected' => null,
'text' => '<a href="https://www.spip.net/" class="spip_outside">link</a>',
],
'non spip #4' => [
'expected' => null,
'text' => '<a href="https://www.spip.net/" class="spip_urls">link</a>',
],
];
}
#[DataProvider('providerLiensOuvrantsPropre')]
public function testLiensOuvrantsPropre($text) {
$link = liens_ouvrants(propre($text));
$this->assertEquals('_blank', extraire_attribut($link, 'target'));
$this->assertStringContainsString('noopener', extraire_attribut($link, 'rel'));
$this->assertStringContainsString('noreferrer', extraire_attribut($link, 'rel'));
}
public static function providerLiensOuvrantsPropre(): array {
return [
'propre lien http' => [
'text' => 'Ceci est un lien [ouvrant->http://www.spip.net/ar] rondtudiou.',
],
'propre lien https' => [
'text' => 'Ceci est un lien [ouvrant->https://www.spip.net/ar] rondtudiou.',
]
];
}
}
[(#REM)
Teste le filtre |liens_ouvrants
]
#SET{texte,
Ceci est un lien [ouvrant->http://www.spip.net/ar] rondtudiou.
}
[(#GET{texte}|propre
|liens_ouvrants
|match{<a\s.*target=('|")_blank('|").*>}
|?{OK}
|sinon{#GET{texte}|propre})]
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter