public function FileUrlGeneratorTest::urlProvider in CDN 8.3
File
- tests/
src/ Unit/ File/ FileUrlGeneratorTest.php, line 84
Class
- FileUrlGeneratorTest
- @coversDefaultClass \Drupal\cdn\File\FileUrlGenerator @group cdn
Namespace
Drupal\Tests\cdn\Unit\FileCode
public function urlProvider() {
$cases_root = [
'absolute URL' => [
'http://example.com/llama.jpg',
FALSE,
],
'scheme-relative URL' => [
'//example.com/llama.jpg',
FALSE,
],
'shipped file (fallback)' => [
'core/misc/something.else',
'//cdn.example.com/core/misc/something.else',
],
'shipped file (simple)' => [
'core/misc/simple.css',
'//static.example.com/core/misc/simple.css',
],
'shipped file (auto-balanced)' => [
'core/misc/auto-balanced.png',
'//img2.example.com/core/misc/auto-balanced.png',
],
'shipped file with querystring (e.g. in url() in CSS)' => [
'core/misc/something.else?foo=bar&baz=qux',
'//cdn.example.com/core/misc/something.else?foo=bar&baz=qux',
],
'shipped file with fragment (e.g. in url() in CSS)' => [
'core/misc/something.else#llama',
'//cdn.example.com/core/misc/something.else#llama',
],
'shipped file with querystring & fragment (e.g. in url() in CSS)' => [
'core/misc/something.else?foo=bar&baz=qux#llama',
'//cdn.example.com/core/misc/something.else?foo=bar&baz=qux#llama',
],
'managed public file (fallback)' => [
'public://something.else',
'//cdn.example.com/sites/default/files/something.else',
],
'managed public file (spublic public imple)' => [
'public://simple.css',
'//static.example.com/sites/default/files/simple.css',
],
'managed public file (auto-balanced)' => [
'public://auto-balanced.png',
'//img2.example.com/sites/default/files/auto-balanced.png',
],
'managed private file (fallback)' => [
'private://something.else',
FALSE,
],
'unicode' => [
'public://újjáépítésérol — 100% in B&W.jpg',
'//img1.example.com/sites/default/files/%C3%BAjj%C3%A1%C3%A9p%C3%ADt%C3%A9s%C3%A9rol%20%E2%80%94%20100%25%20in%20B%26W.jpg',
],
'encoded' => [
'public://llama%20.jpg',
'//img2.example.com/sites/default/files/llama%2520.jpg',
],
'reserved characters in RFC3986' => [
'public://gendelims :?#[]@ subdelims !$&\'()*+,;=.something',
'//cdn.example.com/sites/default/files/gendelims%20%3A%3F%23%5B%5D%40%20subdelims%20%21%24%26%27%28%29%2A%2B%2C%3B%3D.something',
],
];
$cases_subdir = [
'absolute URL' => [
'http://example.com/llama.jpg',
FALSE,
],
'scheme-relative URL' => [
'//example.com/llama.jpg',
FALSE,
],
'shipped file (fallback)' => [
'core/misc/feed.svg',
'//cdn.example.com/subdir/core/misc/feed.svg',
],
'shipped file (simple)' => [
'core/misc/simple.css',
'//static.example.com/subdir/core/misc/simple.css',
],
'shipped file (auto-balanced)' => [
'core/misc/auto-balanced.png',
'//img2.example.com/subdir/core/misc/auto-balanced.png',
],
'shipped file with querystring (e.g. in url() in CSS)' => [
'core/misc/something.else?foo=bar&baz=qux',
'//cdn.example.com/subdir/core/misc/something.else?foo=bar&baz=qux',
],
'shipped file with fragment (e.g. in url() in CSS)' => [
'core/misc/something.else#llama',
'//cdn.example.com/subdir/core/misc/something.else#llama',
],
'shipped file with querystring & fragment (e.g. in url() in CSS)' => [
'core/misc/something.else?foo=bar&baz=qux#llama',
'//cdn.example.com/subdir/core/misc/something.else?foo=bar&baz=qux#llama',
],
'managed public file (fallback)' => [
'public://something.else',
'//cdn.example.com/subdir/sites/default/files/something.else',
],
'managed public file (simple)' => [
'public://simple.css',
'//static.example.com/subdir/sites/default/files/simple.css',
],
'managed public file (auto-balanced)' => [
'public://auto-balanced.png',
'//img2.example.com/subdir/sites/default/files/auto-balanced.png',
],
'managed private file (fallback)' => [
'private://something.else',
FALSE,
],
'unicode' => [
'public://újjáépítésérol — 100% in B&W.jpg',
'//img1.example.com/subdir/sites/default/files/%C3%BAjj%C3%A1%C3%A9p%C3%ADt%C3%A9s%C3%A9rol%20%E2%80%94%20100%25%20in%20B%26W.jpg',
],
'encoded' => [
'public://llama%20.jpg',
'//img2.example.com/subdir/sites/default/files/llama%2520.jpg',
],
'reserved characters in RFC3986' => [
'public://gendelims :?#[]@ subdelims !$&\'()*+,;=.something',
'//cdn.example.com/subdir/sites/default/files/gendelims%20%3A%3F%23%5B%5D%40%20subdelims%20%21%24%26%27%28%29%2A%2B%2C%3B%3D.something',
],
];
$cases = [];
assert(count($cases_root) === count($cases_subdir));
foreach ($cases_root as $description => $case) {
$cases['root, ' . $description] = array_merge([
'',
], $case);
}
foreach ($cases_subdir as $description => $case) {
$cases['subdir, ' . $description] = array_merge([
'/subdir',
], $case);
}
// Generate `https://`, `http://` and `//` permutations for each case.
$cases_with_scheme = [];
foreach ($cases as $description => $case) {
foreach ([
'https://',
'http://',
'//',
] as $scheme) {
list($base_path, $uri, $expected_result) = $case;
$cases_with_scheme['scheme=' . $scheme . ', ' . $description] = [
$scheme,
$base_path,
$uri,
!is_string($expected_result) ? $expected_result : $scheme . substr($expected_result, 2),
];
}
}
return $cases_with_scheme;
}