diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2011-03-24 19:07:50 +0100 | 
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2011-03-24 19:07:50 +0100 | 
| commit | 30f84b3ca3242f00926f30c08ece4405be8b61fc (patch) | |
| tree | 23717c92ca89f306845d02521d61257d38ad4b3a | |
| parent | 3f57237b88688f956add02bc18cd4642082fb526 (diff) | |
| download | semanticscuttle-30f84b3ca3242f00926f30c08ece4405be8b61fc.tar.gz semanticscuttle-30f84b3ca3242f00926f30c08ece4405be8b61fc.tar.bz2  | |
fix privacy protection issue when fetching tags of several users
| -rw-r--r-- | src/SemanticScuttle/Service/Bookmark2Tag.php | 2 | ||||
| -rw-r--r-- | tests/Bookmark2TagTest.php | 69 | 
2 files changed, 50 insertions, 21 deletions
diff --git a/src/SemanticScuttle/Service/Bookmark2Tag.php b/src/SemanticScuttle/Service/Bookmark2Tag.php index b69cfd4..21ea0d5 100644 --- a/src/SemanticScuttle/Service/Bookmark2Tag.php +++ b/src/SemanticScuttle/Service/Bookmark2Tag.php @@ -565,7 +565,7 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService                  $query .= ' OR B.uId = ' . $this->db->sql_escape($u)                      . ' AND B.bId = T.bId';              } -            $query .= ' )'; +            $query .= ' )' . $privacy;          } else {              $query .= ' B.uId = ' . $this->db->sql_escape($user)                  . ' AND B.bId = T.bId' . $privacy; diff --git a/tests/Bookmark2TagTest.php b/tests/Bookmark2TagTest.php index ad64bf6..e2020dc 100644 --- a/tests/Bookmark2TagTest.php +++ b/tests/Bookmark2TagTest.php @@ -37,6 +37,26 @@ class Bookmark2TagTest extends TestBase      protected $tts; +    /** +     * Create a bookmark. Like addBookmark(), just with other paramter order +     * to make some tests in that class easier to write. +     * +     * @param integer $user    User ID the bookmark shall belong +     * @param array   $tags    Array of tags to attach. If "null" is given, +     *                         it will automatically be "unittest" +     * @param string  $date    strtotime-compatible string +     * @param string  $title   Bookmark title +     * +     * @return integer ID of bookmark +     */ +    protected function addTagBookmark($user, $tags, $date = null, $title = null) +    { +        return $this->addBookmark( +            $user, null, 0, $tags, $title, $date +        ); +    } + +      /**       * Used to run this test class standalone @@ -207,25 +227,6 @@ class Bookmark2TagTest extends TestBase      } -    /** -     * Create a bookmark -     * -     * @param integer $user    User ID the bookmark shall belong -     * @param array   $tags    Array of tags to attach. If "null" is given, -     *                         it will automatically be "unittest" -     * @param string  $date    strtotime-compatible string -     * @param string  $title   Bookmark title -     * -     * @return integer ID of bookmark -     */ -    protected function addTagBookmark($user, $tags, $date = null, $title = null) -    { -        return $this->addBookmark( -            $user, null, 0, $tags, $title, $date -        ); -    } - -      /**       * Fetch the most popular tags in descending order @@ -398,10 +399,12 @@ class Bookmark2TagTest extends TestBase          $this->assertContains(array('tag' => 'thr', 'bCount' => '1'), $arTags);      } + +      /**       * @covers SemanticScuttle_Service_Bookmark2Tag::getPopularTags       */ -    public function testGetPopularTagsPublicOnly() +    public function testGetPopularTagsPublicOnlyNoUser()      {          $user1 = $this->addUser();          $this->addBookmark($user1, null, 0, array('one')); @@ -416,7 +419,13 @@ class Bookmark2TagTest extends TestBase              ),              $arTags          ); +    } +    /** +     * @covers SemanticScuttle_Service_Bookmark2Tag::getPopularTags +     */ +    public function testGetPopularTagsPublicOnlySingleUser() +    {          $user1 = $this->addUser();          $this->addBookmark($user1, null, 0, array('one'));          $this->addBookmark($user1, null, 1, array('one', 'two')); @@ -435,6 +444,26 @@ class Bookmark2TagTest extends TestBase      /**       * @covers SemanticScuttle_Service_Bookmark2Tag::getPopularTags       */ +    public function testGetPopularTagsPublicOnlySeveralUsers() +    { +        $user1 = $this->addUser(); +        $user2 = $this->addUser(); +        $this->addBookmark($user1, null, 0, array('one')); +        $this->addBookmark($user1, null, 1, array('one', 'two')); +        $this->addBookmark($user1, null, 2, array('thr')); +        $this->addBookmark($user2, null, 0, array('fou')); +        $this->addBookmark($user2, null, 1, array('fiv')); +        $this->addBookmark($user2, null, 2, array('six')); + +        $arTags = $this->b2ts->getPopularTags(array($user1, $user2)); +        $this->assertEquals(2, count($arTags)); +        $this->assertContains(array('tag' => 'one', 'bCount' => '1'), $arTags); +        $this->assertContains(array('tag' => 'fou', 'bCount' => '1'), $arTags); +    } + +    /** +     * @covers SemanticScuttle_Service_Bookmark2Tag::getPopularTags +     */      public function testGetPopularTagsUserPrivatesWhenLoggedIn()      {          $user1 = $this->addUser();  | 
