]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
test for api/posts/update
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 29 Sep 2010 20:50:38 +0000 (20:50 +0000)
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 29 Sep 2010 20:50:38 +0000 (20:50 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@771 b3834d28-1941-0410-a4f8-b48e95affb8f

tests/AllTests.php
tests/Api/PostsUpdateTest.php [new file with mode: 0644]
www/api/posts_delete.php
www/api/posts_update.php

index 61e1a57bb4a0666817eab60030e60a43b698882f..799f43b1e19294cb953644cbbb52ae0518fa3026 100644 (file)
@@ -66,6 +66,7 @@ class AllTests extends PHPUnit_Framework_TestSuite
         $suite->addTestFile($tdir . '/UserTest.php');
         $suite->addTestFile($tdir . '/Api/ExportCsvTest.php');
         $suite->addTestFile($tdir . '/Api/PostsDeleteTest.php');
+        $suite->addTestFile($tdir . '/Api/PostsUpdateTest.php');
         return $suite;
     }
 
diff --git a/tests/Api/PostsUpdateTest.php b/tests/Api/PostsUpdateTest.php
new file mode 100644 (file)
index 0000000..c497a55
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+/**
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package  SemanticScuttle
+ * @author   Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author   Christian Weiske <cweiske@cweiske.de>
+ * @author   Eric Dane <ericdane@users.sourceforge.net>
+ * @license  GPL http://www.gnu.org/licenses/gpl.html
+ * @link     http://sourceforge.net/projects/semanticscuttle
+ */
+
+require_once dirname(__FILE__) . '/../prepare.php';
+require_once 'HTTP/Request2.php';
+
+if (!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'Api_PostsUpdateTest::main');
+}
+
+/**
+ * Unit tests for the SemanticScuttle last-update time API.
+ *
+ * @category Bookmarking
+ * @package  SemanticScuttle
+ * @author   Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author   Christian Weiske <cweiske@cweiske.de>
+ * @author   Eric Dane <ericdane@users.sourceforge.net>
+ * @license  GPL http://www.gnu.org/licenses/gpl.html
+ * @link     http://sourceforge.net/projects/semanticscuttle
+ */
+class Api_PostsUpdateTest extends TestBaseApi
+{
+    protected $urlPart = 'api/posts/update';
+
+
+
+    /**
+     * Used to run this test class standalone
+     *
+     * @return void
+     */
+    public static function main()
+    {
+        require_once 'PHPUnit/TextUI/TestRunner.php';
+        PHPUnit_TextUI_TestRunner::run(
+            new PHPUnit_Framework_TestSuite(__CLASS__)
+        );
+    }
+
+
+
+    /**
+     * Test if authentication is required when sending no auth data
+     */
+    public function testAuthWithoutAuthData()
+    {
+        $req = $this->getRequest(null, false);
+        $res = $req->send();
+        $this->assertEquals(401, $res->getStatus());
+    }
+
+
+
+    /**
+     * Test if authentication is required when sending wrong user data
+
+     */
+    public function testAuthWrongCredentials()
+    {
+        $req = $this->getRequest(null, false);
+        $req->setAuth('user', 'password', HTTP_Request2::AUTH_BASIC);
+        $res = $req->send();
+        $this->assertEquals(401, $res->getStatus());
+    }
+
+
+
+    /**
+     * See if posts/update behaves correct if there is one bookmark
+     */
+    public function testPostUpdateOneBookmark()
+    {
+        $this->bs->deleteAll();
+
+        list($req, $uId) = $this->getAuthRequest();
+        $bId = $this->addBookmark(
+            $uId, 'http://example.org/tag1', 0,
+            array('unittest', 'tag1')
+        );
+
+        $data = $this->bs->getBookmarks(0, null, $uId);
+        $this->assertEquals(1, $data['total']);
+        $bookmark = $data['bookmarks'][0];
+
+        //send request
+        $res = $req->send();
+
+        $this->assertEquals(200, $res->getStatus());
+        //verify MIME content type
+        $this->assertEquals(
+            'text/xml; charset=utf-8',
+            $res->getHeader('content-type')
+        );
+
+        //verify xml
+        $this->assertTag(
+            array(
+                'tag'        => 'update',
+                'attributes' => array(
+                    'inboxnew' => '0'
+                )
+            ),
+            $res->getBody(),
+            '', false
+        );
+        //check time
+        $xml = simplexml_load_string($res->getBody());
+        $this->assertTrue(isset($xml['time']));
+        $this->assertEquals(
+            strtotime($bookmark['bDatetime']),
+            strtotime(
+                (string)$xml['time']
+            )
+        );
+    }
+
+}
+
+if (PHPUnit_MAIN_METHOD == 'Api_PostsUpdateTest::main') {
+    Api_PostsUpdateTest::main();
+}
+?>
\ No newline at end of file
index 03cc968ef71f6cdcad0036511dcfe3f4981788bb..69b242959354b2ef6a2d0017029cae1d3e4d2a9b 100644 (file)
@@ -19,6 +19,7 @@
  * @author   Eric Dane <ericdane@users.sourceforge.net>
  * @license  GPL http://www.gnu.org/licenses/gpl.html
  * @link     http://sourceforge.net/projects/semanticscuttle
