From ec345f7a1343769abdf3f5920a0732b24726b733 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Fri, 13 May 2011 14:26:51 -0400
Subject: new privatekey2 branch with privatekey changes
---
tests/BookmarkTest.php | 46 +++++++
tests/TestBase.php | 13 +-
tests/UserTest.php | 333 ++++++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 386 insertions(+), 6 deletions(-)
(limited to 'tests')
diff --git a/tests/BookmarkTest.php b/tests/BookmarkTest.php
index b50dab2..44a82d9 100644
--- a/tests/BookmarkTest.php
+++ b/tests/BookmarkTest.php
@@ -1330,5 +1330,51 @@ class BookmarkTest extends TestBase
+ /**
+ * Test private bookmarks
+ *
+ * @return void
+ */
+ public function testPrivateBookmarks()
+ {
+ $uid = $this->addUser();
+ /* create private bookmark */
+ $this->bs->addBookmark(
+ 'http://test', 'test', 'desc', 'note',
+ 2,//private
+ array(), null, null, false, false, $uid
+ );
+ /* create public bookmark */
+ $this->bs->addBookmark(
+ 'http://example.org', 'title', 'desc', 'priv',
+ 0,//public
+ array(), null, null, false, false, $uid
+ );
+
+ $this->assertEquals(1, $this->bs->countBookmarks($uid, 'public'));
+ $this->assertEquals(1, $this->bs->countBookmarks($uid, 'private'));
+ $this->assertEquals(0, $this->bs->countBookmarks($uid, 'shared'));
+ $this->assertEquals(2, $this->bs->countBookmarks($uid, 'all'));
+
+ $this->us->setCurrentUserId($uid);
+ $bookmarks = $this->bs->getBookmarks();
+ // first record should be private bookmark
+ $b0 = $bookmarks['bookmarks'][0];
+ $this->assertEquals('test', $b0['bTitle']);
+ // second record should be public bookmark
+ $b0 = $bookmarks['bookmarks'][1];
+ $this->assertEquals('title', $b0['bTitle']);
+
+ // test non authenticated query
+ $this->us->setCurrentUserId(null);
+ $bookmarks = $this->bs->getBookmarks();
+ // should only result in one link - public
+ $b2 = $bookmarks['bookmarks'][0];
+ $this->assertEquals('title', $b2['bTitle']);
+ // there should be no second record
+ $this->assertEquals(1,count($bookmarks['bookmarks']));
+
+ }
+
}
?>
diff --git a/tests/TestBase.php b/tests/TestBase.php
index 095f32d..1331ec6 100644
--- a/tests/TestBase.php
+++ b/tests/TestBase.php
@@ -78,14 +78,15 @@ class TestBase extends PHPUnit_Framework_TestCase
*
* @param string $username Username
* @param string $password Password
+ * @param string $pkey Private Key
*
* @return integer ID of user
*
* @uses addUserData()
*/
- protected function addUser($username = null, $password = null)
+ protected function addUser($username = null, $password = null, $pkey = null)
{
- return reset($this->addUserData($username, $password));
+ return reset($this->addUserData($username, $password, $pkey));
}
@@ -95,10 +96,11 @@ class TestBase extends PHPUnit_Framework_TestCase
*
* @param string $username Username
* @param string $password Password
+ * @param string $pkey Private Key
*
* @return array ID of user, Name of user, password of user
*/
- protected function addUserData($username = null, $password = null)
+ protected function addUserData($username = null, $password = null, $pkey = null)
{
$us = SemanticScuttle_Service_Factory::get('User');
$rand = rand();
@@ -113,7 +115,8 @@ class TestBase extends PHPUnit_Framework_TestCase
$uid = $us->addUser(
$username,
$password,
- 'unittest-' . $rand . '@example.org'
+ 'unittest-' . $rand . '@example.org',
+ $pkey
);
return array($uid, $username, $password);
}
@@ -148,4 +151,4 @@ class TestBase extends PHPUnit_Framework_TestCase
}
}
-?>
\ No newline at end of file
+?>
diff --git a/tests/UserTest.php b/tests/UserTest.php
index 2f57112..230167d 100644
--- a/tests/UserTest.php
+++ b/tests/UserTest.php
@@ -34,6 +34,157 @@ class UserTest extends TestBase
+ /**
+ * @covers SemanticScuttle_Service_User::addUser
+ */
+ public function testAddUserPrivateKey()
+ {
+ $name = substr(md5(uniqid()), 0, 6);
+ $pkey = 'my-privatekey';
+ $id = $this->us->addUser(
+ $name, uniqid(), 'foo@example.org', $pkey
+ );
+ $this->assertNotEquals(false, $id);
+ $this->assertInternalType('integer', $id);
+
+ $arUser = $this->us->getUserByPrivateKey($pkey);
+ $this->assertNotEquals(false, $arUser, 'user not found by private key');
+ $this->assertEquals($id, $arUser['uId'], 'wrong user loaded');
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserFalseWhenIdNotNumeric()
+ {
+ $this->assertFalse(
+ $this->us->updateUser('foo', null, null, null, null, null)
+ );
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserPrivateKeyNewKeyEnabled()
+ {
+ $pkey = 'testUpdateUserPrivateKeyNewKey12';
+ $uid = $this->addUser();
+
+ $this->assertTrue(
+ $this->us->updateUser(
+ $uid, 'password', 'name', 'test@example.org', '', '',
+ $pkey, true
+ )
+ );
+ $arUser = $this->us->getUser($uid);
+ $this->assertInternalType('array', $arUser);
+ $this->assertEquals($pkey, $arUser['privateKey']);
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserPrivateKeyNewKeyDisabled()
+ {
+ $pkey = 'testUpdateUserPrivateKeyNewKeyDi';
+ $uid = $this->addUser();
+
+ $this->assertTrue(
+ $this->us->updateUser(
+ $uid, 'password', 'name', 'test@example.org', '', '',
+ $pkey, false
+ )
+ );
+ $arUser = $this->us->getUser($uid);
+ $this->assertInternalType('array', $arUser);
+ $this->assertEquals(
+ '-' . $pkey, $arUser['privateKey'],
+ 'private key did not get disabled'
+ );
+ }
+
+
+ /**
+ * Passing an empty string / NULL as key but enabling it
+ * should automatically create a new key.
+ *
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserPrivateKeyNoKeyEnabled()
+ {
+ $pkey = 'testUpdateUserPrivateKeyNoKeyEna';
+ $uid = $this->addUser();
+
+ $this->assertTrue(
+ $this->us->updateUser(
+ $uid, 'password', 'name', 'test@example.org', '', '',
+ null, true
+ )
+ );
+ $arUser = $this->us->getUser($uid);
+ $this->assertInternalType('array', $arUser);
+ $this->assertNotEquals(
+ '', $arUser['privateKey'], 'private key was not created'
+ );
+ }
+
+
+ /**
+ * Passing an empty string / NULL as key and disabling it
+ * should keep no key
+ *
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserPrivateKeyNoKeyDisabled()
+ {
+ $pkey = 'testUpdateUserPrivateKeyNoKeyDis';
+ $uid = $this->addUser();
+
+ $this->assertTrue(
+ $this->us->updateUser(
+ $uid, 'password', 'name', 'test@example.org', '', '',
+ null, false
+ )
+ );
+ $arUser = $this->us->getUser($uid);
+ $this->assertInternalType('array', $arUser);
+ $this->assertEquals(
+ '', $arUser['privateKey'], 'private key was set'
+ );
+ }
+
+
+ /**
+ * Passing an empty string / NULL as key and disabling it
+ * should keep no key
+ *
+ * @covers SemanticScuttle_Service_User::updateUser
+ */
+ public function testUpdateUserPrivateKeyExistingKeyEnabled()
+ {
+ $pkey = '12345678901234567890123456789012';
+ $uid = $this->addUser();
+
+ $this->assertTrue(
+ $this->us->updateUser(
+ $uid, 'password', 'name', 'test@example.org', '', '',
+ '-' . $pkey, true
+ )
+ );
+ $arUser = $this->us->getUser($uid);
+ $this->assertInternalType('array', $arUser);
+ $this->assertEquals(
+ $pkey, $arUser['privateKey'], 'private key was not enabled'
+ );
+ }
+
+ //FIXME: verify I cannot re-use private key of different user
+
+
+
/**
* Test that setting the current user ID is permanent.
* and that the current user array is the same ID
@@ -176,5 +327,185 @@ class UserTest extends TestBase
);
}
+
+ public function testGetUserByPrivateKeyEmptyKey()
+ {
+ $arUser = $this->us->getUserByPrivateKey(null);
+ $this->assertFalse($arUser);
+ }
+
+
+ public function testGetUserByPrivateKeyInvalid()
+ {
+ $arUser = $this->us->getUserByPrivateKey('foobar');
+ $this->assertFalse($arUser);
+
+ $arUser = $this->us->getUserByPrivateKey('%');
+ $this->assertFalse($arUser);
+ }
+
+
+ public function testGetUserByPrivateKeyValidKey()
+ {
+ $pkey = $this->us->getNewPrivateKey();
+ $uId = $this->addUser(null, null, $pkey);
+
+ $arUser = $this->us->getUserByPrivateKey($pkey);
+ $this->assertInternalType('array', $arUser);
+ $this->assertArrayHasKey('uId', $arUser);
+ $this->assertArrayHasKey('username', $arUser);
+
+ $this->assertEquals($uId, $arUser['uId']);
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::privateKeyExists
+ */
+ public function testPrivateKeyExistsEmpty()
+ {
+ $this->assertFalse($this->us->privateKeyExists(null));
+ $this->assertFalse($this->us->privateKeyExists(''));
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::privateKeyExists
+ */
+ public function testPrivateKeyExistsInvalid()
+ {
+ $this->assertFalse($this->us->privateKeyExists('-1'));
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::privateKeyExists
+ */
+ public function testPrivateKeyExists()
+ {
+ $randKey = $this->us->getNewPrivateKey();
+ $this->assertFalse($this->us->privateKeyExists($randKey));
+ $uid = $this->addUser(null, null, $randKey);
+
+ $this->us->setCurrentUserId($uid);
+ $this->assertEquals($uid, $this->us->getCurrentUserId());
+
+ $this->assertTrue($this->us->privateKeyExists($randKey));
+ }
+
+
+ /**
+ * @covers SemanticScuttle_Service_User::isPrivateKeyValid
+ */
+ public function testIsPrivateKeyValid()
+ {
+ $this->assertFalse(
+ $this->us->isPrivateKeyValid(null),
+ 'NULL is an invalid private key'
+ );
+
+ $randKey = $this->us->getNewPrivateKey();
+ $this->assertTrue(
+ $this->us->isPrivateKeyValid($randKey),
+ 'generated key should be valid'
+ );
+
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $this->assertFalse(
+ $this->us->isPrivateKeyValid($randKey2),
+ 'disabled privatekey should return false'
+ );
+ }
+
+
+ public function testLoginPrivateKeyInvalid()
+ {
+ /* normal user with enabled privatekey */
+ $randKey = $this->us->getNewPrivateKey();
+ $uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
+ /* user that has disabled privatekey */
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
+
+ /* test invalid private key */
+ $this->assertFalse(
+ $this->us->loginPrivateKey('02848248084082408240824802408248')
+ );
+ }
+
+
+ public function testLoginPrivateKeyValidEnabledKey()
+ {
+ /* normal user with enabled privatekey */
+ $randKey = $this->us->getNewPrivateKey();
+ $uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
+ /* user that has disabled privatekey */
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
+
+
+ /* test valid credentials with private key enabled */
+ $this->assertTrue(
+ $this->us->loginPrivateKey($randKey)
+ );
+ }
+
+
+ public function testLoginPrivateKeyInvalidEnabledKey()
+ {
+ /* normal user with enabled privatekey */
+ $randKey = $this->us->getNewPrivateKey();
+ $uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
+ /* user that has disabled privatekey */
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
+
+
+ /* test valid credentials with private key enabled but invalid key */
+ $this->assertFalse(
+ $this->us->loginPrivateKey('123')
+ );
+ }
+
+
+ public function testLoginPrivateKeyValidDisabledKey()
+ {
+ /* normal user with enabled privatekey */
+ $randKey = $this->us->getNewPrivateKey();
+ $uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
+ /* user that has disabled privatekey */
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
+
+ /* confirm user exists so future fails should be due to randkey */
+ $this->assertTrue(
+ $this->us->login('seconduser', 'passw0RD', false)
+ );
+
+ /* test valid credentials with private key disabled */
+ $this->assertFalse(
+ $this->us->loginPrivateKey($randKey2)
+ );
+ }
+
+
+ public function testLoginPrivateKeyInvalidDisabled()
+ {
+ /* normal user with enabled privatekey */
+ $randKey = $this->us->getNewPrivateKey();
+ $uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
+ /* user that has disabled privatekey */
+ $randKey2 = '-'.$this->us->getNewPrivateKey();
+ $uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
+
+ /* test valid credentials with private key disabled and invalid key */
+ $this->assertFalse(
+ $this->us->loginPrivateKey('-1')
+ );
+ $this->assertFalse(
+ $this->us->loginPrivateKey(null)
+ );
+ }
+
}
-?>
\ No newline at end of file
+?>
--
cgit v1.2.3-54-g00ecf
From 5203848b12ccda0009409e08165bfa2d9d34a837 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Thu, 19 May 2011 19:40:22 -0400
Subject: revert getBookmarks() back to original
---
src/SemanticScuttle/Service/Bookmark.php | 50 ++++++++++++--------------------
tests/Tag2TagTest.php | 1 +
2 files changed, 20 insertions(+), 31 deletions(-)
(limited to 'tests')
diff --git a/src/SemanticScuttle/Service/Bookmark.php b/src/SemanticScuttle/Service/Bookmark.php
index 232f9d0..17ab7ba 100644
--- a/src/SemanticScuttle/Service/Bookmark.php
+++ b/src/SemanticScuttle/Service/Bookmark.php
@@ -718,7 +718,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
// All public bookmarks, user's own bookmarks
// and any shared with user
$privacy = ' AND ((B.bStatus = 0) OR (B.uId = '. $sId .')';
- $watchnames = $userservice->getWatchNames($sId);
+ $watchnames = $userservice->getWatchNames($sId, true);
foreach ($watchnames as $watchuser) {
$privacy .= ' OR (U.username = "'. $watchuser .'" AND B.bStatus = 1)';
}
@@ -728,15 +728,14 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
$privacy = ' AND B.bStatus = 0';
}
- $tagcount = 0;
// Set up the tags, if need be.
- if (!is_array($tags) && !is_null($tags) && $tags<>"") {
+ if (!is_array($tags) && !is_null($tags)) {
$tags = explode('+', trim($tags));
+ }
- $tagcount = count($tags);
- for ($i = 0; $i < $tagcount; $i ++) {
- $tags[$i] = trim($tags[$i]);
- }
+ $tagcount = count($tags);
+ for ($i = 0; $i < $tagcount; $i ++) {
+ $tags[$i] = trim($tags[$i]);
}
// Set up the SQL query.
@@ -821,34 +820,23 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
// Handle the parts of the query that depend on any tags that are present.
$query_4 = '';
- if ($tagcount > 0) {
- $query_2 .= ', '. $b2tservice->getTableName() .' AS T0';
+ for ($i = 0; $i < $tagcount; $i ++) {
+ $query_2 .= ', '. $b2tservice->getTableName() .' AS T'. $i;
$query_4 .= ' AND (';
-
- $tagArray = array();
- for ($i = 0; $i < $tagcount; $i ++) {
- $tmpTag = $this->db->sql_escape($tags[$i]);
- $allLinkedTags = $tag2tagservice->getAllLinkedTags(
- $tmpTag, '>', $user
- );
- while (is_array($allLinkedTags) && count($allLinkedTags)>0) {
- $tmpValue = array_pop($allLinkedTags);
- if (in_array($tmpValue, $tagArray) == false) {
- $tagArray[] = $tmpValue;
- }
- }
+ $allLinkedTags = $tag2tagservice->getAllLinkedTags(
+ $this->db->sql_escape($tags[$i]), '>', $user
+ );
- if (in_array($tmpTag, $tagArray) == false) {
- $tagArray[] = $tmpTag;
- }
- }
- // loop through array of possible tags
- foreach ($tagArray as $k => $v) {
- $query_4 .= ' T0.tag = "'. $v .'" OR';
+ while (is_array($allLinkedTags) && count($allLinkedTags)>0) {
+ $query_4 .= ' T'. $i .'.tag = "'. array_pop($allLinkedTags) .'"';
+ $query_4 .= ' OR';
}
- $query_4 = substr($query_4,0,-3);
- $query_4 .= ') AND T0.bId = B.bId';
+
+ $query_4 .= ' T'. $i .'.tag = "'. $this->db->sql_escape($tags[$i]) .'"';
+
+ $query_4 .= ') AND T'. $i .'.bId = B.bId';
+ //die($query_4);
}
// Search terms
diff --git a/tests/Tag2TagTest.php b/tests/Tag2TagTest.php
index 0b73864..58556f1 100644
--- a/tests/Tag2TagTest.php
+++ b/tests/Tag2TagTest.php
@@ -332,6 +332,7 @@ class Tag2TagTest extends TestBase
$this->assertSame('B3', $results['bookmarks'][0]['bTitle']);
$results = $bs->getBookmarks(0, NULL, 1, 'aa+ee');
+
$this->assertSame(1, intval($results['total']));
$this->assertSame('B2', $results['bookmarks'][0]['bTitle']);
--
cgit v1.2.3-54-g00ecf
From e0149e24e2b5fac3b875fda468b18fbe2b6b1218 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Sat, 21 May 2011 14:36:29 -0400
Subject: Resolve some failed bookmark and tag tests
---
data/templates/bookmarks.tpl.php | 4 ++--
tests/AllTests.php | 3 ++-
tests/Api/PostsAddTest.php | 4 ++--
tests/Bookmark2TagTest.php | 6 +++---
www/index.php | 2 +-
5 files changed, 10 insertions(+), 9 deletions(-)
(limited to 'tests')
diff --git a/data/templates/bookmarks.tpl.php b/data/templates/bookmarks.tpl.php
index 55d6a0f..42aaa95 100644
--- a/data/templates/bookmarks.tpl.php
+++ b/data/templates/bookmarks.tpl.php
@@ -220,8 +220,8 @@ if ($currenttag!= '') {
$size = count($rsschannels);
for ($i = 0; $i < $size; $i++) {
$brss = ''
- . '
'
+ . ' title="' . $rsschannels[$i][0] . '">'
+ . '
'
. '';
}
diff --git a/tests/AllTests.php b/tests/AllTests.php
index 9e825e8..92f8960 100644
--- a/tests/AllTests.php
+++ b/tests/AllTests.php
@@ -46,6 +46,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/OpenSearchTest.php');
$suite->addTestFile($tdir . '/Api/PostsAddTest.php');
$suite->addTestFile($tdir . '/Api/PostsDeleteTest.php');
$suite->addTestFile($tdir . '/Api/PostsUpdateTest.php');
@@ -58,4 +59,4 @@ class AllTests extends PHPUnit_Framework_TestSuite
{
}
}
-?>
\ No newline at end of file
+?>
diff --git a/tests/Api/PostsAddTest.php b/tests/Api/PostsAddTest.php
index 02e2b38..e6d0531 100644
--- a/tests/Api/PostsAddTest.php
+++ b/tests/Api/PostsAddTest.php
@@ -108,7 +108,7 @@ TXT;
$this->assertEquals($bmUrl, $bm['bAddress']);
$this->assertEquals($bmTitle, $bm['bTitle']);
- $this->assertEquals($bmDescription, $bm['bDescription']);
+ $this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
@@ -170,7 +170,7 @@ TXT;
$this->assertEquals($bmUrl, $bm['bAddress']);
$this->assertEquals($bmTitle, $bm['bTitle']);
- $this->assertEquals($bmDescription, $bm['bDescription']);
+ $this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
diff --git a/tests/Bookmark2TagTest.php b/tests/Bookmark2TagTest.php
index 789540f..66a6e1f 100644
--- a/tests/Bookmark2TagTest.php
+++ b/tests/Bookmark2TagTest.php
@@ -290,8 +290,8 @@ class Bookmark2TagTest extends TestBase
$arTags = $this->b2ts->getPopularTags(null, 10, null, 1);
$this->assertInternalType('array', $arTags);
$this->assertEquals(3, count($arTags));
- $this->assertContains(array('tag' => 'one', 'bCount' => '2'), $arTags);
- $this->assertContains(array('tag' => 'two', 'bCount' => '1'), $arTags);
+ $this->assertContains(array('tag' => 'one', 'bCount' => '3'), $arTags);
+ $this->assertContains(array('tag' => 'two', 'bCount' => '2'), $arTags);
$this->assertContains(array('tag' => 'thr', 'bCount' => '1'), $arTags);
$arTags = $this->b2ts->getPopularTags(null, 10, null, 2);
@@ -608,4 +608,4 @@ class Bookmark2TagTest extends TestBase
$this->assertContains(array('tag' => 'usable', 'bCount' => '2'), $arTags);
}
}
-?>
\ No newline at end of file
+?>
diff --git a/www/index.php b/www/index.php
index 0977923..931d64d 100644
--- a/www/index.php
+++ b/www/index.php
@@ -42,7 +42,7 @@ if (GET_ACTION == "logout") {
// Header variables
$tplVars['loadjs'] = true;
$tplVars['rsschannels'] = array(
-array(sprintf(T_('%s: Recent bookmarks'), $sitename), createURL('rss').'?sort='.getSortOrder())
+array(sprintf(T_('%s: Recent bookmarks'), htmlspecialchars($sitename)), createURL('rss').'?sort='.getSortOrder())
);
if ($userservice->isLoggedOn()) {
--
cgit v1.2.3-54-g00ecf
From 342d1c3205c2f2ae9d918f66e28e8ffa153c2854 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Sat, 21 May 2011 22:06:44 -0400
Subject: Altered tests to be more timezone friendly
---
src/SemanticScuttle/Service/Bookmark.php | 2 +-
tests/Api/PostsAddTest.php | 4 ++--
tests/Bookmark2TagTest.php | 12 ++++++------
3 files changed, 9 insertions(+), 9 deletions(-)
(limited to 'tests')
diff --git a/src/SemanticScuttle/Service/Bookmark.php b/src/SemanticScuttle/Service/Bookmark.php
index 17ab7ba..f69b4d1 100644
--- a/src/SemanticScuttle/Service/Bookmark.php
+++ b/src/SemanticScuttle/Service/Bookmark.php
@@ -486,7 +486,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
} else {
$time = strtotime($date);
}
- $datetime = gmdate('Y-m-d H:i:s', $time);
+ $datetime = date('Y-m-d H:i:s', $time);
if ($short === '') {
$short = null;
diff --git a/tests/Api/PostsAddTest.php b/tests/Api/PostsAddTest.php
index e6d0531..2613a87 100644
--- a/tests/Api/PostsAddTest.php
+++ b/tests/Api/PostsAddTest.php
@@ -111,7 +111,7 @@ TXT;
$this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
- gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
+ date('Y-m-d H:i:s', strtotime($bmDatetime)),
$bm['bDatetime']
);
}
@@ -173,7 +173,7 @@ TXT;
$this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
- gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
+ date('Y-m-d H:i:s', strtotime($bmDatetime)),
$bm['bDatetime']
);
}
diff --git a/tests/Bookmark2TagTest.php b/tests/Bookmark2TagTest.php
index 66a6e1f..0236a5f 100644
--- a/tests/Bookmark2TagTest.php
+++ b/tests/Bookmark2TagTest.php
@@ -282,16 +282,16 @@ class Bookmark2TagTest extends TestBase
public function testGetPopularTagsDays()
{
$user = $this->addUser();
- $this->addTagBookmark($user, array('one', 'two'), 'today');
- $this->addTagBookmark($user, array('one', 'thr'), 'today');
- $this->addTagBookmark($user, array('one', 'two'), '-1 day 1 hour');
- $this->addTagBookmark($user, array('one', 'thr'), '-3 days 1 hour');
+ $this->addTagBookmark($user, array('one', 'two'), 'now');
+ $this->addTagBookmark($user, array('one', 'thr'), 'now');
+ $this->addTagBookmark($user, array('one', 'two'), '-1 day -1 hour');
+ $this->addTagBookmark($user, array('one', 'thr'), '-3 days -1 hour');
$arTags = $this->b2ts->getPopularTags(null, 10, null, 1);
$this->assertInternalType('array', $arTags);
$this->assertEquals(3, count($arTags));
- $this->assertContains(array('tag' => 'one', 'bCount' => '3'), $arTags);
- $this->assertContains(array('tag' => 'two', 'bCount' => '2'), $arTags);
+ $this->assertContains(array('tag' => 'one', 'bCount' => '2'), $arTags);
+ $this->assertContains(array('tag' => 'two', 'bCount' => '1'), $arTags);
$this->assertContains(array('tag' => 'thr', 'bCount' => '1'), $arTags);
$arTags = $this->b2ts->getPopularTags(null, 10, null, 2);
--
cgit v1.2.3-54-g00ecf
From 84e603aa91a303a1419962ff3ff6086710a7b1a9 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Sat, 4 Jun 2011 00:29:04 -0400
Subject: Reverted changes of date() to gdate(), added tests to confirm
existence of private RSS feed, and finalized changes to the user session
usage with rss.php
---
src/SemanticScuttle/Service/Bookmark.php | 2 +-
src/SemanticScuttle/Service/Bookmark2Tag.php | 2 +-
src/SemanticScuttle/Service/User.php | 2 --
tests/Api/PostsAddTest.php | 4 ++--
tests/TestBaseApi.php | 21 ++++++++++++-------
tests/www/bookmarksTest.php | 27 ++++++++++++++++++++++++
www/ajaxGetNewPrivateKey.php | 31 +++++++++++-----------------
www/index.php | 2 +-
www/jsScuttle.php | 8 +++++++
www/rss.php | 14 ++-----------
10 files changed, 68 insertions(+), 45 deletions(-)
(limited to 'tests')
diff --git a/src/SemanticScuttle/Service/Bookmark.php b/src/SemanticScuttle/Service/Bookmark.php
index f69b4d1..17ab7ba 100644
--- a/src/SemanticScuttle/Service/Bookmark.php
+++ b/src/SemanticScuttle/Service/Bookmark.php
@@ -486,7 +486,7 @@ class SemanticScuttle_Service_Bookmark extends SemanticScuttle_DbService
} else {
$time = strtotime($date);
}
- $datetime = date('Y-m-d H:i:s', $time);
+ $datetime = gmdate('Y-m-d H:i:s', $time);
if ($short === '') {
$short = null;
diff --git a/src/SemanticScuttle/Service/Bookmark2Tag.php b/src/SemanticScuttle/Service/Bookmark2Tag.php
index fc59a1c..04ee43d 100644
--- a/src/SemanticScuttle/Service/Bookmark2Tag.php
+++ b/src/SemanticScuttle/Service/Bookmark2Tag.php
@@ -584,7 +584,7 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService
if (is_int($days)) {
$query .= ' AND B.bDatetime > "'
- . date('Y-m-d H:i:s', time() - (86400 * $days))
+ . gmdate('Y-m-d H:i:s', time() - (86400 * $days))
. '"';
}
diff --git a/src/SemanticScuttle/Service/User.php b/src/SemanticScuttle/Service/User.php
index 18d5a29..a4870b7 100644
--- a/src/SemanticScuttle/Service/User.php
+++ b/src/SemanticScuttle/Service/User.php
@@ -571,8 +571,6 @@ class SemanticScuttle_Service_User extends SemanticScuttle_DbService
$this->db->sql_freeresult($dbresult);
if ($row) {
- $id = $_SESSION[$this->getSessionKey()]
- = $row[$this->getFieldName('primary')];
return true;
} else {
return false;
diff --git a/tests/Api/PostsAddTest.php b/tests/Api/PostsAddTest.php
index 2613a87..e6d0531 100644
--- a/tests/Api/PostsAddTest.php
+++ b/tests/Api/PostsAddTest.php
@@ -111,7 +111,7 @@ TXT;
$this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
- date('Y-m-d H:i:s', strtotime($bmDatetime)),
+ gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
$bm['bDatetime']
);
}
@@ -173,7 +173,7 @@ TXT;
$this->assertEquals($bmDescription, stripslashes($bm['bDescription']));
$this->assertEquals($bmTags, $bm['tags']);
$this->assertEquals(
- date('Y-m-d H:i:s', strtotime($bmDatetime)),
+ gmdate('Y-m-d H:i:s', strtotime($bmDatetime)),
$bm['bDatetime']
);
}
diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php
index 20574f3..d8917aa 100644
--- a/tests/TestBaseApi.php
+++ b/tests/TestBaseApi.php
@@ -164,15 +164,16 @@ class TestBaseApi extends TestBase
*
* 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
+ * @param string $urlSuffix Suffix for the URL
+ * @param mixed $auth If user authentication is needed (true/false)
+ * or array with username and password
+ * @param boolean $privateKey True if to add user with private key
*
* @return array(HTTP_Request2, integer) HTTP request object and user id
*
* @uses getRequest()
*/
- protected function getLoggedInRequest($urlSuffix = null, $auth = true)
+ protected function getLoggedInRequest($urlSuffix = null, $auth = true, $privateKey = false)
{
if (is_array($auth)) {
list($username, $password) = $auth;
@@ -180,7 +181,13 @@ class TestBaseApi extends TestBase
$username = 'testuser';
$password = 'testpassword';
}
- $uid = $this->addUser($username, $password);
+ //include privatekey if requested
+ if ($privateKey) {
+ $pKey = $this->us->getNewPrivateKey();
+ } else {
+ $pKey = null;
+ }
+ $uid = $this->addUser($username, $password, $pKey);
$req = new HTTP_Request2(
$GLOBALS['unittestUrl'] . '/login.php?unittestMode=1',
@@ -234,7 +241,7 @@ class TestBaseApi extends TestBase
*/
protected function setUnittestConfig($arConfig)
{
- $str = '<' . "?php\r\n";
+ $str = '<' . "?php\n";
foreach ($arConfig as $name => $value) {
$str .= '$' . $name . ' = '
. var_export($value, true) . ";\n";
@@ -253,4 +260,4 @@ class TestBaseApi extends TestBase
);
}
}
-?>
\ No newline at end of file
+?>
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php
index df360cc..eaf78bf 100755
--- a/tests/www/bookmarksTest.php
+++ b/tests/www/bookmarksTest.php
@@ -76,5 +76,32 @@ class www_bookmarksTest extends TestBaseApi
$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);
+ $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
+ . $user['username'];
+ $req->setUrl($reqUrl);
+ $req->setMethod(HTTP_Request2::METHOD_GET);
+ $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');
+ $this->assertEquals(5, count($elements), 'Number of Links in Head not correct');
+ $this->assertContains('privatekey=', (string)$elements[4]['href']);
+ }//end testVerifyPrivateRSSLinkExists
+
}//end class www_bookmarksTest
?>
diff --git a/www/ajaxGetNewPrivateKey.php b/www/ajaxGetNewPrivateKey.php
index 59545a2..eacebd8 100644
--- a/www/ajaxGetNewPrivateKey.php
+++ b/www/ajaxGetNewPrivateKey.php
@@ -1,23 +1,16 @@
+ * @author Mark Pemberton
+ * @license AGPL http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
header("Last-Modified: ". gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache, must-revalidate");
diff --git a/www/index.php b/www/index.php
index 931d64d..fab235f 100644
--- a/www/index.php
+++ b/www/index.php
@@ -51,7 +51,7 @@ if ($userservice->isLoggedOn()) {
array_push(
$tplVars['rsschannels'],
array(
- filter($sitename . sprintf(T_(': (private) ')) . $currentUsername),
+ filter($sitename . sprintf(T_(': Recent bookmarks (private)')) . $currentUsername),
createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privatekey='.$currentUser->getPrivateKey())
)
);
diff --git a/www/jsScuttle.php b/www/jsScuttle.php
index 76b49dc..3ca41ec 100644
--- a/www/jsScuttle.php
+++ b/www/jsScuttle.php
@@ -89,6 +89,14 @@ function useAddress(ele) {
}
}
+/**
+ * Makes an ajax call to PHP script to generate an new Private Key
+ *
+ * @param input Calling object
+ * @param response Response object that returned value is placed
+ *
+ * @return boolean Returns false to halt execution after call
+ */
function getNewPrivateKey(input, response){
var pk = document.getElementById('pPrivateKey');
if (response != null) {
diff --git a/www/rss.php b/www/rss.php
index 8c81e0e..2927534 100644
--- a/www/rss.php
+++ b/www/rss.php
@@ -71,7 +71,6 @@ if (isset($_GET['privatekey'])) {
$watchlist = null;
$pagetitle = '';
-$isTempLogin = false;
if ($user && $user != 'all') {
if ($user == 'watchlist') {
$user = $cat;
@@ -86,9 +85,7 @@ if ($user && $user != 'all') {
/* if user is not logged in and has valid privatekey */
if (!$userservice->isLoggedOn()) {
if ($privatekey != null) {
- if ($userservice->loginPrivateKey($privatekey)) {
- $isTempLogin = true;
- } else {
+ if (!$userservice->loginPrivateKey($privatekey)) {
$tplVars['error'] = sprintf(T_('Failed to Autenticate User with username %s using private key'), $user);
header('Content-type: text/html; charset=utf-8');
$templateservice->loadTemplate('error.404.tpl', $tplVars);
@@ -109,9 +106,7 @@ if ($user && $user != 'all') {
$pagetitle .= ": ". $user;
} else {
if ($privatekey != null) {
- if ($userservice->loginPrivateKey($privatekey)) {
- $isTempLogin = true;
- } else {
+ if (!$userservice->loginPrivateKey($privatekey)) {
$tplVars['error'] = sprintf(T_('Failed to Autenticate User with username %s using private key'), $user);
header('Content-type: text/html; charset=utf-8');
$templateservice->loadTemplate('error.404.tpl', $tplVars);
@@ -168,11 +163,6 @@ $tplVars['feedlastupdate'] = date('r', strtotime($latestdate));
$templateservice->loadTemplate('rss.tpl', $tplVars);
-/* If temporary login, please log out */
-if ($isTempLogin) {
- $userservice->logout();
-}
-
if ($usecache) {
// Cache output if existing copy has expired
$cacheservice->End($hash);
--
cgit v1.2.3-54-g00ecf
From cd2756a4d0d18497648deacfb619e227335648ad Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Tue, 7 Jun 2011 22:13:50 -0400
Subject: Refined bookmarksTest.php and added indexTest.php
---
tests/www/bookmarksTest.php | 33 +++++++++++++++++++++---
tests/www/indexTest.php | 63 +++++++++++++++++++++++++++++++++++++++++++++
tests/www/searchTest.php | 4 ++-
3 files changed, 96 insertions(+), 4 deletions(-)
create mode 100644 tests/www/indexTest.php
(limited to 'tests')
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php
index eaf78bf..1f6d1a5 100755
--- a/tests/www/bookmarksTest.php
+++ b/tests/www/bookmarksTest.php
@@ -98,10 +98,37 @@ class www_bookmarksTest extends TestBaseApi
$ns = $x->getDocNamespaces();
$x->registerXPathNamespace('ns', reset($ns));
- $elements = $x->xpath('//ns:link');
- $this->assertEquals(5, count($elements), 'Number of Links in Head not correct');
- $this->assertContains('privatekey=', (string)$elements[4]['href']);
+ $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);
+ $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
+ . $user['username'];
+ $req->setUrl($reqUrl);
+ $req->setMethod(HTTP_Request2::METHOD_GET);
+ $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
+
}//end class www_bookmarksTest
?>
diff --git a/tests/www/indexTest.php b/tests/www/indexTest.php
new file mode 100644
index 0000000..d95a328
--- /dev/null
+++ b/tests/www/indexTest.php
@@ -0,0 +1,63 @@
+getLoggedInRequest('?unittestMode=1', true, true);
+
+ $user = $this->us->getUser($uId);
+ $reqUrl = $GLOBALS['unittestUrl'] . 'index.php/';
+ $req->setUrl($reqUrl);
+ $req->setMethod(HTTP_Request2::METHOD_GET);
+ $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);
+ $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
+ . $user['username'];
+ $req->setUrl($reqUrl);
+ $req->setMethod(HTTP_Request2::METHOD_GET);
+ $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
+
+
+}//end class www_bookmarksTest
+?>
diff --git a/tests/www/searchTest.php b/tests/www/searchTest.php
index 5dce69d..89af32d 100644
--- a/tests/www/searchTest.php
+++ b/tests/www/searchTest.php
@@ -1,4 +1,6 @@
\ No newline at end of file
+?>
--
cgit v1.2.3-54-g00ecf
From 44a65eddaca98c2313ce128f9994e7484f9099b1 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 8 Jun 2011 07:00:17 +0200
Subject: fix tests for people that use a separate test database
---
tests/www/bookmarksTest.php | 4 ++--
tests/www/indexTest.php | 13 ++++---------
2 files changed, 6 insertions(+), 11 deletions(-)
(limited to 'tests')
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php
index 1f6d1a5..a4de5f8 100755
--- a/tests/www/bookmarksTest.php
+++ b/tests/www/bookmarksTest.php
@@ -87,7 +87,7 @@ class www_bookmarksTest extends TestBaseApi
$user = $this->us->getUser($uId);
$reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'];
+ . $user['username'] . '?unittestMode=1';
$req->setUrl($reqUrl);
$req->setMethod(HTTP_Request2::METHOD_GET);
$response = $req->send();
@@ -114,7 +114,7 @@ class www_bookmarksTest extends TestBaseApi
$user = $this->us->getUser($uId);
$reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'];
+ . $user['username'] . '?unittestMode=1';
$req->setUrl($reqUrl);
$req->setMethod(HTTP_Request2::METHOD_GET);
$response = $req->send();
diff --git a/tests/www/indexTest.php b/tests/www/indexTest.php
index d95a328..18cb75a 100644
--- a/tests/www/indexTest.php
+++ b/tests/www/indexTest.php
@@ -4,7 +4,7 @@ require_once 'HTTP/Request2.php';
class www_indexTest extends TestBaseApi
{
- protected $urlPart = 'api/posts/add';
+ protected $urlPart = '';
/**
* Test that the private rss feed exists when user is setup
@@ -15,11 +15,9 @@ class www_indexTest extends TestBaseApi
list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true, true);
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'index.php/';
- $req->setUrl($reqUrl);
- $req->setMethod(HTTP_Request2::METHOD_GET);
$response = $req->send();
$response_body = $response->getBody();
+
$this->assertNotEquals('', $response_body, 'Response is empty');
$x = simplexml_load_string($response_body);
@@ -32,19 +30,16 @@ class www_indexTest extends TestBaseApi
}//end testVerifyPrivateRSSLinkExists
+
/**
* Test that the private RSS link doesn't exists when a user
- * does not have a private key or is not enabled
+ * does not have a private key, or the private key is not enabled
*/
public function testVerifyPrivateRSSLinkDoesNotExist()
{
list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true);
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'];
- $req->setUrl($reqUrl);
- $req->setMethod(HTTP_Request2::METHOD_GET);
$response = $req->send();
$response_body = $response->getBody();
$this->assertNotEquals('', $response_body, 'Response is empty');
--
cgit v1.2.3-54-g00ecf
From 39dfe3f1acf620eccb668d4f8d7451c1cef96ba5 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 8 Jun 2011 07:00:24 +0200
Subject: CS
---
tests/TestBaseApi.php | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
(limited to 'tests')
diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php
index d8917aa..7568147 100644
--- a/tests/TestBaseApi.php
+++ b/tests/TestBaseApi.php
@@ -164,17 +164,18 @@ class TestBaseApi extends TestBase
*
* 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
+ * @param string $urlSuffix Suffix for the URL
+ * @param mixed $auth If user authentication is needed (true/false)
+ * or array with username and password
* @param boolean $privateKey True if to add user with private key
*
* @return array(HTTP_Request2, integer) HTTP request object and user id
*
* @uses getRequest()
*/
- protected function getLoggedInRequest($urlSuffix = null, $auth = true, $privateKey = false)
- {
+ protected function getLoggedInRequest(
+ $urlSuffix = null, $auth = true, $privateKey = false
+ ) {
if (is_array($auth)) {
list($username, $password) = $auth;
} else {
--
cgit v1.2.3-54-g00ecf
From 5009535d3438ecc338dacc8120fa143fd28c5628 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 8 Jun 2011 07:21:33 +0200
Subject: docblocks for url and urlPart variables
---
tests/TestBaseApi.php | 13 +++++++++++++
1 file changed, 13 insertions(+)
(limited to 'tests')
diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php
index 7568147..50a2413 100644
--- a/tests/TestBaseApi.php
+++ b/tests/TestBaseApi.php
@@ -24,7 +24,20 @@ require_once 'HTTP/Request2.php';
*/
class TestBaseApi extends TestBase
{
+ /**
+ * Created from the configured host and the $urlPart.
+ * Should be used as base for all generated URLs
+ *
+ * @var string
+ */
protected $url;
+
+ /**
+ * Part of the URL behind the configured host.
+ * Needs to be overwritten in each derived test case class.
+ *
+ * @var string
+ */
protected $urlPart = null;
/**
--
cgit v1.2.3-54-g00ecf
From 5deeecc408de104f2330a346dd528f6bb1e25b4e Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Wed, 8 Jun 2011 07:22:13 +0200
Subject: make bookmarks.php tests easier to read and use the TestBaseApi to
get the urls
---
tests/www/bookmarksTest.php | 62 ++++++++++++++++++++-------------------------
1 file changed, 28 insertions(+), 34 deletions(-)
(limited to 'tests')
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php
index a4de5f8..1e1f4eb 100755
--- a/tests/www/bookmarksTest.php
+++ b/tests/www/bookmarksTest.php
@@ -4,7 +4,7 @@ require_once 'HTTP/Request2.php';
class www_bookmarksTest extends TestBaseApi
{
- protected $urlPart = 'api/posts/add';
+ protected $urlPart = 'bookmarks.php';
/**
* Test that the default privacy setting is selected in the Privacy
@@ -16,23 +16,11 @@ class www_bookmarksTest extends TestBaseApi
$this->setUnittestConfig(
array('defaults' => array('privacy' => 2))
);
- list($req, $uId) = $this->getLoggedInRequest();
- $cookies = $req->getCookieJar();
- $req->setMethod(HTTP_Request2::METHOD_POST);
- $req->addPostParameter('url', 'http://www.example.org/testdefaultprivacyposts_bookmarksget');
- $req->addPostParameter('description', 'Test bookmark 1 for default privacy.');
- $req->addPostParameter('status', '0');
- $req->send();
- $bms = $this->bs->getBookmarks(0, null, $uId);
- $this->assertEquals(1, count($bms['bookmarks']));
+ list($req, $uId) = $this->getLoggedInRequest();
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/' . $user['username'] . '?action=get' . '&unittestMode=1';
-
- list($req, $uId) = $this->getAuthRequest('?unittestMode=1');
$req->setMethod(HTTP_Request2::METHOD_POST);
- $req->setUrl($reqUrl);
- $req->setCookieJar($cookies);
+ $req->setUrl($this->getTestUrl('/' . $user['username'] . '?action=get'));
$req->addPostParameter('submitted', '1');
$response = $req->send();
$response_body = $response->getBody();
@@ -41,12 +29,15 @@ class www_bookmarksTest extends TestBaseApi
$ns = $x->getDocNamespaces();
$x->registerXPathNamespace('ns', reset($ns));
- $elements = $x->xpath('//ns:select[@name="status"]/ns:option[@selected="selected"]');
+ $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.
@@ -56,13 +47,10 @@ class www_bookmarksTest extends TestBaseApi
$this->setUnittestConfig(
array('defaults' => array('privacy' => 1))
);
- list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1');
+ list($req, $uId) = $this->getLoggedInRequest();
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'] . '?action=add' . '&unittestMode=1';
- $req->setUrl($reqUrl);
- $req->setMethod(HTTP_Request2::METHOD_GET);
+ $req->setUrl($this->getTestUrl('/' . $user['username'] . '?action=add'));
$response = $req->send();
$response_body = $response->getBody();
$this->assertNotEquals('', $response_body, 'Response is empty');
@@ -71,12 +59,15 @@ class www_bookmarksTest extends TestBaseApi
$ns = $x->getDocNamespaces();
$x->registerXPathNamespace('ns', reset($ns));
- $elements = $x->xpath('//ns:select[@name="status"]/ns:option[@selected="selected"]');
+ $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
@@ -86,10 +77,7 @@ class www_bookmarksTest extends TestBaseApi
list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true, true);
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'] . '?unittestMode=1';
- $req->setUrl($reqUrl);
- $req->setMethod(HTTP_Request2::METHOD_GET);
+ $req->setUrl($this->getTestUrl('/' . $user['username']));
$response = $req->send();
$response_body = $response->getBody();
$this->assertNotEquals('', $response_body, 'Response is empty');
@@ -98,12 +86,17 @@ class www_bookmarksTest extends TestBaseApi
$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');
+ $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
@@ -113,10 +106,7 @@ class www_bookmarksTest extends TestBaseApi
list($req, $uId) = $this->getLoggedInRequest('?unittestMode=1', true);
$user = $this->us->getUser($uId);
- $reqUrl = $GLOBALS['unittestUrl'] . 'bookmarks.php/'
- . $user['username'] . '?unittestMode=1';
- $req->setUrl($reqUrl);
- $req->setMethod(HTTP_Request2::METHOD_GET);
+ $req->setUrl($this->getTestUrl('/' . $user['username']));
$response = $req->send();
$response_body = $response->getBody();
$this->assertNotEquals('', $response_body, 'Response is empty');
@@ -125,8 +115,12 @@ class www_bookmarksTest extends TestBaseApi
$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');
+ $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
--
cgit v1.2.3-54-g00ecf
From 045d139d64ada2c510ed05e177ba6f484ad68496 Mon Sep 17 00:00:00 2001
From: Mark Pemberton
Date: Wed, 15 Jun 2011 00:58:29 -0400
Subject: Added RSS Feed tests
---
tests/TestBaseApi.php | 7 ++--
tests/www/rssTest.php | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 99 insertions(+), 2 deletions(-)
create mode 100644 tests/www/rssTest.php
(limited to 'tests')
diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php
index 50a2413..f860d10 100644
--- a/tests/TestBaseApi.php
+++ b/tests/TestBaseApi.php
@@ -187,7 +187,8 @@ class TestBaseApi extends TestBase
* @uses getRequest()
*/
protected function getLoggedInRequest(
- $urlSuffix = null, $auth = true, $privateKey = false
+ $urlSuffix = null, $auth = true, $privateKey = false,
+ $setCookie = true
) {
if (is_array($auth)) {
list($username, $password) = $auth;
@@ -217,7 +218,9 @@ class TestBaseApi extends TestBase
$this->assertEquals(302, $res->getStatus(), 'Login failure');
$req = $this->getRequest($urlSuffix);
- $req->setCookieJar($cookies);
+ if ($setCookie) {
+ $req->setCookieJar($cookies);
+ }
return array($req, $uid);
}
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
new file mode 100644
index 0000000..1822fc9
--- /dev/null
+++ b/tests/www/rssTest.php
@@ -0,0 +1,94 @@
+setUnittestConfig(
+ array('defaults' => array('privacy' => 2))
+ );
+
+ /* create user without RSS private Key */
+ list($req, $uId) = $this->getLoggedInRequest(null, true, false, false);
+
+ /* create private bookmark */
+ $this->bs->addBookmark(
+ 'http://test', 'test', 'desc', 'note',
+ 2,//private
+ array(), null, null, false, false, $uId
+ );
+ /* create public bookmark */
+ $this->bs->addBookmark(
+ 'http://example.org', 'title', 'desc', 'priv',
+ 0,//public
+ array(), null, null, false, false, $uId
+ );
+
+ /* get user details */
+ $user = $this->us->getUser($uId);
+
+ $req->setMethod(HTTP_Request2::METHOD_POST);
+ $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc'));
+ $response = $req->send();
+ $response_body = $response->getBody();
+
+ $rss = simplexml_load_string($response_body);
+ $items = $rss->channel->item;
+
+ $this->assertEquals(1, count($items), 'Incorrect Number of RSS Items');
+ $this->assertEquals('title', (string)$items[0]->title);
+ }//end testNoRSSPrivateKeyEnabled
+
+
+ /**
+ * Test a user who has RSS private key setup
+ * with private bookmark.
+ */
+ public function testRSSPrivateKeyEnabled()
+ {
+ $this->setUnittestConfig(
+ array('defaults' => array('privacy' => 2))
+ );
+
+ /* create user with RSS private Key */
+ list($req, $uId) = $this->getLoggedInRequest(null, true, false, true);
+
+ /* create private bookmark */
+ $this->bs->addBookmark(
+ 'http://test', 'test', 'desc', 'note',
+ 2,//private
+ array(), null, null, false, false, $uId
+ );
+ /* create public bookmark */
+ $this->bs->addBookmark(
+ 'http://example.org', 'title', 'desc', 'priv',
+ 0,//public
+ array(), null, null, false, false, $uId
+ );
+
+ /* get user details */
+ $user = $this->us->getUser($uId);
+
+ $req->setMethod(HTTP_Request2::METHOD_POST);
+ $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc&privatekey=' . $user['privatekey']));
+ $response = $req->send();
+ $response_body = $response->getBody();
+
+ $rss = simplexml_load_string($response_body);
+ $items = $rss->channel->item;
+
+ $this->assertEquals(2, count($items), 'Incorrect Number of RSS Items');
+ }//end testRSSPrivateKeyEnabled
+
+
+
+}//end class www_rssTest
+?>
--
cgit v1.2.3-54-g00ecf
From 9eab02af5f6212b417a6aef095d55e6c5d8fc616 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 19:09:19 +0200
Subject: fix typo
---
tests/www/rssTest.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 1822fc9..9d4e41b 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -78,7 +78,7 @@ class www_rssTest extends TestBaseApi
$user = $this->us->getUser($uId);
$req->setMethod(HTTP_Request2::METHOD_POST);
- $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc&privatekey=' . $user['privatekey']));
+ $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc&privatekey=' . $user['privateKey']));
$response = $req->send();
$response_body = $response->getBody();
--
cgit v1.2.3-54-g00ecf
From d2aecd8a76a8c1f0d326cae13f158b74b6e60709 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 19:16:33 +0200
Subject: move private key generation to adduser
---
tests/TestBase.php | 33 +++++++++++++++++++--------------
1 file changed, 19 insertions(+), 14 deletions(-)
(limited to 'tests')
diff --git a/tests/TestBase.php b/tests/TestBase.php
index 1331ec6..5ea656c 100644
--- a/tests/TestBase.php
+++ b/tests/TestBase.php
@@ -76,17 +76,18 @@ class TestBase extends PHPUnit_Framework_TestCase
/**
* Creates a new user in the database.
*
- * @param string $username Username
- * @param string $password Password
- * @param string $pkey Private Key
+ * @param string $username Username
+ * @param string $password Password
+ * @param mixed $privateKey String private key or boolean true to generate one
*
* @return integer ID of user
*
* @uses addUserData()
*/
- protected function addUser($username = null, $password = null, $pkey = null)
- {
- return reset($this->addUserData($username, $password, $pkey));
+ protected function addUser(
+ $username = null, $password = null, $privateKey = null
+ ) {
+ return reset($this->addUserData($username, $password, $privateKey));
}
@@ -94,14 +95,15 @@ class TestBase extends PHPUnit_Framework_TestCase
/**
* Creates a new user in the database and returns id, username and password.
*
- * @param string $username Username
- * @param string $password Password
- * @param string $pkey Private Key
+ * @param string $username Username
+ * @param string $password Password
+ * @param mixed $privateKey String private key or boolean true to generate one
*
- * @return array ID of user, Name of user, password of user
+ * @return array ID of user, Name of user, password of user, privatekey
*/
- protected function addUserData($username = null, $password = null, $pkey = null)
- {
+ protected function addUserData(
+ $username = null, $password = null, $privateKey = null
+ ) {
$us = SemanticScuttle_Service_Factory::get('User');
$rand = rand();
@@ -111,14 +113,17 @@ class TestBase extends PHPUnit_Framework_TestCase
if ($password === null) {
$password = $rand;
}
+ if ($privateKey === true) {
+ $privateKey = $this->us->getNewPrivateKey();
+ }
$uid = $us->addUser(
$username,
$password,
'unittest-' . $rand . '@example.org',
- $pkey
+ $privateKey
);
- return array($uid, $username, $password);
+ return array($uid, $username, $password, $privateKey);
}
--
cgit v1.2.3-54-g00ecf
From 6ec3b102aa896df8ddcf6323e0635dc42ac25f98 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 19:39:38 +0200
Subject: make the private tests really test something
---
src/SemanticScuttle/Model/Bookmark.php | 17 ++++++++
tests/TestBase.php | 8 ++--
tests/TestBaseApi.php | 15 ++-----
tests/www/rssTest.php | 73 +++++++++-------------------------
4 files changed, 42 insertions(+), 71 deletions(-)
(limited to 'tests')
diff --git a/src/SemanticScuttle/Model/Bookmark.php b/src/SemanticScuttle/Model/Bookmark.php
index 8bda0b3..1330642 100644
--- a/src/SemanticScuttle/Model/Bookmark.php
+++ b/src/SemanticScuttle/Model/Bookmark.php
@@ -23,6 +23,23 @@
*/
class SemanticScuttle_Model_Bookmark
{
+ /**
+ * Status "public" / visible for all
+ */
+ const SPUBLIC = 0;
+
+ /**
+ * Status "shared" / visible for people on your watchlist
+ */
+ const SWATCHLIST = 1;
+
+ /**
+ * Status "private" / visible for yourself only
+ */
+ const SPRIVATE = 2;
+
+
+
/**
* Checks if the given URL is valid and may be used with this
* SemanticScuttle installation.
diff --git a/tests/TestBase.php b/tests/TestBase.php
index 5ea656c..2180d2d 100644
--- a/tests/TestBase.php
+++ b/tests/TestBase.php
@@ -76,8 +76,8 @@ class TestBase extends PHPUnit_Framework_TestCase
/**
* Creates a new user in the database.
*
- * @param string $username Username
- * @param string $password Password
+ * @param string $username Username, may be null
+ * @param string $password Password, may be null
* @param mixed $privateKey String private key or boolean true to generate one
*
* @return integer ID of user
@@ -95,8 +95,8 @@ class TestBase extends PHPUnit_Framework_TestCase
/**
* Creates a new user in the database and returns id, username and password.
*
- * @param string $username Username
- * @param string $password Password
+ * @param string $username Username, may be null
+ * @param string $password Password, may be null
* @param mixed $privateKey String private key or boolean true to generate one
*
* @return array ID of user, Name of user, password of user, privatekey
diff --git a/tests/TestBaseApi.php b/tests/TestBaseApi.php
index f860d10..1052ae7 100644
--- a/tests/TestBaseApi.php
+++ b/tests/TestBaseApi.php
@@ -187,8 +187,7 @@ class TestBaseApi extends TestBase
* @uses getRequest()
*/
protected function getLoggedInRequest(
- $urlSuffix = null, $auth = true, $privateKey = false,
- $setCookie = true
+ $urlSuffix = null, $auth = true, $privateKey = null
) {
if (is_array($auth)) {
list($username, $password) = $auth;
@@ -196,13 +195,7 @@ class TestBaseApi extends TestBase
$username = 'testuser';
$password = 'testpassword';
}
- //include privatekey if requested
- if ($privateKey) {
- $pKey = $this->us->getNewPrivateKey();
- } else {
- $pKey = null;
- }
- $uid = $this->addUser($username, $password, $pKey);
+ $uid = $this->addUser($username, $password, $privateKey);
$req = new HTTP_Request2(
$GLOBALS['unittestUrl'] . '/login.php?unittestMode=1',
@@ -218,9 +211,7 @@ class TestBaseApi extends TestBase
$this->assertEquals(302, $res->getStatus(), 'Login failure');
$req = $this->getRequest($urlSuffix);
- if ($setCookie) {
- $req->setCookieJar($cookies);
- }
+ $req->setCookieJar($cookies);
return array($req, $uid);
}
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 9d4e41b..fc49264 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -7,44 +7,23 @@ class www_rssTest extends TestBaseApi
protected $urlPart = 'rss.php';
/**
- * Test a user who does not have RSS private key enabled
- * and with a private bookmark.
+ * A private bookmark should not show up in an rss feed if the
+ * user is not logged in nor passes the private key
*/
- public function testNoRSSPrivateKeyEnabled()
+ public function testPrivateNotLoggedIn()
{
- $this->setUnittestConfig(
- array('defaults' => array('privacy' => 2))
+ list($uId, $username) = $this->addUserData();
+ $this->addBookmark(
+ $uId, null, SemanticScuttle_Model_Bookmark::SPRIVATE
);
- /* create user without RSS private Key */
- list($req, $uId) = $this->getLoggedInRequest(null, true, false, false);
-
- /* create private bookmark */
- $this->bs->addBookmark(
- 'http://test', 'test', 'desc', 'note',
- 2,//private
- array(), null, null, false, false, $uId
- );
- /* create public bookmark */
- $this->bs->addBookmark(
- 'http://example.org', 'title', 'desc', 'priv',
- 0,//public
- array(), null, null, false, false, $uId
- );
-
- /* get user details */
- $user = $this->us->getUser($uId);
-
- $req->setMethod(HTTP_Request2::METHOD_POST);
- $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc'));
- $response = $req->send();
- $response_body = $response->getBody();
+ $req = $this->getRequest('/' . $username);
+ $response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
$items = $rss->channel->item;
- $this->assertEquals(1, count($items), 'Incorrect Number of RSS Items');
- $this->assertEquals('title', (string)$items[0]->title);
+ $this->assertEquals(0, count($items), 'I see a private bookmark');
}//end testNoRSSPrivateKeyEnabled
@@ -54,38 +33,22 @@ class www_rssTest extends TestBaseApi
*/
public function testRSSPrivateKeyEnabled()
{
- $this->setUnittestConfig(
- array('defaults' => array('privacy' => 2))
+ list($uId, $username, $password, $privateKey) = $this->addUserData(
+ null, null, true
);
-
- /* create user with RSS private Key */
- list($req, $uId) = $this->getLoggedInRequest(null, true, false, true);
-
- /* create private bookmark */
- $this->bs->addBookmark(
- 'http://test', 'test', 'desc', 'note',
- 2,//private
- array(), null, null, false, false, $uId
+ $this->addBookmark(
+ $uId, null, SemanticScuttle_Model_Bookmark::SPRIVATE,
+ null, 'private bookmark'
);
- /* create public bookmark */
- $this->bs->addBookmark(
- 'http://example.org', 'title', 'desc', 'priv',
- 0,//public
- array(), null, null, false, false, $uId
- );
-
- /* get user details */
- $user = $this->us->getUser($uId);
- $req->setMethod(HTTP_Request2::METHOD_POST);
- $req->setUrl($this->getTestUrl('/' . $user['username'] . '?sort=date_desc&privatekey=' . $user['privateKey']));
- $response = $req->send();
- $response_body = $response->getBody();
+ $req = $this->getRequest('/' . $username . '?privatekey=' . $privateKey);
+ $response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
$items = $rss->channel->item;
- $this->assertEquals(2, count($items), 'Incorrect Number of RSS Items');
+ $this->assertEquals(1, count($items), 'I miss the private bookmark');
+ $this->assertEquals('private bookmark', (string)$items[0]->title);
}//end testRSSPrivateKeyEnabled
--
cgit v1.2.3-54-g00ecf
From f2ac531f2646c34c107b92cd9ff1e2c1a12c9b39 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 19:52:02 +0200
Subject: test that using the private key does not leave unwanted login cookies
---
tests/www/rssTest.php | 41 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 38 insertions(+), 3 deletions(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index fc49264..d6891d6 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -24,14 +24,15 @@ class www_rssTest extends TestBaseApi
$items = $rss->channel->item;
$this->assertEquals(0, count($items), 'I see a private bookmark');
- }//end testNoRSSPrivateKeyEnabled
+ }
+
/**
* Test a user who has RSS private key setup
* with private bookmark.
*/
- public function testRSSPrivateKeyEnabled()
+ public function testPrivateWithPrivateKey()
{
list($uId, $username, $password, $privateKey) = $this->addUserData(
null, null, true
@@ -49,9 +50,43 @@ class www_rssTest extends TestBaseApi
$this->assertEquals(1, count($items), 'I miss the private bookmark');
$this->assertEquals('private bookmark', (string)$items[0]->title);
- }//end testRSSPrivateKeyEnabled
+ }
+
+
+
+ /**
+ * Verify that fetching the feed with a private key
+ * does not keep you logged in
+ */
+ public function testPrivatekeyDoesNotKeepLoggedYouIn()
+ {
+ list($uId, $username, $password, $privateKey) = $this->addUserData(
+ null, null, true
+ );
+ $this->addBookmark(
+ $uId, null, SemanticScuttle_Model_Bookmark::SPRIVATE,
+ null, 'private bookmark'
+ );
+ $req = $this->getRequest('/' . $username . '?privatekey=' . $privateKey);
+ $cookies = $req->setCookieJar()->getCookieJar();
+ $response_body = $req->send()->getBody();
+
+ $rss = simplexml_load_string($response_body);
+ $items = $rss->channel->item;
+
+ $this->assertEquals(1, count($items), 'I miss the private bookmark');
+ $this->assertEquals('private bookmark', (string)$items[0]->title);
+
+ //request the feed again, with the same cookies
+ $req = $this->getRequest('/' . $username);
+ $req->setCookieJar($cookies);
+ $response_body = $req->send()->getBody();
+ $rss = simplexml_load_string($response_body);
+ $items = $rss->channel->item;
+ $this->assertEquals(0, count($items), 'I still see the private bookmark');
+ }
}//end class www_rssTest
?>
--
cgit v1.2.3-54-g00ecf
From 588d63a2c740335bb4ff7fbe7454fbe3876ea9c1 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 19:59:06 +0200
Subject: better method names
---
tests/www/rssTest.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index d6891d6..63c2b3d 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -10,7 +10,7 @@ class www_rssTest extends TestBaseApi
* A private bookmark should not show up in an rss feed if the
* user is not logged in nor passes the private key
*/
- public function testPrivateNotLoggedIn()
+ public function testPrivateBookmarkNotLoggedIn()
{
list($uId, $username) = $this->addUserData();
$this->addBookmark(
@@ -32,7 +32,7 @@ class www_rssTest extends TestBaseApi
* Test a user who has RSS private key setup
* with private bookmark.
*/
- public function testPrivateWithPrivateKey()
+ public function testPrivateBookmarkWithPrivateKey()
{
list($uId, $username, $password, $privateKey) = $this->addUserData(
null, null, true
@@ -58,7 +58,7 @@ class www_rssTest extends TestBaseApi
* Verify that fetching the feed with a private key
* does not keep you logged in
*/
- public function testPrivatekeyDoesNotKeepLoggedYouIn()
+ public function testPrivateKeyDoesNotKeepLoggedYouIn()
{
list($uId, $username, $password, $privateKey) = $this->addUserData(
null, null, true
--
cgit v1.2.3-54-g00ecf
From 57a5f6864d0241ab513b53a02c7e4ab9ebdeda0d Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 20:04:03 +0200
Subject: add own assertion to make it easier to switch to atom
---
tests/www/rssTest.php | 33 +++++++++++++++++++++++----------
1 file changed, 23 insertions(+), 10 deletions(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 63c2b3d..477e98c 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -6,6 +6,23 @@ class www_rssTest extends TestBaseApi
{
protected $urlPart = 'rss.php';
+
+ /**
+ * Verifies that the given number of feed items exist in the feed
+ * XML tree.
+ *
+ * @var SimpleXMLElement $simpleXml RSS feed root element
+ * @var integer $nCount Number of expected feed items
+ * @var string $msg Error message
+ */
+ protected function assertItemCount(
+ SimpleXMLElement $simpleXml, $nCount, $msg = null
+ ) {
+ $this->assertEquals($nCount, count($simpleXml->channel->item), $msg);
+ }
+
+
+
/**
* A private bookmark should not show up in an rss feed if the
* user is not logged in nor passes the private key
@@ -21,9 +38,7 @@ class www_rssTest extends TestBaseApi
$response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
- $items = $rss->channel->item;
-
- $this->assertEquals(0, count($items), 'I see a private bookmark');
+ $this->assertItemCount($rss, 0, 'I see a private bookmark');
}
@@ -46,10 +61,10 @@ class www_rssTest extends TestBaseApi
$response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
- $items = $rss->channel->item;
-
- $this->assertEquals(1, count($items), 'I miss the private bookmark');
- $this->assertEquals('private bookmark', (string)$items[0]->title);
+ $this->assertItemCount($rss, 1, 'I miss the private bookmark');
+ $this->assertEquals(
+ 'private bookmark', (string)$rss->channel->item[0]->title
+ );
}
@@ -83,9 +98,7 @@ class www_rssTest extends TestBaseApi
$req->setCookieJar($cookies);
$response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
- $items = $rss->channel->item;
-
- $this->assertEquals(0, count($items), 'I still see the private bookmark');
+ $this->assertItemCount($rss, 0, 'I still see the private bookmark');
}
}//end class www_rssTest
--
cgit v1.2.3-54-g00ecf
From 673fdc87582c2087beed8d33505213cbd83755cb Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 21:55:07 +0200
Subject: rename methods to keep them clear
---
tests/www/rssTest.php | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 477e98c..4fab479 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -27,7 +27,7 @@ class www_rssTest extends TestBaseApi
* A private bookmark should not show up in an rss feed if the
* user is not logged in nor passes the private key
*/
- public function testPrivateBookmarkNotLoggedIn()
+ public function testUserPrivateBookmarkNotLoggedIn()
{
list($uId, $username) = $this->addUserData();
$this->addBookmark(
@@ -47,7 +47,7 @@ class www_rssTest extends TestBaseApi
* Test a user who has RSS private key setup
* with private bookmark.
*/
- public function testPrivateBookmarkWithPrivateKey()
+ public function testUserPrivateBookmarkWithPrivateKey()
{
list($uId, $username, $password, $privateKey) = $this->addUserData(
null, null, true
@@ -73,7 +73,7 @@ class www_rssTest extends TestBaseApi
* Verify that fetching the feed with a private key
* does not keep you logged in
*/
- public function testPrivateKeyDoesNotKeepLoggedYouIn()
+ public function testUserPrivateKeyDoesNotKeepLoggedYouIn()
{
list($uId, $username, $password, $privateKey) = $this->addUserData(
null, null, true
--
cgit v1.2.3-54-g00ecf
From 763d394436dc632bf18bff8876af22be9b44e9f4 Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 22:27:17 +0200
Subject: test global feed with private bookmarks
---
tests/www/rssTest.php | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 49 insertions(+), 3 deletions(-)
(limited to 'tests')
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 4fab479..75e4363 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -23,8 +23,29 @@ class www_rssTest extends TestBaseApi
+
/**
- * A private bookmark should not show up in an rss feed if the
+ * A private bookmark should not show up in the global rss feed if the
+ * user is not logged in nor passes the private key
+ */
+ public function testAllPrivateBookmarkNotLoggedIn()
+ {
+ list($uId, $username) = $this->addUserData();
+ $this->addBookmark(
+ $uId, null, SemanticScuttle_Model_Bookmark::SPRIVATE
+ );
+
+ $req = $this->getRequest();
+ $response_body = $req->send()->getBody();
+
+ $rss = simplexml_load_string($response_body);
+ $this->assertItemCount($rss, 0, 'I see a private bookmark');
+ }
+
+
+
+ /**
+ * A private bookmark should not show up in the user's rss feed if the
* user is not logged in nor passes the private key
*/
public function testUserPrivateBookmarkNotLoggedIn()
@@ -43,9 +64,34 @@ class www_rssTest extends TestBaseApi
+
+ /**
+ * Test the global feed by passing the private key
+ */
+ public function testAllPrivateBookmarkWithPrivateKey()
+ {
+ list($uId, $username, $password, $privateKey) = $this->addUserData(
+ null, null, true
+ );
+ $this->addBookmark(
+ $uId, null, SemanticScuttle_Model_Bookmark::SPRIVATE,
+ null, 'private bookmark'
+ );
+
+ $req = $this->getRequest('?privatekey=' . $privateKey);
+ $response_body = $req->send()->getBody();
+
+ $rss = simplexml_load_string($response_body);
+ $this->assertItemCount($rss, 1, 'I miss the private bookmark');
+ $this->assertEquals(
+ 'private bookmark', (string)$rss->channel->item[0]->title
+ );
+ }
+
+
+
/**
- * Test a user who has RSS private key setup
- * with private bookmark.
+ * Test the user feed by passing the private key
*/
public function testUserPrivateBookmarkWithPrivateKey()
{
--
cgit v1.2.3-54-g00ecf
From 3d11286cbcc3cb35efe11f6e4a4ef5ac81620bda Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Mon, 27 Jun 2011 22:31:24 +0200
Subject: privatekey -> privateKey everywhere
---
src/SemanticScuttle/Service/User.php | 20 ++++++++++----------
tests/TestBase.php | 2 +-
tests/UserTest.php | 24 ++++++++++++------------
tests/www/bookmarksTest.php | 4 ++--
tests/www/indexTest.php | 4 ++--
tests/www/rssTest.php | 6 +++---
www/bookmarks.php | 2 +-
www/index.php | 2 +-
www/rss.php | 16 ++++++++--------
www/tags.php | 2 +-
10 files changed, 41 insertions(+), 41 deletions(-)
(limited to 'tests')
diff --git a/src/SemanticScuttle/Service/User.php b/src/SemanticScuttle/Service/User.php
index b5b053f..7550ed2 100644
--- a/src/SemanticScuttle/Service/User.php
+++ b/src/SemanticScuttle/Service/User.php
@@ -51,7 +51,7 @@ class SemanticScuttle_Service_User extends SemanticScuttle_DbService
'primary' => 'uId',
'username' => 'username',
'password' => 'password',
- 'privatekey' => 'privatekey'
+ 'privateKey' => 'privateKey'
);
protected $profileurl;
@@ -219,13 +219,13 @@ class SemanticScuttle_Service_User extends SemanticScuttle_DbService
/**
* Returns user row from database.
*
- * @param string $privatekey Private Key
+ * @param string $privateKey Private Key
*
* @return array User array from database, false if no user was found
*/
- public function getUserByPrivateKey($privatekey)
+ public function getUserByPrivateKey($privateKey)
{
- return $this->_getuser($this->getFieldName('privatekey'), $privatekey);
+ return $this->_getuser($this->getFieldName('privateKey'), $privateKey);
}
function getObjectUserByUsername($username) {
@@ -539,24 +539,24 @@ class SemanticScuttle_Service_User extends SemanticScuttle_DbService
}
/**
- * Try to authenticate via the privatekey
+ * Try to authenticate via the privateKey
*
- * @param string $privatekey Private Key
+ * @param string $privateKey Private Key
*
* @return boolean true if the user could be authenticated,
* false if not.
*/
- public function loginPrivateKey($privatekey)
+ public function loginPrivateKey($privateKey)
{
/* Check if private key valid and enabled */
- if (!$this->isPrivateKeyValid($privatekey)) {
+ if (!$this->isPrivateKeyValid($privateKey)) {
return false;
}
$query = 'SELECT '. $this->getFieldName('primary') .' FROM '
. $this->getTableName() .' WHERE '
- . $this->getFieldName('privatekey') .' = "'
- . $this->db->sql_escape($privatekey) .'"';
+ . $this->getFieldName('privateKey') .' = "'
+ . $this->db->sql_escape($privateKey) .'"';
if (!($dbresult = $this->db->sql_query($query))) {
message_die(
diff --git a/tests/TestBase.php b/tests/TestBase.php
index 2180d2d..2914749 100644
--- a/tests/TestBase.php
+++ b/tests/TestBase.php
@@ -99,7 +99,7 @@ class TestBase extends PHPUnit_Framework_TestCase
* @param string $password Password, may be null
* @param mixed $privateKey String private key or boolean true to generate one
*
- * @return array ID of user, Name of user, password of user, privatekey
+ * @return array ID of user, Name of user, password of user, privateKey
*/
protected function addUserData(
$username = null, $password = null, $privateKey = null
diff --git a/tests/UserTest.php b/tests/UserTest.php
index 230167d..6cd6786 100644
--- a/tests/UserTest.php
+++ b/tests/UserTest.php
@@ -40,7 +40,7 @@ class UserTest extends TestBase
public function testAddUserPrivateKey()
{
$name = substr(md5(uniqid()), 0, 6);
- $pkey = 'my-privatekey';
+ $pkey = 'my-privateKey';
$id = $this->us->addUser(
$name, uniqid(), 'foo@example.org', $pkey
);
@@ -413,17 +413,17 @@ class UserTest extends TestBase
$randKey2 = '-'.$this->us->getNewPrivateKey();
$this->assertFalse(
$this->us->isPrivateKeyValid($randKey2),
- 'disabled privatekey should return false'
+ 'disabled privateKey should return false'
);
}
public function testLoginPrivateKeyInvalid()
{
- /* normal user with enabled privatekey */
+ /* normal user with enabled privateKey */
$randKey = $this->us->getNewPrivateKey();
$uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
- /* user that has disabled privatekey */
+ /* user that has disabled privateKey */
$randKey2 = '-'.$this->us->getNewPrivateKey();
$uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
@@ -436,10 +436,10 @@ class UserTest extends TestBase
public function testLoginPrivateKeyValidEnabledKey()
{
- /* normal user with enabled privatekey */
+ /* normal user with enabled privateKey */
$randKey = $this->us->getNewPrivateKey();
$uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
- /* user that has disabled privatekey */
+ /* user that has disabled privateKey */
$randKey2 = '-'.$this->us->getNewPrivateKey();
$uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
@@ -453,10 +453,10 @@ class UserTest extends TestBase
public function testLoginPrivateKeyInvalidEnabledKey()
{
- /* normal user with enabled privatekey */
+ /* normal user with enabled privateKey */
$randKey = $this->us->getNewPrivateKey();
$uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
- /* user that has disabled privatekey */
+ /* user that has disabled privateKey */
$randKey2 = '-'.$this->us->getNewPrivateKey();
$uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
@@ -470,10 +470,10 @@ class UserTest extends TestBase
public function testLoginPrivateKeyValidDisabledKey()
{
- /* normal user with enabled privatekey */
+ /* normal user with enabled privateKey */
$randKey = $this->us->getNewPrivateKey();
$uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
- /* user that has disabled privatekey */
+ /* user that has disabled privateKey */
$randKey2 = '-'.$this->us->getNewPrivateKey();
$uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
@@ -491,10 +491,10 @@ class UserTest extends TestBase
public function testLoginPrivateKeyInvalidDisabled()
{
- /* normal user with enabled privatekey */
+ /* normal user with enabled privateKey */
$randKey = $this->us->getNewPrivateKey();
$uid1 = $this->addUser('testusername', 'passw0rd', $randKey);
- /* user that has disabled privatekey */
+ /* user that has disabled privateKey */
$randKey2 = '-'.$this->us->getNewPrivateKey();
$uid2 = $this->addUser('seconduser', 'passw0RD', $randKey2);
diff --git a/tests/www/bookmarksTest.php b/tests/www/bookmarksTest.php
index 1e1f4eb..ae82118 100755
--- a/tests/www/bookmarksTest.php
+++ b/tests/www/bookmarksTest.php
@@ -92,7 +92,7 @@ class www_bookmarksTest extends TestBaseApi
$this->assertEquals(
2, count($elements), 'Number of Links in Head not correct'
);
- $this->assertContains('privatekey=', (string)$elements[1]['href']);
+ $this->assertContains('privateKey=', (string)$elements[1]['href']);
}//end testVerifyPrivateRSSLinkExists
@@ -121,7 +121,7 @@ class www_bookmarksTest extends TestBaseApi
$this->assertEquals(
1, count($elements), 'Number of Links in Head not correct'
);
- $this->assertNotContains('privatekey=', (string)$elements[0]['href']);
+ $this->assertNotContains('privateKey=', (string)$elements[0]['href']);
}//end testVerifyPrivateRSSLinkDoesNotExist
}//end class www_bookmarksTest
diff --git a/tests/www/indexTest.php b/tests/www/indexTest.php
index 18cb75a..503fd1f 100644
--- a/tests/www/indexTest.php
+++ b/tests/www/indexTest.php
@@ -26,7 +26,7 @@ class www_indexTest extends TestBaseApi
$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']);
+ $this->assertContains('privateKey=', (string)$elements[1]['href']);
}//end testVerifyPrivateRSSLinkExists
@@ -50,7 +50,7 @@ class www_indexTest extends TestBaseApi
$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']);
+ $this->assertNotContains('privateKey=', (string)$elements[0]['href']);
}//end testVerifyPrivateRSSLinkDoesNotExist
diff --git a/tests/www/rssTest.php b/tests/www/rssTest.php
index 75e4363..71d0198 100644
--- a/tests/www/rssTest.php
+++ b/tests/www/rssTest.php
@@ -78,7 +78,7 @@ class www_rssTest extends TestBaseApi
null, 'private bookmark'
);
- $req = $this->getRequest('?privatekey=' . $privateKey);
+ $req = $this->getRequest('?privateKey=' . $privateKey);
$response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
@@ -103,7 +103,7 @@ class www_rssTest extends TestBaseApi
null, 'private bookmark'
);
- $req = $this->getRequest('/' . $username . '?privatekey=' . $privateKey);
+ $req = $this->getRequest('/' . $username . '?privateKey=' . $privateKey);
$response_body = $req->send()->getBody();
$rss = simplexml_load_string($response_body);
@@ -129,7 +129,7 @@ class www_rssTest extends TestBaseApi
null, 'private bookmark'
);
- $req = $this->getRequest('/' . $username . '?privatekey=' . $privateKey);
+ $req = $this->getRequest('/' . $username . '?privateKey=' . $privateKey);
$cookies = $req->setCookieJar()->getCookieJar();
$response_body = $req->send()->getBody();
diff --git a/www/bookmarks.php b/www/bookmarks.php
index 44119db..7056fa6 100644
--- a/www/bookmarks.php
+++ b/www/bookmarks.php
@@ -276,7 +276,7 @@ if ($templatename == 'editbookmark.tpl') {
$tplVars['rsschannels'],
array(
filter($sitename . $rssTitle. sprintf(T_(': (private) ')) . $currentUsername),
- createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privatekey='.$currentUser->getPrivateKey())
+ createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privateKey='.$currentUser->getPrivateKey())
)
);
}
diff --git a/www/index.php b/www/index.php
index 2fa21f8..f270f73 100644
--- a/www/index.php
+++ b/www/index.php
@@ -52,7 +52,7 @@ if ($userservice->isLoggedOn()) {
$tplVars['rsschannels'],
array(
filter(sprintf(T_('%s: Recent bookmarks (+private) %s'), $sitename, $currentUsername)),
- createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privatekey='.$currentUser->getPrivateKey())
+ createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privateKey='.$currentUser->getPrivateKey())
)
);
}
diff --git a/www/rss.php b/www/rss.php
index b8f6948..d888726 100644
--- a/www/rss.php
+++ b/www/rss.php
@@ -64,9 +64,9 @@ if (!isset($rssEntries) || $rssEntries <= 0) {
$rssEntries = $maxRssEntries;
}
-$privatekey = null;
-if (isset($_GET['privatekey'])) {
- $privatekey = $_GET['privatekey'];
+$privateKey = null;
+if (isset($_GET['privateKey'])) {
+ $privateKey = $_GET['privateKey'];
}
$userid = null;
@@ -83,10 +83,10 @@ if ($user && $user != 'all') {
} else {
if ($userinfo = $userservice->getUserByUsername($user)) {
$userid =& $userinfo[$userservice->getFieldName('primary')];
- /* if user is not logged in and has valid privatekey */
+ /* if user is not logged in and has valid privateKey */
if (!$userservice->isLoggedOn()) {
- if ($privatekey != null) {
- if (!$userservice->loginPrivateKey($privatekey)) {
+ if ($privateKey != null) {
+ if (!$userservice->loginPrivateKey($privateKey)) {
$tplVars['error'] = sprintf(T_('Failed to Autenticate User with username %s using private key'), $user);
header('Content-type: text/html; charset=utf-8');
$templateservice->loadTemplate('error.404.tpl', $tplVars);
@@ -106,8 +106,8 @@ if ($user && $user != 'all') {
}
$pagetitle .= ": ". $user;
} else {
- if ($privatekey != null) {
- if (!$userservice->loginPrivateKey($privatekey)) {
+ if ($privateKey != null) {
+ if (!$userservice->loginPrivateKey($privateKey)) {
$tplVars['error'] = sprintf(T_('Failed to Autenticate User with username %s using private key'), $user);
header('Content-type: text/html; charset=utf-8');
$templateservice->loadTemplate('error.404.tpl', $tplVars);
diff --git a/www/tags.php b/www/tags.php
index 09725e4..fca8a04 100644
--- a/www/tags.php
+++ b/www/tags.php
@@ -77,7 +77,7 @@ if ($userservice->isLoggedOn()) {
$tplVars['rsschannels'],
array(
filter($sitename .': Tags: '. $cat . sprintf(T_(': (private) ')) . $currentUsername),
- createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privatekey='.$currentUser->getPrivateKey())
+ createURL('rss', filter($currentUsername, 'url') . '?sort='.getSortOrder().'&privateKey='.$currentUser->getPrivateKey())
)
);
}
--
cgit v1.2.3-54-g00ecf
From 82ee59779ea9a5d2d9234e622f56cfcc4c22ff3a Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Thu, 21 Jul 2011 21:32:48 +0200
Subject: support global and per-host configuration files
---
src/SemanticScuttle/Config.php | 109 ++++++++++++++++++
src/SemanticScuttle/header.php | 17 ++-
tests/SemanticScuttle/ConfigTest.php | 206 +++++++++++++++++++++++++++++++++++
3 files changed, 329 insertions(+), 3 deletions(-)
create mode 100644 src/SemanticScuttle/Config.php
create mode 100644 tests/SemanticScuttle/ConfigTest.php
(limited to 'tests')
diff --git a/src/SemanticScuttle/Config.php b/src/SemanticScuttle/Config.php
new file mode 100644
index 0000000..0773310
--- /dev/null
+++ b/src/SemanticScuttle/Config.php
@@ -0,0 +1,109 @@
+
+ * @license AGPL http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/**
+ * Configuration handling
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Christian Weiske
+ * @license AGPL http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class SemanticScuttle_Config
+{
+ /**
+ * Prefix for configuration files.
+ * Used to inject stream wrapper protocol for unit testing
+ *
+ * @var string
+ */
+ public $filePrefix = '';
+
+
+
+ /**
+ * Finds the correct data directory
+ *
+ * @return string Full path to the data directory with a trailing slash
+ */
+ protected function getDataDir()
+ {
+ if ('@data_dir@' == '@' . 'data_dir@') {
+ //non pear-install
+ $datadir = dirname(__FILE__) . '/../../data/';
+ } else {
+ //pear installation; files are in include path
+ $datadir = '@data_dir@/SemanticScuttle/';
+ }
+
+ return $datadir;
+ }
+
+
+
+ /**
+ * Tries to find a configuration file by looking in different
+ * places:
+ * - pear data_dir/SemanticScuttle/config-$hostname.php
+ * - pear data_dir/SemanticScuttle/config.php
+ * - /etc/semanticscuttle/config-$hostname.php
+ * - /etc/semanticscuttle/config.php
+ *
+ * Paths with host name have priority.
+ *
+ * @return array Array with config file path as first value
+ * and default config file path as second value.
+ * Any may be NULL if not found
+ */
+ public function findFiles()
+ {
+ //use basename to prevent path injection
+ $host = basename($_SERVER['HTTP_HOST']);
+ $datadir = $this->getDataDir();
+
+ $arFiles = array(
+ $datadir . 'config.' . $host . '.php',
+ '/etc/semanticscuttle/config.' . $host . '.php',
+ $datadir . 'config.php',
+ '/etc/semanticscuttle/config.php',
+ );
+
+ $configfile = null;
+ foreach ($arFiles as $file) {
+ if (file_exists($this->filePrefix . $file)) {
+ $configfile = $file;
+ break;
+ }
+ }
+
+ //find default file
+ $arDefaultFiles = array_unique(
+ array(
+ substr($configfile, 0, -3) . 'default.php',
+ $datadir . 'config.default.php',
+ '/etc/semanticscuttle/config.default.php',
+ )
+ );
+ $defaultfile = null;
+ foreach ($arDefaultFiles as $file) {
+ if (file_exists($this->filePrefix . $file)) {
+ $defaultfile = $file;
+ break;
+ }
+ }
+ return array($configfile, $defaultfile);
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php
index 6c0d4df..9252300 100644
--- a/src/SemanticScuttle/header.php
+++ b/src/SemanticScuttle/header.php
@@ -25,8 +25,19 @@ if ('@data_dir@' == '@' . 'data_dir@') {
//FIXME: when you have multiple installations, the www_dir will be wrong
$wwwdir = '@www_dir@/SemanticScuttle/';
}
+require_once dirname(__FILE__) . '/Config.php';
-if (!file_exists($datadir . '/config.php')) {
+$cfg = new SemanticScuttle_Config();
+list($configfile, $defaultfile) = $cfg->findFiles();
+if ($defaultfile === null) {
+ header('HTTP/1.0 500 Internal Server Error');
+ die(
+ 'No default configuration file config.default.php found.'
+ . ' This is really, really strange'
+ . "\n"
+ );
+}
+if ($configfile === null) {
header('HTTP/1.0 500 Internal Server Error');
die(
'Please copy "config.php.dist" to "config.php" in data/ folder.'
@@ -39,8 +50,8 @@ set_include_path(
);
// 1 // First requirements part (before debug management)
-require_once $datadir . '/config.default.php';
-require_once $datadir . '/config.php';
+require_once $defaultfile;
+require_once $configfile;
if (isset($_GET['unittestMode']) && $_GET['unittestMode'] == 1
) {
diff --git a/tests/SemanticScuttle/ConfigTest.php b/tests/SemanticScuttle/ConfigTest.php
new file mode 100644
index 0000000..670f82a
--- /dev/null
+++ b/tests/SemanticScuttle/ConfigTest.php
@@ -0,0 +1,206 @@
+_setPointer($scope, $varpath)) {
+ return false;
+ }
+
+ return parent::url_stat($path, $flags);
+ }
+}
+
+class SemanticScuttle_ConfigTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * Configuration object to test
+ */
+ protected $cfg;
+
+
+ public function setUpWrapper()
+ {
+ if (!in_array('unittest', stream_get_wrappers())) {
+ stream_wrapper_register(
+ 'unittest', 'SemanticScuttle_ConfigTest_StreamVar'
+ );
+ }
+
+ $this->cfg = $this->getMock(
+ 'SemanticScuttle_Config',
+ array('getDataDir')
+ );
+ $this->cfg->expects($this->once())
+ ->method('getDataDir')
+ ->will($this->returnValue('/data-dir/'));
+
+ $this->cfg->filePrefix = 'unittest://GLOBALS/unittest-dir';
+ }
+
+
+
+ public function testFindLocalData()
+ {
+ $this->setUpWrapper();
+ $GLOBALS['unittest-dir']['data-dir'] = array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ );
+ $this->assertEquals(
+ array(
+ '/data-dir/config.php',
+ '/data-dir/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindHostPreferredOverNonHostConfig()
+ {
+ $this->setUpWrapper();
+ $_SERVER['HTTP_HOST'] = 'foo.example.org';
+
+ $GLOBALS['unittest-dir']['data-dir'] = array(
+ 'config.php' => 'content',
+ 'config.foo.example.org.php' => 'content',
+ 'config.default.php' => 'content'
+ );
+ $this->assertEquals(
+ array(
+ '/data-dir/config.foo.example.org.php',
+ '/data-dir/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindEtcHostPreferredOverLocalConfigPhp()
+ {
+ $this->setUpWrapper();
+ $_SERVER['HTTP_HOST'] = 'foo.example.org';
+
+ $GLOBALS['unittest-dir'] = array(
+ 'etc' => array(
+ 'semanticscuttle' => array(
+ 'config.foo.example.org.php' => 'content',
+ )
+ ),
+ 'data-dir' => array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ )
+ );
+
+ $this->assertEquals(
+ array(
+ '/etc/semanticscuttle/config.foo.example.org.php',
+ '/data-dir/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindEtcConfig()
+ {
+ $this->setUpWrapper();
+ $GLOBALS['unittest-dir'] = array(
+ 'etc' => array(
+ 'semanticscuttle' => array(
+ 'config.php' => 'content'
+ )
+ ),
+ 'data-dir' => array(
+ 'config.default.php' => 'content'
+ )
+ );
+ $this->assertEquals(
+ array(
+ '/etc/semanticscuttle/config.php',
+ '/data-dir/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindEtcDefaultConfig()
+ {
+ $this->setUpWrapper();
+ $GLOBALS['unittest-dir'] = array(
+ 'etc' => array(
+ 'semanticscuttle' => array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ )
+ ),
+ );
+ $this->assertEquals(
+ array(
+ '/etc/semanticscuttle/config.php',
+ '/etc/semanticscuttle/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindLocalDefaultPreferredOverEtcDefault()
+ {
+ $this->setUpWrapper();
+ $GLOBALS['unittest-dir'] = array(
+ 'etc' => array(
+ 'semanticscuttle' => array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ )
+ ),
+ 'data-dir' => array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ )
+ );
+ $this->assertEquals(
+ array(
+ '/data-dir/config.php',
+ '/data-dir/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+ public function testFindSameDirDefaultPreferred()
+ {
+ $this->setUpWrapper();
+ $GLOBALS['unittest-dir'] = array(
+ 'etc' => array(
+ 'semanticscuttle' => array(
+ 'config.php' => 'content',
+ 'config.default.php' => 'content'
+ )
+ ),
+ 'data-dir' => array(
+ 'config.default.php' => 'content'
+ )
+ );
+ $this->assertEquals(
+ array(
+ '/etc/semanticscuttle/config.php',
+ '/etc/semanticscuttle/config.default.php'
+ ),
+ $this->cfg->findFiles()
+ );
+ }
+
+}
+
+?>
\ No newline at end of file
--
cgit v1.2.3-54-g00ecf
From 320d6733442faffae9b68307655bf4292bb1f94d Mon Sep 17 00:00:00 2001
From: Christian Weiske
Date: Sat, 23 Jul 2011 14:19:09 +0200
Subject: Fix bug #3160512: Make SemantiScuttle work with FastCGI
---
doc/ChangeLog | 1 +
src/SemanticScuttle/Environment.php | 52 +++++++++++++++++
src/SemanticScuttle/constants.php | 14 +----
src/SemanticScuttle/header.php | 1 +
tests/SemanticScuttle/EnvironmentTest.php | 95 +++++++++++++++++++++++++++++++
5 files changed, 151 insertions(+), 12 deletions(-)
create mode 100644 src/SemanticScuttle/Environment.php
create mode 100644 tests/SemanticScuttle/EnvironmentTest.php
(limited to 'tests')
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 229db55..fc8c718 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -7,6 +7,7 @@ ChangeLog for SemantiScuttle
-------------------
- Fix bug #3375635: XML parsing problem in top.inc.php
- Fix bug #3375428: Forgot to remove some old dojo files
+- Fix bug #3160512: Make SemantiScuttle work with FastCGI
0.98.0 - 2011-07-21
diff --git a/src/SemanticScuttle/Environment.php b/src/SemanticScuttle/Environment.php
new file mode 100644
index 0000000..e5fe3de
--- /dev/null
+++ b/src/SemanticScuttle/Environment.php
@@ -0,0 +1,52 @@
+
+ * @license AGPL http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/**
+ * Server environment handling methods
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Christian Weiske
+ * @license AGPL http://www.gnu.org/licenses/agpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class SemanticScuttle_Environment
+{
+ /**
+ * Determines the correct $_SERVER['PATH_INFO'] value
+ *
+ * @return string New value
+ */
+ public static function getServerPathInfo()
+ {
+ /* old code that does not work today.
+ if you find that this code helps you, tell us
+ and send us the output of var_export($_SERVER);
+ // Correct bugs with PATH_INFO (maybe for Apache 1 or CGI) -- for 1&1 host...
+ if (isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO'])) {
+ if (strlen($_SERVER["PATH_INFO"])
\ No newline at end of file
diff --git a/src/SemanticScuttle/constants.php b/src/SemanticScuttle/constants.php
index 11ab0da..fcb2d90 100644
--- a/src/SemanticScuttle/constants.php
+++ b/src/SemanticScuttle/constants.php
@@ -69,16 +69,6 @@ define('PAGE_WATCHLIST', "watchlist");
// installations on the same host server
define('INSTALLATION_ID', md5($GLOBALS['dbname'].$GLOBALS['tableprefix']));
-// Correct bugs with PATH_INFO (maybe for Apache 1 or CGI) -- for 1&1 host...
-if (isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO'])) {
- if (strlen($_SERVER["PATH_INFO"])
diff --git a/src/SemanticScuttle/header.php b/src/SemanticScuttle/header.php
index 9252300..694df54 100644
--- a/src/SemanticScuttle/header.php
+++ b/src/SemanticScuttle/header.php
@@ -25,6 +25,7 @@ if ('@data_dir@' == '@' . 'data_dir@') {
//FIXME: when you have multiple installations, the www_dir will be wrong
$wwwdir = '@www_dir@/SemanticScuttle/';
}
+require_once dirname(__FILE__) . '/Environment.php';
require_once dirname(__FILE__) . '/Config.php';
$cfg = new SemanticScuttle_Config();
diff --git a/tests/SemanticScuttle/EnvironmentTest.php b/tests/SemanticScuttle/EnvironmentTest.php
new file mode 100644
index 0000000..a41efa1
--- /dev/null
+++ b/tests/SemanticScuttle/EnvironmentTest.php
@@ -0,0 +1,95 @@
+ 'Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.9.168 Version/11.50',
+ 'HTTP_HOST' => 'bm-cgi.bogo',
+ 'HTTP_ACCEPT' => 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
+ 'HTTP_ACCEPT_LANGUAGE' => 'de-DE,de;q=0.9,en;q=0.8',
+ 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
+ 'HTTP_COOKIE' => 'PHPSESSID=ga446jhs0e09hkt60u9bsmp0n0',
+ 'HTTP_CACHE_CONTROL' => 'no-cache',
+ 'HTTP_CONNECTION' => 'Keep-Alive',
+ 'PATH' => '/usr/local/bin:/usr/bin:/bin',
+ 'SERVER_SIGNATURE' => 'Apache/2.2.17 (Ubuntu) Server at bm-cgi.bogo Port 80',
+ 'SERVER_SOFTWARE' => 'Apache/2.2.17 (Ubuntu)',
+ 'SERVER_NAME' => 'bm-cgi.bogo',
+ 'SERVER_ADDR' => '127.0.0.1',
+ 'SERVER_PORT' => '80',
+ 'REMOTE_ADDR' => '127.0.0.1',
+ 'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
+ 'SERVER_ADMIN' => '[no address given]',
+ 'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php',
+ 'REMOTE_PORT' => '45349',
+ 'GATEWAY_INTERFACE' => 'CGI/1.1',
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
+ 'REQUEST_METHOD' => 'GET',
+ 'QUERY_STRING' => '',
+ 'REQUEST_URI' => '/profile.php/dummy',
+ 'SCRIPT_NAME' => '/profile.php',
+ 'PATH_INFO' => '/dummy',
+ 'PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/dummy',
+ 'PHP_SELF' => '/profile.php/dummy',
+ 'REQUEST_TIME' => 1311422546,
+ );
+ $this->assertEquals(
+ '/dummy', SemanticScuttle_Environment::getServerPathInfo()
+ );
+ }
+
+
+ public function testServerPathInfoFastCgi()
+ {
+ $_SERVER = array(
+ 'PHP_FCGI_MAX_REQUESTS' => '5000',
+ 'PHPRC' => '/etc/php5/cgi/5.3.6/',
+ 'PHP_FCGI_CHILDREN' => '3',
+ 'PWD' => '/var/www/cgi-bin',
+ 'FCGI_ROLE' => 'RESPONDER',
+ 'REDIRECT_HANDLER' => 'php-cgi',
+ 'REDIRECT_STATUS' => '200',
+ 'HTTP_USER_AGENT' => 'Opera/9.80 (X11; Linux x86_64; U; de) Presto/2.9.168 Version/11.50',
+ 'HTTP_HOST' => 'bm-cgi.bogo',
+ 'HTTP_ACCEPT' => 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1',
+ 'HTTP_ACCEPT_LANGUAGE' => 'de-DE,de;q=0.9,en;q=0.8',
+ 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
+ 'HTTP_COOKIE' => 'PHPSESSID=ga446jhs0e09hkt60u9bsmp0n0',
+ 'HTTP_CONNECTION' => 'Keep-Alive',
+ 'PATH' => '/usr/local/bin:/usr/bin:/bin',
+ 'SERVER_SIGNATURE' => 'Apache/2.2.17 (Ubuntu) Server at bm-cgi.bogo Port 80',
+ 'SERVER_SOFTWARE' => 'Apache/2.2.17 (Ubuntu)',
+ 'SERVER_NAME' => 'bm-cgi.bogo',
+ 'SERVER_ADDR' => '127.0.0.1',
+ 'SERVER_PORT' => '80',
+ 'REMOTE_ADDR' => '127.0.0.1',
+ 'DOCUMENT_ROOT' => '/etc/apache2/htdocs',
+ 'SERVER_ADMIN' => '[no address given]',
+ 'SCRIPT_FILENAME' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php',
+ 'REMOTE_PORT' => '45342',
+ 'REDIRECT_URL' => '/profile.php/dummy',
+ 'GATEWAY_INTERFACE' => 'CGI/1.1',
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
+ 'REQUEST_METHOD' => 'GET',
+ 'QUERY_STRING' => '',
+ 'REQUEST_URI' => '/profile.php/dummy',
+ 'SCRIPT_NAME' => '/profile.php',
+ 'PATH_INFO' => '/dummy',
+ 'PATH_TRANSLATED' => '/etc/apache2/htdocs/dummy',
+ 'ORIG_PATH_INFO' => '/profile.php/dummy',
+ 'ORIG_SCRIPT_NAME' => '/cgi-bin-php/php-cgi-5.3.6',
+ 'ORIG_SCRIPT_FILENAME' => '/var/www/cgi-bin/php-cgi-5.3.6',
+ 'ORIG_PATH_TRANSLATED' => '/home/cweiske/Dev/html/hosts/bm-cgi.bogo/profile.php/dummy',
+ 'PHP_SELF' => '/profile.php/dummy',
+ 'REQUEST_TIME' => 1311422521,
+ );
+ $this->assertEquals(
+ '/dummy', SemanticScuttle_Environment::getServerPathInfo()
+ );
+ }
+
+}
+
+?>
\ No newline at end of file
--
cgit v1.2.3-54-g00ecf