friendica-addons/dav/SabreDAV/tests/Sabre/DAV/XMLUtilTest.php
2012-06-03 18:19:28 +00:00

282 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');
}
}