forked from friendica/friendica-addons
283 lines
7.2 KiB
PHP
283 lines
7.2 KiB
PHP
<?php
|
|
|
|
class Sabre_DAV_XMLUtilTest extends PHPUnit_Framework_TestCase {
|
|
|
|
function testToClarkNotation() {
|
|
|
|
$dom = new DOMDocument();
|
|
$dom->loadXML('<?xml version="1.0"?><test1 xmlns="http://www.example.org/">Testdoc</test1>');
|
|
|
|
$this->assertEquals(
|
|
'{http://www.example.org/}test1',
|
|
Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild)
|
|
);
|
|
|
|
}
|
|
|
|
function testToClarkNotation2() {
|
|
|
|
$dom = new DOMDocument();
|
|
$dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="http://www.example.org/">Testdoc</s:test1>');
|
|
|
|
$this->assertEquals(
|
|
'{http://www.example.org/}test1',
|
|
Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild)
|
|
);
|
|
|
|
}
|
|
|
|
function testToClarkNotationDAVNamespace() {
|
|
|
|
$dom = new DOMDocument();
|
|
$dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
|
|
|
|
$this->assertEquals(
|
|
'{DAV:}test1',
|
|
Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild)
|
|
);
|
|
|
|
}
|
|
|
|
function testToClarkNotationNoElem() {
|
|
|
|
$dom = new DOMDocument();
|
|
$dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
|
|
|
|
$this->assertNull(
|
|
Sabre_DAV_XMLUtil::toClarkNotation($dom->firstChild->firstChild)
|
|
);
|
|
|
|
}
|
|
|
|
function testConvertDAVNamespace() {
|
|
|
|
$xml='<?xml version="1.0"?><document xmlns="DAV:">blablabla</document>';
|
|
$this->assertEquals(
|
|
'<?xml version="1.0"?><document xmlns="urn:DAV">blablabla</document>',
|
|
Sabre_DAV_XMLUtil::convertDAVNamespace($xml)
|
|
);
|
|
|
|
}
|
|
|
|
function testConvertDAVNamespace2() {
|
|
|
|
$xml='<?xml version="1.0"?><s:document xmlns:s="DAV:">blablabla</s:document>';
|
|
$this->assertEquals(
|
|
'<?xml version="1.0"?><s:document xmlns:s="urn:DAV">blablabla</s:document>',
|
|
Sabre_DAV_XMLUtil::convertDAVNamespace($xml)
|
|
);
|
|
|
|
}
|
|
|
|
function testConvertDAVNamespace3() {
|
|
|
|
$xml='<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="DAV:" xmlns:z="http://othernamespace">blablabla</s:document>';
|
|
$this->assertEquals(
|
|
'<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="urn:DAV" xmlns:z="http://othernamespace">blablabla</s:document>',
|
|
Sabre_DAV_XMLUtil::convertDAVNamespace($xml)
|
|
);
|
|
|
|
}
|
|
|
|
function testConvertDAVNamespace4() {
|
|
|
|
$xml='<?xml version="1.0"?><document xmlns=\'DAV:\'>blablabla</document>';
|
|
$this->assertEquals(
|
|
'<?xml version="1.0"?><document xmlns=\'urn:DAV\'>blablabla</document>',
|
|
Sabre_DAV_XMLUtil::convertDAVNamespace($xml)
|
|
);
|
|
|
|
}
|
|
|
|
function testConvertDAVNamespaceMixedQuotes() {
|
|
|
|
$xml='<?xml version="1.0"?><document xmlns=\'DAV:" xmlns="Another attribute\'>blablabla</document>';
|
|
$this->assertEquals(
|
|
$xml,
|
|
Sabre_DAV_XMLUtil::convertDAVNamespace($xml)
|
|
);
|
|
|
|
}
|
|
|
|
/**
|
|
* @depends testConvertDAVNamespace
|
|
*/
|
|
function testLoadDOMDocument() {
|
|
|
|
$xml='<?xml version="1.0"?><document></document>';
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$this->assertTrue($dom instanceof DOMDocument);
|
|
|
|
}
|
|
|
|
/**
|
|
* @depends testLoadDOMDocument
|
|
* @expectedException Sabre_DAV_Exception_BadRequest
|
|
*/
|
|
function testLoadDOMDocumentEmpty() {
|
|
|
|
Sabre_DAV_XMLUtil::loadDOMDocument('');
|
|
|
|
}
|
|
|
|
/**
|
|
* @depends testConvertDAVNamespace
|
|
* @expectedException Sabre_DAV_Exception_BadRequest
|
|
*/
|
|
function testLoadDOMDocumentInvalid() {
|
|
|
|
$xml='<?xml version="1.0"?><document></docu';
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
|
|
}
|
|
|
|
/**
|
|
* @depends testLoadDOMDocument
|
|
*/
|
|
function testLoadDOMDocumentUTF16() {
|
|
|
|
$xml='<?xml version="1.0" encoding="UTF-16"?><root xmlns="DAV:">blabla</root>';
|
|
$xml = iconv('UTF-8','UTF-16LE',$xml);
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$this->assertEquals('blabla',$dom->firstChild->nodeValue);
|
|
|
|
}
|
|
|
|
|
|
function testParseProperties() {
|
|
|
|
$xml='<?xml version="1.0"?>
|
|
<root xmlns="DAV:">
|
|
<prop>
|
|
<displayname>Calendars</displayname>
|
|
</prop>
|
|
</root>';
|
|
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$properties = Sabre_DAV_XMLUtil::parseProperties($dom->firstChild);
|
|
|
|
$this->assertEquals(array(
|
|
'{DAV:}displayname' => 'Calendars',
|
|
), $properties);
|
|
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
* @depends testParseProperties
|
|
*/
|
|
function testParsePropertiesEmpty() {
|
|
|
|
$xml='<?xml version="1.0"?>
|
|
<root xmlns="DAV:" xmlns:s="http://www.rooftopsolutions.nl/example">
|
|
<prop>
|
|
<displayname>Calendars</displayname>
|
|
</prop>
|
|
<prop>
|
|
<s:example />
|
|
</prop>
|
|
</root>';
|
|
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$properties = Sabre_DAV_XMLUtil::parseProperties($dom->firstChild);
|
|
|
|
$this->assertEquals(array(
|
|
'{DAV:}displayname' => 'Calendars',
|
|
'{http://www.rooftopsolutions.nl/example}example' => null
|
|
), $properties);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @depends testParseProperties
|
|
*/
|
|
function testParsePropertiesComplex() {
|
|
|
|
$xml='<?xml version="1.0"?>
|
|
<root xmlns="DAV:">
|
|
<prop>
|
|
<displayname>Calendars</displayname>
|
|
</prop>
|
|
<prop>
|
|
<someprop>Complex value <b>right here</b></someprop>
|
|
</prop>
|
|
</root>';
|
|
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$properties = Sabre_DAV_XMLUtil::parseProperties($dom->firstChild);
|
|
|
|
$this->assertEquals(array(
|
|
'{DAV:}displayname' => 'Calendars',
|
|
'{DAV:}someprop' => 'Complex value right here',
|
|
), $properties);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* @depends testParseProperties
|
|
*/
|
|
function testParsePropertiesNoProperties() {
|
|
|
|
$xml='<?xml version="1.0"?>
|
|
<root xmlns="DAV:">
|
|
<prop>
|
|
</prop>
|
|
</root>';
|
|
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$properties = Sabre_DAV_XMLUtil::parseProperties($dom->firstChild);
|
|
|
|
$this->assertEquals(array(), $properties);
|
|
|
|
}
|
|
|
|
function testParsePropertiesMapHref() {
|
|
|
|
$xml='<?xml version="1.0"?>
|
|
<root xmlns="DAV:">
|
|
<prop>
|
|
<displayname>Calendars</displayname>
|
|
</prop>
|
|
<prop>
|
|
<someprop><href>http://sabredav.org/</href></someprop>
|
|
</prop>
|
|
</root>';
|
|
|
|
$dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml);
|
|
$properties = Sabre_DAV_XMLUtil::parseProperties($dom->firstChild,array('{DAV:}someprop'=>'Sabre_DAV_Property_Href'));
|
|
|
|
$this->assertEquals(array(
|
|
'{DAV:}displayname' => 'Calendars',
|
|
'{DAV:}someprop' => new Sabre_DAV_Property_Href('http://sabredav.org/',false),
|
|
), $properties);
|
|
|
|
}
|
|
|
|
function testParseClarkNotation() {
|
|
|
|
$this->assertEquals(array(
|
|
'DAV:',
|
|
'foo',
|
|
), Sabre_DAV_XMLUtil::parseClarkNotation('{DAV:}foo'));
|
|
|
|
$this->assertEquals(array(
|
|
'http://example.org/ns/bla',
|
|
'bar-soap',
|
|
), Sabre_DAV_XMLUtil::parseClarkNotation('{http://example.org/ns/bla}bar-soap'));
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
function testParseClarkNotationFail() {
|
|
|
|
Sabre_DAV_XMLUtil::parseClarkNotation('}foo');
|
|
|
|
}
|
|
|
|
}
|
|
|