diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2011-03-25 19:26:21 +0100 | 
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2011-03-25 19:26:21 +0100 | 
| commit | db71e63467a26afb8265979f8c8071935ec349b4 (patch) | |
| tree | d8984f0207c90c47f10698dafd9116162eabf758 /tests | |
| parent | d6e99db40dc88de1782099b30941075ebc8dfa97 (diff) | |
| download | semanticscuttle-db71e63467a26afb8265979f8c8071935ec349b4.tar.gz semanticscuttle-db71e63467a26afb8265979f8c8071935ec349b4.tar.bz2 | |
begin with ajax unittests - but they do not work yet
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/TestBaseApi.php | 36 | ||||
| -rw-r--r-- | tests/ajax/GetContactTagsTest.php | 73 | 
2 files changed, 109 insertions, 0 deletions
| diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php index dacdecd..b7c1921 100644 --- a/tests/TestBaseApi.php +++ b/tests/TestBaseApi.php @@ -84,6 +84,9 @@ class TestBaseApi extends TestBase       * the request object with authentication details, so that       * the user is logged in.       * +     * Useful for HTTP API methods only, cannot be used with +     * "normal" HTML pages since they do not support HTTP auth. +     *       * @param string $urlSuffix Suffix for the URL       * @param mixed  $auth      If user authentication is needed (true/false)       *                          or array with username and password @@ -109,5 +112,38 @@ class TestBaseApi extends TestBase          return array($req, $uid);      } + + +    /** +     * Creates a user and a HTTP_Request2 object, does a normal login +     * and prepares the cookies for the HTTP request object so that +     * the user is seen as logged in when requesting any HTML page. +     * +     * Useful for testing HTML pages or ajax URLs. +     * +     * @param string $urlSuffix Suffix for the URL +     * @param mixed  $auth      If user authentication is needed (true/false) +     *                          or array with username and password +     * +     * @return array(HTTP_Request2, integer) HTTP request object and user id +     * +     * @uses getRequest() +     */ +    protected function getLoggedInRequest($urlSuffix = null, $auth = true) +    { +        $req = $this->getRequest($urlSuffix); +        if (is_array($auth)) { +            list($username, $password) = $auth; +        } else { +            $username = 'testuser'; +            $password = 'testpassword'; +        } +        $uid = $this->addUser($username, $password); + +        //FIXME: login via the login form, check if it worked +        //FIXME: prepare new request with cookie +        return array($req, $uid); +    } +  }  ?>
\ No newline at end of file diff --git a/tests/ajax/GetContactTagsTest.php b/tests/ajax/GetContactTagsTest.php new file mode 100644 index 0000000..7f46888 --- /dev/null +++ b/tests/ajax/GetContactTagsTest.php @@ -0,0 +1,73 @@ +<?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'; + +/** + * Unit tests for the ajax getcontacttags.php script + * + * @category Bookmarking + * @package  SemanticScuttle + * @author   Christian Weiske <cweiske@cweiske.de> + * @license  GPL http://www.gnu.org/licenses/gpl.html + * @link     http://sourceforge.net/projects/semanticscuttle + */ +class ajax_GetContactTagsTest extends TestBaseApi +{ +    protected $urlPart = 'ajax/getcontacttags.php'; + + +    /** +     * If no user is logged in, no data are returned +     */ +    public function testNoUserLoggedIn() +    { +        $res = $this->getRequest()->send(); +        $this->assertEquals(200, $res->getStatus()); +        $this->assertEquals( +            'application/json; charset=utf-8', +            $res->getHeader('content-type') +        ); +        $data = json_decode($res->getBody()); +        $this->assertInternalType('array', $data); +        $this->assertEquals(0, count($data)); +    } + + +    public function testUserLoggedIn() +    { +        list($req, $uId) = $this->getAuthRequest(); +        $this->addBookmark($uId, null, 0, array('public')); +        $this->addBookmark($uId, null, 1, array('shared')); +        $this->addBookmark($uId, null, 2, array('private')); +         +        $res = $req->send(); +        $this->assertEquals(200, $res->getStatus()); +        $this->assertEquals( +            'application/json; charset=utf-8', +            $res->getHeader('content-type') +        ); +        $data = json_decode($res->getBody()); +        $this->assertInternalType('array', $data); +        $this->assertEquals(3, count($data)); +        $this->assertContains('public', $data); +        $this->assertContains('shared', $data); +        $this->assertContains('private', $data); +    } +} + + +?>
\ No newline at end of file | 
