diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2013-09-17 09:39:45 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2013-09-17 09:39:45 +0200 |
commit | 4cd0ee47a8a66e42d80789612b183dd5b165b36e (patch) | |
tree | d5bd4beead5fa1612f0fbb117b5f7620996104a1 /tests | |
parent | 822daa8f8adb9c31b9bfeac67ff165c18dc321c2 (diff) | |
parent | 9d18e16c77e8c2690dd23dd19ca1f8e1968161c8 (diff) | |
download | nextcloud-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.xml | 21 | ||||
-rw-r--r-- | tests/data/db_structure2.xml | 21 | ||||
-rw-r--r-- | tests/lib/db.php | 38 | ||||
-rw-r--r-- | tests/lib/share/share.php | 145 |
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.' + ); + } } |