diff options
author | Christian Weiske <cweiske@cweiske.de> | 2011-05-02 18:07:15 +0200 |
---|---|---|
committer | Christian Weiske <cweiske@cweiske.de> | 2011-05-02 18:07:15 +0200 |
commit | 8be81abfe6193e221afcdc35582d34505797a7b8 (patch) | |
tree | 95ae7e30d40596f27875adb2f96a15fc827f9f86 /tests/Api/OpenSearchTest.php | |
parent | f629d081ddf52e3cb83ffbfc973a97adc691790c (diff) | |
parent | 40b4674e471f8b0fbdc77a26eec86018e2ab03ea (diff) | |
download | semanticscuttle-8be81abfe6193e221afcdc35582d34505797a7b8.tar.gz semanticscuttle-8be81abfe6193e221afcdc35582d34505797a7b8.tar.bz2 |
merge master
Diffstat (limited to 'tests/Api/OpenSearchTest.php')
-rw-r--r-- | tests/Api/OpenSearchTest.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/Api/OpenSearchTest.php b/tests/Api/OpenSearchTest.php new file mode 100644 index 0000000..050713b --- /dev/null +++ b/tests/Api/OpenSearchTest.php @@ -0,0 +1,76 @@ +<?php + + +class Api_OpenSearchTest extends TestBaseApi +{ + protected $urlPart = ''; + + + public function testOpenSearchAvailable() + { + $req = $this->getRequest(); + $xhtml = $req->send()->getBody(); + + $xml = simplexml_load_string($xhtml); + $xml->registerXPathNamespace('h', reset($xml->getDocNamespaces())); + + $this->assertInstanceOf( + 'SimpleXMLElement', $xml, + 'SemanticScuttle main page XHTML could not be loaded - maybe invalid?' + ); + + $arElements = $xml->xpath( + '//h:head/h:link' + . '[@rel="search" and @type="application/opensearchdescription+xml"]' + ); + $this->assertEquals( + 1, count($arElements), + 'OpenSearch link in HTML is missing' + ); + $searchDescUrl = (string)$arElements[0]['href']; + $this->assertNotNull($searchDescUrl, 'Search description URL is empty'); + + $req = new HTTP_Request2($searchDescUrl); + $res = $req->send(); + $this->assertEquals( + 200, $res->getStatus(), + 'HTTP response status code is not 200' + ); + + $this->assertEquals( + $GLOBALS['unittestUrl'] . 'api/opensearch.php', + $searchDescUrl, + 'OpenSearch URL found, but it is not the expected one.' + . ' It may be that you misconfigured the "unittestUrl" setting' + ); + } + + public function testOpenSearchContentType() + { + $res = $this->getRequest('api/opensearch.php')->send(); + $this->assertEquals( + 'text/xml; charset=utf-8', + $res->getHeader('content-type') + ); + } + + public function testOpenSearchSearchUrl() + { + $xml = $this->getRequest('api/opensearch.php')->send()->getBody(); + $x = simplexml_load_string($xml); + $x->registerXPathNamespace('os', reset($x->getDocNamespaces())); + + $arElements = $x->xpath('//os:Url[@type="text/html"]'); + $this->assertEquals( + 1, count($arElements), + 'Url in OpenSearch description is missing' + ); + $this->assertEquals( + $GLOBALS['unittestUrl'] . 'search.php/all/{searchTerms}', + (string)$arElements[0]['template'] + ); + } + +} + +?>
\ No newline at end of file |