Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / link / tests / src / Unit / Plugin / migrate / process / FieldLinkTest.php
diff --git a/web/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php b/web/core/modules/link/tests/src/Unit/Plugin/migrate/process/FieldLinkTest.php
new file mode 100644 (file)
index 0000000..f765f6a
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+
+namespace Drupal\Tests\link\Unit\Plugin\migrate\process;
+
+use Drupal\link\Plugin\migrate\process\FieldLink;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\Plugin\MigrationInterface;
+use Drupal\migrate\Row;
+use Drupal\Tests\UnitTestCase;
+
+/**
+ * @group Link
+ */
+class FieldLinkTest extends UnitTestCase {
+
+  /**
+   * Test the url transformations in the FieldLink process plugin.
+   *
+   * @dataProvider canonicalizeUriDataProvider
+   */
+  public function testCanonicalizeUri($url, $expected, $configuration = []) {
+    $link_plugin = new FieldLink($configuration, '', [], $this->getMock(MigrationInterface::class));
+    $transformed = $link_plugin->transform([
+      'url' => $url,
+      'title' => '',
+      'attributes' => serialize([]),
+    ], $this->getMock(MigrateExecutableInterface::class), $this->getMockBuilder(Row::class)->disableOriginalConstructor()->getMock(), NULL);
+    $this->assertEquals($expected, $transformed['uri']);
+  }
+
+  /**
+   * Data provider for testCanonicalizeUri.
+   */
+  public function canonicalizeUriDataProvider() {
+    return [
+      'Simple front-page' => [
+        '<front>',
+        'internal:/',
+      ],
+      'Front page with query' => [
+        '<front>?query=1',
+        'internal:/?query=1',
+      ],
+      'No leading forward slash' => [
+        'node/10',
+        'internal:/node/10',
+      ],
+      'Leading forward slash' => [
+        '/node/10',
+        'internal:/node/10',
+      ],
+      'Existing scheme' => [
+        'scheme:test',
+        'scheme:test',
+      ],
+      'Absolute URL with protocol prefix' => [
+        'http://www.google.com',
+        'http://www.google.com',
+      ],
+      'Absolute URL without protocol prefix' => [
+        'www.yahoo.com',
+        'http://www.yahoo.com',
+      ],
+      'Absolute URL without protocol prefix nor www' => [
+        'yahoo.com',
+        'https://yahoo.com',
+        ['uri_scheme' => 'https://'],
+      ],
+      'Absolute URL with non-standard characters' => [
+        'http://www.ßÀÑÐ¥ƒå¢ë.com',
+        'http://www.ßÀÑÐ¥ƒå¢ë.com',
+      ],
+      'Absolute URL with non-standard characters, without protocol prefix' => [
+        'www.ÐØÑ¢åþë.com',
+        'http://www.ÐØÑ¢åþë.com',
+      ],
+      'Absolute URL with non-standard top level domain' => [
+        'http://www.example.xxx',
+        'http://www.example.xxx',
+      ],
+      'Internal link with fragment' => [
+        '/node/10#top',
+        'internal:/node/10#top',
+      ],
+      'External link with fragment' => [
+        'http://www.example.com/page#links',
+        'http://www.example.com/page#links',
+      ],
+    ];
+  }
+
+}