diff options
Diffstat (limited to 'tests/www/bookmarksTest.php')
-rwxr-xr-x | tests/www/bookmarksTest.php | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php new file mode 100755 index 0000000..ac549d8 --- /dev/null +++ b/tests/www/bookmarksTest.php @@ -0,0 +1,156 @@ +<?php +require_once dirname(__FILE__) . '/../prepare.php'; +require_once 'HTTP/Request2.php'; + +class www_bookmarksTest extends TestBaseApi +{ + protected $urlPart = 'bookmarks.php'; + + /** + * Test that the default privacy setting is selected in the Privacy + * drop-down list when adding a new bookmark, sending the form and + * missing the title and the privacy setting. + */ + public function testDefaultPrivacyBookmarksAddMissingTitleMissingPrivacy() + { + $this->setUnittestConfig( + array('defaults' => array('privacy' => 2)) + ); + + list($req, $uId) = $this->getLoggedInRequest(); + $user = $this->us->getUser($uId); + $req->setMethod(HTTP_Request2::METHOD_POST); + $req->setUrl($this->getTestUrl('/' . $user['username'] . '?action=get')); + $req->addPostParameter('submitted', '1'); + $response = $req->send(); + $response_body = $response->getBody(); + + $x = simplexml_load_string($response_body); + $ns = $x->getDocNamespaces(); + $x->registerXPathNamespace('ns', reset($ns)); + + $elements = $x->xpath( + '//ns:select[@name="status"]/ns:option[@selected="selected"]' + ); + $this->assertEquals(1, count($elements), 'No selected status option found'); + $this->assertEquals(2, (string)$elements[0]['value']); + }//end testDefaultPrivacyBookmarksAddMissingTitleMissingPrivacy + + + + /** + * Test that the default privacy setting is selected in the Privacy + * drop-down list when a new bookmark is being created. + */ + public function testDefaultPrivacyBookmarksAdd() + { + $this->setUnittestConfig( + array('defaults' => array('privacy' => 1)) + ); + list($req, $uId) = $this->getLoggedInRequest(); + + $user = $this->us->getUser($uId); + $req->setUrl($this->getTestUrl('/' . $user['username'] . '?action=add')); + $response = $req->send(); + $response_body = $response->getBody(); + $this->assertNotEquals('', $response_body, 'Response is empty'); + + $x = simplexml_load_string($response_body); + $ns = $x->getDocNamespaces(); + $x->registerXPathNamespace('ns', reset($ns)); + + $elements = $x->xpath( + '//ns:select[@name="status"]/ns:option[@selected="selected"]' + ); + $this->assertEquals(1, count($elements), 'No selected status option found'); + $this->assertEquals(1, (string)$elements[0]['value']); + }//end testDefaultPrivacyBookmarksAdd + + + + /** + * Test that the private RSS link exists when a user + * has a private key and is enabled + */ + public function testVerifyPrivateRSSLinkExists() + { + list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true, true); + + $user = $this->us->getUser($uId); + $req->setUrl($this->getTestUrl('/' . $user['username'])); + $response = $req->send(); + $response_body = $response->getBody(); + $this->assertNotEquals('', $response_body, 'Response is empty'); + + $x = simplexml_load_string($response_body); + $ns = $x->getDocNamespaces(); + $x->registerXPathNamespace('ns', reset($ns)); + + $elements = $x->xpath( + '//ns:link[@rel="alternate" and @type="application/rss+xml"]' + ); + $this->assertEquals( + 2, count($elements), 'Number of Links in Head not correct' + ); + $this->assertContains('privateKey=', (string)$elements[1]['href']); + }//end testVerifyPrivateRSSLinkExists + + + + /** + * Test that the private RSS link doesn't exists when a user + * does not have a private key or is not enabled + */ + public function testVerifyPrivateRSSLinkDoesNotExist() + { + list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true); + + $user = $this->us->getUser($uId); + $req->setUrl($this->getTestUrl('/' . $user['username'])); + $response = $req->send(); + $response_body = $response->getBody(); + $this->assertNotEquals('', $response_body, 'Response is empty'); + + $x = simplexml_load_string($response_body); + $ns = $x->getDocNamespaces(); + $x->registerXPathNamespace('ns', reset($ns)); + + $elements = $x->xpath( + '//ns:link[@rel="alternate" and @type="application/rss+xml"]' + ); + $this->assertEquals( + 1, count($elements), 'Number of Links in Head not correct' + ); + $this->assertNotContains('privateKey=', (string)$elements[0]['href']); + }//end testVerifyPrivateRSSLinkDoesNotExist + + + + /** + * We once had the bug that URLs with special characters were escaped too + * often. & -> & + */ + public function testAddressEncoding() + { + $this->addBookmark(null, 'http://example.org?foo&bar=baz'); + + //get rid of bookmarks.php + $this->url = $GLOBALS['unittestUrl']; + + $html = $this->getRequest()->send()->getBody(); + $x = simplexml_load_string($html); + $ns = $x->getDocNamespaces(); + $x->registerXPathNamespace('ns', reset($ns)); + + $elements = $x->xpath('//ns:a[@class="taggedlink"]'); + $this->assertEquals( + 1, count($elements), 'Number of links is not 1' + ); + $this->assertEquals( + 'http://example.org?foo&bar=baz', + (string)$elements[0]['href'] + ); + } + +}//end class www_bookmarksTest +?> |