Allow deeper nesting of hostnames
This commit is contained in:
@@ -20,7 +20,7 @@ class COIDParser {
|
|||||||
const COID_VERSIONED = 3;
|
const COID_VERSIONED = 3;
|
||||||
const COID_VERSION_WILDCARD = 4;
|
const COID_VERSION_WILDCARD = 4;
|
||||||
|
|
||||||
const REGEX_HOSTNAME = "/^([a-z0-9-]+\.)?[a-z0-9-]+\.[a-z]+$/";
|
const REGEX_HOSTNAME = "/^([a-z0-9-]+\.)*[a-z0-9-]+\.[a-z]+$/";
|
||||||
const REGEX_SEGMENT = "/^[A-Za-z-_0-9\.]+$/";
|
const REGEX_SEGMENT = "/^[A-Za-z-_0-9\.]+$/";
|
||||||
const REGEX_VERSION_WILDCARD = "/^((\^|~)(\d+\.)?\d|(\d+\.){1,2}\*)$/";
|
const REGEX_VERSION_WILDCARD = "/^((\^|~)(\d+\.)?\d|(\d+\.){1,2}\*)$/";
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,21 @@ class COIDParserTest extends \PHPUnit\Framework\TestCase {
|
|||||||
public function testRootCOID() {
|
public function testRootCOID() {
|
||||||
$coid = new IRI('coid://example.com');
|
$coid = new IRI('coid://example.com');
|
||||||
$this->assertEquals(COIDParser::COID_ROOT, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_ROOT, COIDParser::getType($coid));
|
||||||
|
|
||||||
|
$coid = new IRI('coid://subdomain.example.com');
|
||||||
|
$this->assertEquals(COIDParser::COID_ROOT, COIDParser::getType($coid));
|
||||||
|
|
||||||
|
$coid = new IRI('coid://anotherlevel.subdomain.example.com');
|
||||||
|
$this->assertEquals(COIDParser::COID_ROOT, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInvalidRootCOID() {
|
public function testInvalidRootCOID() {
|
||||||
$coid = new IRI('coid://example');
|
$coid = new IRI('coid://example');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://exämple.com');
|
$coid = new IRI('coid://exämple.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://ex&mple.com');
|
$coid = new IRI('coid://ex&mple.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
@@ -27,34 +35,41 @@ class COIDParserTest extends \PHPUnit\Framework\TestCase {
|
|||||||
public function testInvalidCOID() {
|
public function testInvalidCOID() {
|
||||||
$coid = new IRI('http://example.com');
|
$coid = new IRI('http://example.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('example.com');
|
$coid = new IRI('example.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('COID://example.com');
|
$coid = new IRI('COID://example.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('Coid://example.com');
|
$coid = new IRI('Coid://example.com');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://EXAMPLE.COM');
|
$coid = new IRI('coid://EXAMPLE.COM');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://exAMPle.CoM');
|
$coid = new IRI('coid://exAMPle.CoM');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUnversionedCOID() {
|
public function testUnversionedCOID() {
|
||||||
$coid = new IRI('coid://example.com/Example');
|
$coid = new IRI('coid://subdomain.example.com/Example');
|
||||||
$this->assertEquals(COIDParser::COID_UNVERSIONED, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_UNVERSIONED, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInvalidUnversionedCOID() {
|
public function testInvalidUnversionedCOID() {
|
||||||
$coid = new IRI('coid://example.com/Exümple');
|
$coid = new IRI('coid://example.com/Exümple');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://example.com/Examp%e');
|
$coid = new IRI('coid://example.com/Examp%e');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testVersionedCOID() {
|
public function testVersionedCOID() {
|
||||||
$coid = new IRI('coid://example.com/Example/1.0');
|
$coid = new IRI('coid://anotherlevel.subdomain.example.com/Example/1.0');
|
||||||
$this->assertEquals(COIDParser::COID_VERSIONED, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_VERSIONED, COIDParser::getType($coid));
|
||||||
$coid = new IRI('coid://example.com/Example/alpha');
|
|
||||||
|
$coid = new IRI('coid://subdomain.example.com/Example/alpha');
|
||||||
$this->assertEquals(COIDParser::COID_VERSIONED, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_VERSIONED, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,8 +81,10 @@ class COIDParserTest extends \PHPUnit\Framework\TestCase {
|
|||||||
public function testVersionWildcardCOID() {
|
public function testVersionWildcardCOID() {
|
||||||
$coid = new IRI('coid://example.com/Example/^1.0');
|
$coid = new IRI('coid://example.com/Example/^1.0');
|
||||||
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://example.com/Example/~1.0');
|
$coid = new IRI('coid://example.com/Example/~1.0');
|
||||||
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://example.com/Example/1.*');
|
$coid = new IRI('coid://example.com/Example/1.*');
|
||||||
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_VERSION_WILDCARD, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
@@ -75,6 +92,7 @@ class COIDParserTest extends \PHPUnit\Framework\TestCase {
|
|||||||
public function testInvalidVersionWildcardCOID() {
|
public function testInvalidVersionWildcardCOID() {
|
||||||
$coid = new IRI('coid://example.com/Example/^1.*');
|
$coid = new IRI('coid://example.com/Example/^1.*');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
|
|
||||||
$coid = new IRI('coid://example.com/Example/1.a.*');
|
$coid = new IRI('coid://example.com/Example/1.a.*');
|
||||||
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
$this->assertEquals(COIDParser::COID_INVALID, COIDParser::getType($coid));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user