summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2013-09-17 09:39:45 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2013-09-17 09:39:45 +0200
commit4cd0ee47a8a66e42d80789612b183dd5b165b36e (patch)
treed5bd4beead5fa1612f0fbb117b5f7620996104a1 /tests
parent822daa8f8adb9c31b9bfeac67ff165c18dc321c2 (diff)
parent9d18e16c77e8c2690dd23dd19ca1f8e1968161c8 (diff)
downloadnextcloud-server-4cd0ee47a8a66e42d80789612b183dd5b165b36e.tar.gz
nextcloud-server-4cd0ee47a8a66e42d80789612b183dd5b165b36e.zip
Merge branch 'master' into appframework-master
Diffstat (limited to 'tests')
-rw-r--r--tests/data/db_structure.xml21
-rw-r--r--tests/data/db_structure2.xml21
-rw-r--r--tests/lib/db.php38
-rw-r--r--tests/lib/share/share.php145
4 files changed, 215 insertions, 10 deletions
diff --git a/tests/data/db_structure.xml b/tests/data/db_structure.xml
index 8f6dc5e2ecd..2e83bbb78c7 100644
--- a/tests/data/db_structure.xml
+++ b/tests/data/db_structure.xml
@@ -178,4 +178,25 @@
</declaration>
</table>
+ <table>
+ <name>*dbprefix*timestamp</name>
+ <declaration>
+ <field>
+ <name>id</name>
+ <autoincrement>1</autoincrement>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>timestamptest</name>
+ <type>timestamp</type>
+ <default></default>
+ <notnull>false</notnull>
+ </field>
+ </declaration>
+ </table>
+
</database>
diff --git a/tests/data/db_structure2.xml b/tests/data/db_structure2.xml
index 6f12f81f477..bbfb24985cb 100644
--- a/tests/data/db_structure2.xml
+++ b/tests/data/db_structure2.xml
@@ -75,4 +75,25 @@
</table>
+ <table>
+ <name>*dbprefix*timestamp</name>
+ <declaration>
+ <field>
+ <name>id</name>
+ <autoincrement>1</autoincrement>
+ <type>integer</type>
+ <default>0</default>
+ <notnull>true</notnull>
+ <length>4</length>
+ </field>
+
+ <field>
+ <name>timestamptest</name>
+ <type>timestamp</type>
+ <default></default>
+ <notnull>false</notnull>
+ </field>
+ </declaration>
+ </table>
+
</database>
diff --git a/tests/lib/db.php b/tests/lib/db.php
index 1977025cf12..c87bee4ab99 100644
--- a/tests/lib/db.php
+++ b/tests/lib/db.php
@@ -145,4 +145,42 @@ class Test_DB extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, $result->numRows());
}
+
+ /**
+ * Tests whether the database is configured so it accepts and returns dates
+ * in the expected format.
+ */
+ public function testTimestampDateFormat() {
+ $table = '*PREFIX*'.$this->test_prefix.'timestamp';
+ $column = 'timestamptest';
+
+ $expectedFormat = 'Y-m-d H:i:s';
+ $expected = new \DateTime;
+
+ $query = OC_DB::prepare("INSERT INTO `$table` (`$column`) VALUES (?)");
+ $result = $query->execute(array($expected->format($expectedFormat)));
+ $this->assertEquals(
+ 1,
+ $result,
+ "Database failed to accept dates in the format '$expectedFormat'."
+ );
+
+ $id = OC_DB::insertid($table);
+ $query = OC_DB::prepare("SELECT * FROM `$table` WHERE `id` = ?");
+ $result = $query->execute(array($id));
+ $row = $result->fetchRow();
+
+ $actual = \DateTime::createFromFormat($expectedFormat, $row[$column]);
+ $this->assertInstanceOf(
+ '\DateTime',
+ $actual,
+ "Database failed to return dates in the format '$expectedFormat'."
+ );
+
+ $this->assertEquals(
+ $expected,
+ $actual,
+ 'Failed asserting that the returned date is the same as the inserted.'
+ );
+ }
}
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index e7d441a7e78..e02b0e4354d 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -29,6 +29,8 @@ class Test_Share extends PHPUnit_Framework_TestCase {
protected $group1;
protected $group2;
protected $resharing;
+ protected $dateInFuture;
+ protected $dateInPast;
public function setUp() {
OC_User::clearBackends();
@@ -58,6 +60,12 @@ class Test_Share extends PHPUnit_Framework_TestCase {
OC::registerShareHooks();
$this->resharing = OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes');
OC_Appconfig::setValue('core', 'shareapi_allow_resharing', 'yes');
+
+ // 20 Minutes in the past, 20 minutes in the future.
+ $now = time();
+ $dateFormat = 'Y-m-d H:i:s';
+ $this->dateInPast = date($dateFormat, $now - 20 * 60);
+ $this->dateInFuture = date($dateFormat, $now + 20 * 60);
}
public function tearDown() {
@@ -121,6 +129,26 @@ class Test_Share extends PHPUnit_Framework_TestCase {
}
}
+ protected function shareUserOneTestFileWithUserTwo() {
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ),
+ 'Failed asserting that user 1 successfully shared text.txt with user 2.'
+ );
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that test.txt is a shared file of user 1.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 has access to test.txt after initial sharing.'
+ );
+ }
+
public function testShareWithUser() {
// Invalid shares
$message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner';
@@ -146,10 +174,7 @@ class Test_Share extends PHPUnit_Framework_TestCase {
}
// Valid share
- $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ));
- $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
- OC_User::setUserId($this->user2);
- $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
+ $this->shareUserOneTestFileWithUserTwo();
// Attempt to share again
OC_User::setUserId($this->user1);
@@ -264,6 +289,66 @@ class Test_Share extends PHPUnit_Framework_TestCase {
$this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET));
}
+ public function testShareWithUserExpirationExpired() {
+ $this->shareUserOneTestFileWithUserTwo();
+
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInPast),
+ 'Failed asserting that user 1 successfully set an expiration date for the test.txt share.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertFalse(
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 no longer has access to test.txt after expiration.'
+ );
+ }
+
+ public function testShareWithUserExpirationValid() {
+ $this->shareUserOneTestFileWithUserTwo();
+
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInFuture),
+ 'Failed asserting that user 1 successfully set an expiration date for the test.txt share.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 still has access to test.txt after expiration date has been set.'
+ );
+ }
+
+ protected function shareUserOneTestFileWithGroupOne() {
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ),
+ 'Failed asserting that user 1 successfully shared text.txt with group 1.'
+ );
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that test.txt is a shared file of user 1.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 has access to test.txt after initial sharing.'
+ );
+
+ OC_User::setUserId($this->user3);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 3 has access to test.txt after initial sharing.'
+ );
+ }
+
public function testShareWithGroup() {
// Invalid shares
$message = 'Sharing test.txt failed, because the group foobar does not exist';
@@ -285,12 +370,7 @@ class Test_Share extends PHPUnit_Framework_TestCase {
OC_Appconfig::setValue('core', 'shareapi_share_policy', $policy);
// Valid share
- $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ));
- $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
- OC_User::setUserId($this->user2);
- $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
- OC_User::setUserId($this->user3);
- $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE));
+ $this->shareUserOneTestFileWithGroupOne();
// Attempt to share again
OC_User::setUserId($this->user1);
@@ -410,4 +490,49 @@ class Test_Share extends PHPUnit_Framework_TestCase {
$this->assertEquals(array(), OCP\Share::getItemsShared('test'));
}
+ public function testShareWithGroupExpirationExpired() {
+ $this->shareUserOneTestFileWithGroupOne();
+
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInPast),
+ 'Failed asserting that user 1 successfully set an expiration date for the test.txt share.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertFalse(
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 no longer has access to test.txt after expiration.'
+ );
+
+ OC_User::setUserId($this->user3);
+ $this->assertFalse(
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 3 no longer has access to test.txt after expiration.'
+ );
+ }
+
+ public function testShareWithGroupExpirationValid() {
+ $this->shareUserOneTestFileWithGroupOne();
+
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::setExpirationDate('test', 'test.txt', $this->dateInFuture),
+ 'Failed asserting that user 1 successfully set an expiration date for the test.txt share.'
+ );
+
+ OC_User::setUserId($this->user2);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 2 still has access to test.txt after expiration date has been set.'
+ );
+
+ OC_User::setUserId($this->user3);
+ $this->assertEquals(
+ array('test.txt'),
+ OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that user 3 still has access to test.txt after expiration date has been set.'
+ );
+ }
}