+ * @link     http://www.delicious.com/help/api
  */
 
 // Force HTTP authentication first!
index 4aeedc369e2f2fa82897bbcec909ed92b3cac279..4b080e2ffd6da63ac2a5eaabf6a201198ba971fc 100644 (file)
@@ -1,24 +1,44 @@
 <?php
-// Implements the del.icio.us API request for a user's last update time and date.
-
-// del.icio.us behavior:
-// - doesn't set the Content-Type to text/xml (we do).
+/**
+ * API for retrieving a user's last update time.
+ * That is the time the user changed a bookmark lastly.
+ * The delicious API is implemented here.
+ *
+ * Delicious also returns "the number of new items in
+ *  the user's inbox since it was last visited." - we do
+ * that too, so we are as close at the API as possible,
+ * not breaking delicious clients.
+ *
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package  SemanticScuttle
+ * @author   Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author   Christian Weiske <cweiske@cweiske.de>
+ * @author   Eric Dane <ericdane@users.sourceforge.net>
+ * @license  GPL http://www.gnu.org/licenses/gpl.html
+ * @link     http://sourceforge.net/projects/semanticscuttle
+ * @link     http://www.delicious.com/help/api
+ */
 
 // Force HTTP authentication first!
 $httpContentType = 'text/xml';
 require_once 'httpauth.inc.php';
 
-/* Service creation: only useful services are created */
-$bookmarkservice =SemanticScuttle_Service_Factory::get('Bookmark');
-
-
-// Get the posts relevant to the passed-in variables.
-$bookmarks =& $bookmarkservice->getBookmarks(0, 1, $userservice->getCurrentUserId());
+$bs = SemanticScuttle_Service_Factory::get('Bookmark');
 
+$bookmarks = $bs->getBookmarks(0, 1, $userservice->getCurrentUserId());
 
 // Set up the XML file and output all the tags.
-echo '<?xml version="1.0" standalone="yes" ?'.">\r\n";
-foreach($bookmarks['bookmarks'] as $row) {
-    echo '<update time="'. gmdate('Y-m-d\TH:i:s\Z', strtotime($row['bDatetime'])) .'" />';
+echo '<?xml version="1.0" standalone="yes" ?' . ">\r\n";
+//foreach is used in case there are no bookmarks
+foreach ($bookmarks['bookmarks'] as $row) {
+    echo '<update time="'
+        . gmdate('Y-m-d\TH:i:s\Z', strtotime($row['bDatetime']))
+        . '"'
+        . ' inboxnew="0"'
+        . ' />';
 }
 ?>
\ No newline at end of file