]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
first tests for api/posts/add
authorcweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 29 Sep 2010 20:52:01 +0000 (20:52 +0000)
committercweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f>
Wed, 29 Sep 2010 20:52:01 +0000 (20:52 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@772 b3834d28-1941-0410-a4f8-b48e95affb8f

tests/AllTests.php
tests/Api/PostsAddTest.php [new file with mode: 0644]
www/api/posts_add.php

index 799f43b1e19294cb953644cbbb52ae0518fa3026..ded6824d569d2fa72af5d4e083652e6a007fb2d1 100644 (file)
@@ -65,6 +65,7 @@ class AllTests extends PHPUnit_Framework_TestSuite
         $suite->addTestFile($tdir . '/VoteTest.php');
         $suite->addTestFile($tdir . '/UserTest.php');
         $suite->addTestFile($tdir . '/Api/ExportCsvTest.php');
+        $suite->addTestFile($tdir . '/Api/PostsAddTest.php');
         $suite->addTestFile($tdir . '/Api/PostsDeleteTest.php');
         $suite->addTestFile($tdir . '/Api/PostsUpdateTest.php');
         return $suite;
diff --git a/tests/Api/PostsAddTest.php b/tests/Api/PostsAddTest.php
new file mode 100644 (file)
index 0000000..1db8af9
--- /dev/null
@@ -0,0 +1,197 @@
+<?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_PostsAddTest::main');
+}
+
+/**
+ * Unit tests for the SemanticScuttle post addition 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_PostsAddTest extends TestBaseApi
+{
+    protected $urlPart = 'api/posts/add';
+
+
+
+    /**
+     * 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());
+    }
+
+
+
+    /**
+     * Test if adding a bookmark via POST works.
+     */
+    public function testAddBookmarkPost()
+    {
+        $this->bs->deleteAll();
+
+        $bmUrl         = 'http://example.org/tag-1';
+        $bmTags        = array('foo', 'bar', 'baz');
+        $bmDatetime    = '2010-09-08T03:02:01Z';
+        $bmTitle       = 'This is a foo title';
+        $bmDescription = <<<TXT
+This is the description of
+my bookmark with some
+newlines and <some>?&\$ÄÖ'"§special"'
+characters
+TXT;
+
+        list($req, $uId) = $this->getAuthRequest();
+        $req->setMethod(HTTP_Request2::METHOD_POST);
+        $req->addPostParameter('url', $bmUrl);
+        $req->addPostParameter('description', $bmTitle);
+        $req->addPostParameter('extended', $bmDescription);
+        $req->addPostParameter('tags', implode(' ', $bmTags));
+        $res = $req->send();
+
+        //all should be well
+        $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'        => 'result',
+                'attributes' => array('code' => 'done')
+            ),
+            $res->getBody(),
+            null, false
+        );
+
+        //user should have one bookmark now
+        $data = $this->bs->getBookmarks(0, null, $uId);
+        $this->assertEquals(1, $data['total']);
+        $bm = $data['bookmarks'][0];
+
+        $this->assertEquals($bmUrl, $bm['bAddress']);
+        $this->assertEquals($bmTitle, $bm['bTitle']);
+        $this->assertEquals($bmDescription, $bm['bDescription']);
+        $this->assertEquals($bmTags, $bm['tags']);
+    }
+
+
+
+    /**
+     * Test if adding a bookmark via GET works.
+     */
+    public function testAddBookmarkGet()
+    {
+        $this->bs->deleteAll();
+
+        $bmUrl         = 'http://example.org/tag-1';
+        $bmTags        = array('foo', 'bar', 'baz');
+        $bmDatetime    = '2010-09-08T03:02:01Z';
+        $bmTitle       = 'This is a foo title';
+        $bmDescription = <<<TXT
+This is the description of
+my bookmark with some
+newlines and <some>?&\$ÄÖ'"§special"'
+characters
+TXT;
+
+        list($req, $uId) = $this->getAuthRequest(
+            '?url=' . urlencode($bmUrl)
+            . '&description=' . urlencode($bmTitle)
+            . '&extended=' . urlencode($bmDescription)
+            . '&tags=' . urlencode(implode(' ', $bmTags))
+        );
+        $res = $req->send();
+
+        //all should be well
+        $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'        => 'result',
+                'attributes' => array('code' => 'done')
+            ),
+            $res->getBody(),
+            null, false
+        );
+
+        //user should have one bookmark now
+        $data = $this->bs->getBookmarks(0, null, $uId);
+        $this->assertEquals(1, $data['total']);
+        $bm = $data['bookmarks'][0];
+
+        $this->assertEquals($bmUrl, $bm['bAddress']);
+        $this->assertEquals($bmTitle, $bm['bTitle']);
+        $this->assertEquals($bmDescription, $bm['bDescription']);
+        $this->assertEquals($bmTags, $bm['tags']);
+    }
+
+}
+
+if (PHPUnit_MAIN_METHOD == 'Api_PostsAddTest::main') {
+    Api_PostsAddTest::main();
+}
+?>
\ No newline at end of file
index 59f7dce026f53a82cafffecc26056c251b10340b..b392a8015f9068559c51e2d907491023c81028c5 100644 (file)
@@ -5,6 +5,8 @@
 // del.icio.us behavior:
 // - tags can't have spaces
 // - address and description are mandatory
+// - description == title in semanticscuttle
+// - extended == description in semanticscuttle
 
 // Scuttle behavior:
 // - Additional 'status' variable for privacy