%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/bookmarks/vendor/rowbot/url/tests/ |
| Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/bookmarks/vendor/rowbot/url/tests/OriginTest.php |
<?php
declare(strict_types=1);
namespace Rowbot\URL\Tests;
use PHPUnit\Framework\TestCase;
use Rowbot\URL\BasicURLParser;
use Rowbot\URL\Component\Host\HostParser;
use Rowbot\URL\Origin;
use Rowbot\URL\String\Utf8String;
class OriginTest extends TestCase
{
public function originProvider(): array
{
$tuple = Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
null
);
$tupleDomain = Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
'example.org'
);
$opaque = Origin::createOpaqueOrigin();
$urlParser = new BasicURLParser();
return [
[
$tuple,
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
null
),
'same origin' => true,
'same origin-domain' => true,
],
[
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('example.org'), false), 314, null),
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('example.org'), false), 420, null),
'same origin' => false,
'same origin-domain' => false,
],
[
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
314,
'example.org'
),
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
420,
'example.org'
),
'same origin' => false,
'same origin-domain' => true,
],
[
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
null
),
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
'example.org'
),
'same origin' => true,
'same origin-domain' => false,
],
[
Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
null,
'example.org'
),
Origin::createTupleOrigin(
'http',
HostParser::parse(new Utf8String('example.org'), false),
null,
'example.org'
),
'same origin' => false,
'same origin-domain' => false,
],
[
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('127.0.0.1'), false), null, null),
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('1.1.1.1'), false), null, null),
'same origin' => false,
'same origin-domain' => false,
],
[
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('[::1]'), false), null, null),
Origin::createTupleOrigin('https', HostParser::parse(new Utf8String('[1::1]'), false), null, null),
'same origin' => false,
'same origin-domain' => false,
],
[
$urlParser->parse(new Utf8String('blob:https://foo.com'))->getOrigin(),
$urlParser->parse(new Utf8String('https://foo.com'))->getOrigin(),
'same origin' => true,
'same origin-domain' => true,
],
[
$tuple,
$tuple,
'same origin' => true,
'same origin-domain' => true,
],
[
$tuple,
$tupleDomain,
'same origin' => true,
'same origin-domain' => false,
],
[
$opaque,
Origin::createOpaqueOrigin(),
'same origin' => false,
'same origin-domain' => false,
],
[
$opaque,
$opaque,
'same origin' => true,
'same origin-domain' => true,
],
[
$tuple,
$opaque,
'same origin' => false,
'same origin-domain' => false,
],
];
}
/**
* @dataProvider originProvider
*/
public function testSameOriginConcept(
Origin $originA,
Origin $originB,
bool $isSameOrigin,
bool $isSameOriginDomain
): void {
self::assertSame($isSameOrigin, $originA->isSameOrigin($originB));
self::assertSame($isSameOriginDomain, $originA->isSameOriginDomain($originB));
}
public function testEffectiveDomainConcept(): void
{
$origin = Origin::createOpaqueOrigin();
self::assertTrue($origin->isOpaque());
self::assertNull($origin->getEffectiveDomain());
$parser = new BasicURLParser();
$record = $parser->parse(new Utf8String('blob:https://foo.com'));
$origin = $record->getOrigin();
self::assertFalse($origin->isOpaque());
self::assertNotNull($origin->getEffectiveDomain());
self::assertSame('foo.com', $origin->getEffectiveDomain());
$origin = Origin::createTupleOrigin(
'https',
HostParser::parse(new Utf8String('example.org'), false),
314,
'example.org'
);
self::assertFalse($origin->isOpaque());
self::assertNotNull($origin->getEffectiveDomain());
self::assertSame('example.org', $origin->getEffectiveDomain());
}
}