/arc/plugins/talis/moriarty/tests/graph.test.php

https://github.com/kwijibo/sparql-proxy · PHP · 308 lines · 229 code · 78 blank · 1 comment · 0 complexity · 876881c0974cedc1a0d2e655d32fcede MD5 · raw file

  1. <?php
  2. require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'constants.inc.php';
  3. require_once MORIARTY_DIR . 'graph.class.php';
  4. require_once MORIARTY_TEST_DIR . 'fakecredentials.class.php';
  5. class GraphTest extends PHPUnit_Framework_TestCase {
  6. var $_empty_changeset = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cs="http://purl.org/vocab/changeset/schema#">
  7. <rdf:Description rdf:nodeID="cs">
  8. <rdf:type rdf:resource="http://purl.org/vocab/changeset/schema#ChangeSet" />
  9. <cs:subjectOfChange rdf:nodeID="a" />
  10. <cs:creatorName>Ian</cs:creatorName>
  11. <cs:changeReason>PHP Client Test</cs:changeReason>
  12. </rdf:Description>
  13. </rdf:RDF>';
  14. var $_rdfxml_doc = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
  15. <foaf:Person>
  16. <foaf:name>scooby</foaf:name>
  17. </foaf:Person>
  18. </rdf:RDF>';
  19. function make_graph($uri, $credentials = null) {
  20. // abstract
  21. }
  22. function test_apply_changeset_rdfxml_posts_to_metabox_uri() {
  23. $fake_request_factory = new FakeRequestFactory();
  24. $fake_request = new FakeHttpRequest( new HttpResponse() );
  25. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  26. $g = $this->make_graph("http://example.org/store/meta");
  27. $g->request_factory = $fake_request_factory;
  28. $response = $g->apply_changeset_rdfxml( $this->_empty_changeset );
  29. $this->assertTrue( $fake_request->was_executed() );
  30. }
  31. function test_apply_changeset_rdfxml_posts_supplied_rdfxml() {
  32. $fake_request_factory = new FakeRequestFactory();
  33. $fake_request = new FakeHttpRequest( new HttpResponse() );
  34. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  35. $g = $this->make_graph("http://example.org/store/meta");
  36. $g->request_factory = $fake_request_factory;
  37. $response = $g->apply_changeset_rdfxml( $this->_empty_changeset );
  38. $this->assertEquals( $this->_empty_changeset , $fake_request->get_body() );
  39. }
  40. function test_apply_changeset_rdfxml_sets_content_type() {
  41. $fake_request_factory = new FakeRequestFactory();
  42. $fake_request = new FakeHttpRequest( new HttpResponse() );
  43. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  44. $g = $this->make_graph("http://example.org/store/meta");
  45. $g->request_factory = $fake_request_factory;
  46. $response = $g->apply_changeset_rdfxml( $this->_empty_changeset );
  47. $this->assertTrue( in_array('Content-Type: application/vnd.talis.changeset+xml', $fake_request->get_headers() ) );
  48. }
  49. function test_apply_changeset_rdfxml_sets_accept() {
  50. $fake_request_factory = new FakeRequestFactory();
  51. $fake_request = new FakeHttpRequest( new HttpResponse() );
  52. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  53. $g = $this->make_graph("http://example.org/store/meta");
  54. $g->request_factory = $fake_request_factory;
  55. $response = $g->apply_changeset_rdfxml( $this->_empty_changeset );
  56. $this->assertTrue( in_array('Accept: */*', $fake_request->get_headers() ) );
  57. }
  58. function test_apply_versioned_changeset_rdfxml_posts_to_metabox_uri() {
  59. $fake_request_factory = new FakeRequestFactory();
  60. $fake_request = new FakeHttpRequest( new HttpResponse() );
  61. $fake_request_factory->register('POST', "http://example.org/store/meta/changesets", $fake_request );
  62. $g = $this->make_graph("http://example.org/store/meta");
  63. $g->request_factory = $fake_request_factory;
  64. $response = $g->apply_versioned_changeset_rdfxml( $this->_empty_changeset );
  65. $this->assertTrue( $fake_request->was_executed() );
  66. }
  67. function test_apply_versioned_changeset_rdfxml_posts_supplied_rdfxml() {
  68. $fake_request_factory = new FakeRequestFactory();
  69. $fake_request = new FakeHttpRequest( new HttpResponse() );
  70. $fake_request_factory->register('POST', "http://example.org/store/meta/changesets", $fake_request );
  71. $g = $this->make_graph("http://example.org/store/meta");
  72. $g->request_factory = $fake_request_factory;
  73. $response = $g->apply_versioned_changeset_rdfxml( $this->_empty_changeset );
  74. $this->assertEquals( $this->_empty_changeset , $fake_request->get_body() );
  75. }
  76. function test_apply_versioned_changeset_rdfxml_sets_content_type() {
  77. $fake_request_factory = new FakeRequestFactory();
  78. $fake_request = new FakeHttpRequest( new HttpResponse() );
  79. $fake_request_factory->register('POST', "http://example.org/store/meta/changesets", $fake_request );
  80. $g = $this->make_graph("http://example.org/store/meta");
  81. $g->request_factory = $fake_request_factory;
  82. $response = $g->apply_versioned_changeset_rdfxml( $this->_empty_changeset );
  83. $this->assertTrue( in_array('Content-Type: application/vnd.talis.changeset+xml', $fake_request->get_headers() ) );
  84. }
  85. function test_apply_versioned_changeset_rdfxml_sets_accept() {
  86. $fake_request_factory = new FakeRequestFactory();
  87. $fake_request = new FakeHttpRequest( new HttpResponse() );
  88. $fake_request_factory->register('POST', "http://example.org/store/meta/changesets", $fake_request );
  89. $g = $this->make_graph("http://example.org/store/meta");
  90. $g->request_factory = $fake_request_factory;
  91. $response = $g->apply_versioned_changeset_rdfxml( $this->_empty_changeset );
  92. $this->assertTrue( in_array('Accept: */*', $fake_request->get_headers() ) );
  93. }
  94. function test_submit_rdfxml_posts_to_metabox_uri() {
  95. $fake_request_factory = new FakeRequestFactory();
  96. $fake_request = new FakeHttpRequest( new HttpResponse() );
  97. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  98. $g = $this->make_graph("http://example.org/store/meta");
  99. $g->request_factory = $fake_request_factory;
  100. $response = $g->submit_rdfxml( $this->_rdfxml_doc );
  101. $this->assertTrue( $fake_request->was_executed() );
  102. }
  103. function test_submit_rdfxml_posts_supplied_rdfxml() {
  104. $fake_request_factory = new FakeRequestFactory();
  105. $fake_request = new FakeHttpRequest( new HttpResponse() );
  106. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  107. $g = $this->make_graph("http://example.org/store/meta");
  108. $g->request_factory = $fake_request_factory;
  109. $response = $g->submit_rdfxml( $this->_rdfxml_doc );
  110. $this->assertEquals( $this->_rdfxml_doc , $fake_request->get_body() );
  111. }
  112. function test_submit_rdfxml_sets_content_type() {
  113. $fake_request_factory = new FakeRequestFactory();
  114. $fake_request = new FakeHttpRequest( new HttpResponse() );
  115. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  116. $g = $this->make_graph("http://example.org/store/meta");
  117. $g->request_factory = $fake_request_factory;
  118. $response = $g->submit_rdfxml( $this->_rdfxml_doc );
  119. $this->assertTrue( in_array('Content-Type: application/rdf+xml', $fake_request->get_headers() ) );
  120. }
  121. function test_submit_rdfxml_sets_accept() {
  122. $fake_request_factory = new FakeRequestFactory();
  123. $fake_request = new FakeHttpRequest( new HttpResponse() );
  124. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  125. $g = $this->make_graph("http://example.org/store/meta");
  126. $g->request_factory = $fake_request_factory;
  127. $response = $g->submit_rdfxml( $this->_rdfxml_doc );
  128. $this->assertTrue( in_array('Accept: */*', $fake_request->get_headers() ) );
  129. }
  130. function test_apply_changeset_rdfxml_uses_credentials() {
  131. $fake_request_factory = new FakeRequestFactory();
  132. $fake_request = new FakeHttpRequest( new HttpResponse() );
  133. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  134. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  135. $g->request_factory = $fake_request_factory;
  136. $response = $g->apply_changeset_rdfxml( $this->_empty_changeset );
  137. $this->assertEquals( "user:pwd" , $fake_request->get_auth() );
  138. }
  139. function test_submit_rdfxml_uses_credentials() {
  140. $fake_request_factory = new FakeRequestFactory();
  141. $fake_request = new FakeHttpRequest( new HttpResponse() );
  142. $fake_request_factory->register('POST', "http://example.org/store/meta", $fake_request );
  143. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  144. $g->request_factory = $fake_request_factory;
  145. $response = $g->submit_rdfxml( $this->_rdfxml_doc );
  146. $this->assertEquals( "user:pwd" , $fake_request->get_auth() );
  147. }
  148. function test_describe_performs_get() {
  149. $fake_request_factory = new FakeRequestFactory();
  150. $fake_request = new FakeHttpRequest( new HttpResponse() );
  151. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  152. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  153. $g->request_factory = $fake_request_factory;
  154. $response = $g->describe( 'http://example.org/scooby' );
  155. $this->assertTrue( $fake_request->was_executed() );
  156. }
  157. function test_describe_sets_accept() {
  158. $fake_request_factory = new FakeRequestFactory();
  159. $fake_request = new FakeHttpRequest( new HttpResponse() );
  160. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  161. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  162. $g->request_factory = $fake_request_factory;
  163. $response = $g->describe( 'http://example.org/scooby' );
  164. $this->assertTrue( in_array('Accept: application/rdf+xml', $fake_request->get_headers() ) );
  165. }
  166. function test_describe_sets_content_type() {
  167. $fake_request_factory = new FakeRequestFactory();
  168. $fake_request = new FakeHttpRequest( new HttpResponse() );
  169. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  170. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  171. $g->request_factory = $fake_request_factory;
  172. $response = $g->describe( 'http://example.org/scooby' );
  173. $this->assertTrue( in_array('Content-Type: application/x-www-form-urlencoded', $fake_request->get_headers() ) );
  174. }
  175. function test_describe_uses_output_param() {
  176. $fake_request_factory = new FakeRequestFactory();
  177. $fake_request = new FakeHttpRequest( new HttpResponse() );
  178. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby') . "&output=turtle", $fake_request );
  179. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  180. $g->request_factory = $fake_request_factory;
  181. $response = $g->describe( 'http://example.org/scooby', 'turtle' );
  182. $this->assertTrue( $fake_request->was_executed() );
  183. }
  184. function test_has_description_performs_head() {
  185. $fake_request_factory = new FakeRequestFactory();
  186. $fake_request = new FakeHttpRequest( new HttpResponse() );
  187. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  188. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  189. $g->request_factory = $fake_request_factory;
  190. $response = $g->has_description( 'http://example.org/scooby' );
  191. $this->assertTrue( $fake_request->was_executed() );
  192. }
  193. function test_has_description_sets_accept() {
  194. $fake_request_factory = new FakeRequestFactory();
  195. $fake_request = new FakeHttpRequest( new HttpResponse() );
  196. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  197. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  198. $g->request_factory = $fake_request_factory;
  199. $response = $g->has_description( 'http://example.org/scooby' );
  200. $this->assertTrue( in_array('Accept: application/rdf+xml', $fake_request->get_headers() ) );
  201. }
  202. function test_has_description_sets_if_match() {
  203. $fake_request_factory = new FakeRequestFactory();
  204. $fake_request = new FakeHttpRequest( new HttpResponse() );
  205. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  206. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  207. $g->request_factory = $fake_request_factory;
  208. $response = $g->has_description( 'http://example.org/scooby' );
  209. $this->assertTrue( in_array('If-Match: *', $fake_request->get_headers() ) );
  210. }
  211. function test_has_description_returns_true_for_200_response() {
  212. $fake_request_factory = new FakeRequestFactory();
  213. $fake_request = new FakeHttpRequest( new HttpResponse(200) );
  214. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  215. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  216. $g->request_factory = $fake_request_factory;
  217. $response = $g->has_description( 'http://example.org/scooby' );
  218. $this->assertTrue( $response );
  219. }
  220. function test_has_description_returns_true_for_412_response() {
  221. $fake_request_factory = new FakeRequestFactory();
  222. $fake_request = new FakeHttpRequest( new HttpResponse(412) );
  223. $fake_request_factory->register('GET', "http://example.org/store/meta?about=" . urlencode('http://example.org/scooby'), $fake_request );
  224. $g = $this->make_graph("http://example.org/store/meta", new FakeCredentials());
  225. $g->request_factory = $fake_request_factory;
  226. $response = $g->has_description( 'http://example.org/scooby' );
  227. $this->assertFalse( $response );
  228. }
  229. }
  230. ?>