From 1d0a70e4166cf8c2974c1b669ba8b901478f86d7 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Wed, 25 Mar 2020 22:21:27 +0100 Subject: [PATCH 01/16] Use the shorter phpunit syntax for mocked return values in ManagerTest Signed-off-by: Christoph Wurst --- tests/lib/Share20/ManagerTest.php | 196 +++++++++++++++--------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 0fbbbcbe2e5eb..c6bd251b1361b 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -123,9 +123,9 @@ protected function setUp(): void { $this->l10nFactory = $this->createMock(IFactory::class); $this->l = $this->createMock(IL10N::class); $this->l->method('t') - ->will($this->returnCallback(function($text, $parameters = []) { + ->willReturnCallback(function($text, $parameters = []) { return vsprintf($text, $parameters); - })); + }); $this->factory = new DummyFactory(\OC::$server); @@ -334,11 +334,11 @@ public function testDeleteNested() { $this->defaultProvider ->method('getChildren') - ->will($this->returnValueMap([ + ->willReturnMap([ [$share1, [$share2]], [$share2, [$share3]], [$share3, []], - ])); + ]); $this->defaultProvider ->method('delete') @@ -423,12 +423,12 @@ public function testDeleteChildren() { $this->defaultProvider ->expects($this->exactly(4)) ->method('getChildren') - ->will($this->returnCallback(function($_share) use ($share, $shares) { + ->willReturnCallback(function($_share) use ($share, $shares) { if ($_share === $share) { return $shares; } return []; - })); + }); $this->defaultProvider ->expects($this->exactly(3)) @@ -483,26 +483,26 @@ public function testVerifyPasswordNullButEnforced() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Passwords are enforced for link shares'); - $this->config->method('getAppValue')->will($this->returnValueMap([ + $this->config->method('getAppValue')->willReturnMap([ ['core', 'shareapi_enforce_links_password', 'no', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'verifyPassword', [null]); } public function testVerifyPasswordNull() { - $this->config->method('getAppValue')->will($this->returnValueMap([ + $this->config->method('getAppValue')->willReturnMap([ ['core', 'shareapi_enforce_links_password', 'no', 'no'], - ])); + ]); $result = self::invokePrivate($this->manager, 'verifyPassword', [null]); $this->assertNull($result); } public function testVerifyPasswordHook() { - $this->config->method('getAppValue')->will($this->returnValueMap([ + $this->config->method('getAppValue')->willReturnMap([ ['core', 'shareapi_enforce_links_password', 'no', 'no'], - ])); + ]); $this->eventDispatcher->expects($this->once())->method('dispatch') ->willReturnCallback(function(Event $event) { @@ -521,9 +521,9 @@ public function testVerifyPasswordHookFails() { $this->expectException(\Exception::class); $this->expectExceptionMessage('password not accepted'); - $this->config->method('getAppValue')->will($this->returnValueMap([ + $this->config->method('getAppValue')->willReturnMap([ ['core', 'shareapi_enforce_links_password', 'no', 'no'], - ])); + ]); $this->eventDispatcher->expects($this->once())->method('dispatch') ->willReturnCallback(function(Event $event) { @@ -701,14 +701,14 @@ public function dataGeneralChecks() { public function testGeneralChecks($share, $exceptionMessage, $exception) { $thrown = null; - $this->userManager->method('userExists')->will($this->returnValueMap([ + $this->userManager->method('userExists')->willReturnMap([ ['user0', true], ['user1', true], - ])); + ]); - $this->groupManager->method('groupExists')->will($this->returnValueMap([ + $this->groupManager->method('groupExists')->willReturnMap([ ['group0', true], - ])); + ]); $userFolder = $this->createMock(Folder::class); $userFolder->expects($this->any()) @@ -746,10 +746,10 @@ public function testGeneralCheckShareRoot() { $thrown = null; - $this->userManager->method('userExists')->will($this->returnValueMap([ + $this->userManager->method('userExists')->willReturnMap([ ['user0', true], ['user1', true], - ])); + ]); $userFolder = $this->createMock(Folder::class); $userFolder->method('isSubNode')->with($userFolder)->willReturn(false); @@ -790,10 +790,10 @@ public function testvalidateExpirationDateEnforceButNotSet() { $share->setProviderId('foo')->setId('bar'); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_default_expire_date', 'no', 'yes'], ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); } @@ -803,9 +803,9 @@ public function testvalidateExpirationDateEnforceButNotEnabledAndNotSet() { $share->setProviderId('foo')->setId('bar'); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); @@ -816,12 +816,12 @@ public function testvalidateExpirationDateEnforceButNotSetNewShare() { $share = $this->manager->newShare(); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], ['core', 'shareapi_default_expire_date', 'no', 'yes'], ['core', 'link_defaultExpDays', 3, '3'], - ])); + ]); $expected = new \DateTime(); $expected->setTime(0,0,0); @@ -842,10 +842,10 @@ public function testvalidateExpirationDateEnforceToFarIntoFuture() { $share->setExpirationDate($future); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], - ])); + ]); try { self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); @@ -870,10 +870,10 @@ public function testvalidateExpirationDateEnforceValid() { $share->setExpirationDate($future); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], - ])); + ]); $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); @@ -933,10 +933,10 @@ public function testvalidateExpirationDateNoDateDefault() { $share->setExpirationDate($future); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_default_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], - ])); + ]); $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); @@ -958,9 +958,9 @@ public function testValidateExpirationDateHookModification() { $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->will($this->returnCallback(function ($data) { + $hookListner->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['expirationDate']->sub(new \DateInterval('P2D')); - })); + }); $share = $this->manager->newShare(); $share->setExpirationDate($nextWeek); @@ -985,10 +985,10 @@ public function testValidateExpirationDateHookException() { $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->will($this->returnCallback(function ($data) { + $hookListner->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['accepted'] = false; $data['message'] = 'Invalid date!'; - })); + }); self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); } @@ -999,10 +999,10 @@ public function testValidateExpirationDateExistingShareNoDefault() { $share->setId('42')->setProviderId('foo'); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_default_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '6'], - ])); + ]); self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); @@ -1022,23 +1022,23 @@ public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups() { $this->groupManager ->method('getUserGroupIds') - ->will( - $this->returnValueMap([ + ->willReturnMap( + [ [$sharedBy, ['group1']], [$sharedWith, ['group2']], - ]) + ] ); - $this->userManager->method('get')->will($this->returnValueMap([ + $this->userManager->method('get')->willReturnMap([ ['sharedBy', $sharedBy], ['sharedWith', $sharedWith], - ])); + ]); $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'userCreateChecks', [$share]); } @@ -1055,23 +1055,23 @@ public function testUserCreateChecksShareWithGroupMembersOnlySharedGroup() { $this->groupManager ->method('getUserGroupIds') - ->will( - $this->returnValueMap([ + ->willReturnMap( + [ [$sharedBy, ['group1', 'group3']], [$sharedWith, ['group2', 'group3']], - ]) + ] ); - $this->userManager->method('get')->will($this->returnValueMap([ + $this->userManager->method('get')->willReturnMap([ ['sharedBy', $sharedBy], ['sharedWith', $sharedWith], - ])); + ]); $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], - ])); + ]); $this->defaultProvider ->method('getSharesByPath') @@ -1227,9 +1227,9 @@ public function testGroupCreateChecksShareWithGroupMembersGroupSharingNotAllowed $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_group_sharing', 'yes', 'no'], - ])); + ]); self::invokePrivate($this->manager, 'groupCreateChecks', [$share]); } @@ -1252,10 +1252,10 @@ public function testGroupCreateChecksShareWithGroupMembersOnlyNotInGroup() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'groupCreateChecks', [$share]); } @@ -1275,10 +1275,10 @@ public function testGroupCreateChecksShareWithGroupMembersOnlyNullGroup() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'], - ])); + ]); $this->assertNull($this->invokePrivate($this->manager, 'groupCreateChecks', [$share])); } @@ -1304,10 +1304,10 @@ public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'], ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'groupCreateChecks', [$share]); $this->addToAssertionCount(1); @@ -1337,9 +1337,9 @@ public function testGroupCreateChecksPathAlreadySharedWithSameGroup() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'groupCreateChecks', [$share]); } @@ -1361,9 +1361,9 @@ public function testGroupCreateChecksPathAlreadySharedWithDifferentGroup() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'], - ])); + ]); self::invokePrivate($this->manager, 'groupCreateChecks', [$share]); $this->addToAssertionCount(1); @@ -1378,9 +1378,9 @@ public function testLinkCreateChecksNoLinkSharesAllowed() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_links', 'yes', 'no'], - ])); + ]); self::invokePrivate($this->manager, 'linkCreateChecks', [$share]); } @@ -1396,10 +1396,10 @@ public function testLinkCreateChecksNoPublicUpload() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_links', 'yes', 'yes'], ['core', 'shareapi_allow_public_upload', 'yes', 'no'] - ])); + ]); self::invokePrivate($this->manager, 'linkCreateChecks', [$share]); } @@ -1411,10 +1411,10 @@ public function testLinkCreateChecksPublicUpload() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_links', 'yes', 'yes'], ['core', 'shareapi_allow_public_upload', 'yes', 'yes'] - ])); + ]); self::invokePrivate($this->manager, 'linkCreateChecks', [$share]); $this->addToAssertionCount(1); @@ -1427,10 +1427,10 @@ public function testLinkCreateChecksReadOnly() { $this->config ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_links', 'yes', 'yes'], ['core', 'shareapi_allow_public_upload', 'yes', 'no'] - ])); + ]); self::invokePrivate($this->manager, 'linkCreateChecks', [$share]); $this->addToAssertionCount(1); @@ -1519,10 +1519,10 @@ public function testIsSharingDisabledForUser($excludeGroups, $groupList, $setLis $user = $this->createMock(IUser::class); $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_exclude_groups', 'no', $excludeGroups], ['core', 'shareapi_exclude_groups_list', '', $groupList], - ])); + ]); if ($setList !== null) { $this->config->expects($this->once()) @@ -1567,9 +1567,9 @@ public function dataCanShare() { */ public function testCanShare($expected, $sharingEnabled, $disabledForUser) { $this->config->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_enabled', 'yes', $sharingEnabled], - ])); + ]); $manager = $this->createManagerMock() ->setMethods(['sharingDisabledForUser']) @@ -1633,7 +1633,7 @@ public function testCreateShareUser() { ->expects($this->once()) ->method('create') ->with($share) - ->will($this->returnArgument(0)); + ->willReturnArgument(0); $share->expects($this->once()) ->method('setShareOwner') @@ -1686,7 +1686,7 @@ public function testCreateShareGroup() { ->expects($this->once()) ->method('create') ->with($share) - ->will($this->returnArgument(0)); + ->willReturnArgument(0); $share->expects($this->once()) ->method('setShareOwner') @@ -1767,9 +1767,9 @@ public function testCreateShareLink() { ->expects($this->once()) ->method('create') ->with($share) - ->will($this->returnCallback(function(Share $share) { + ->willReturnCallback(function(Share $share) { return $share->setId(42); - })); + }); // Pre share $this->eventDispatcher->expects($this->at(0)) @@ -1876,9 +1876,9 @@ public function testCreateShareMail() { ->expects($this->once()) ->method('create') ->with($share) - ->will($this->returnCallback(function(Share $share) { + ->willReturnCallback(function(Share $share) { return $share->setId(42); - })); + }); // Pre share $this->eventDispatcher->expects($this->at(0)) @@ -1987,10 +1987,10 @@ public function testCreateShareHookError() { ->with( $this->equalTo('OCP\Share::preShare'), $this->isInstanceOf(GenericEvent::class) - )->will($this->returnCallback(function($name, GenericEvent $e) { + )->willReturnCallback(function($name, GenericEvent $e) { $e->setArgument('error', 'I won\'t let you share!'); $e->stopPropagation(); - }) + } ); $manager->createShare($share); @@ -2056,7 +2056,7 @@ public function testCreateShareOfIncomingFederatedShare() { ->expects($this->once()) ->method('create') ->with($share) - ->will($this->returnArgument(0)); + ->willReturnArgument(0); $share->expects($this->once()) ->method('setShareOwner') @@ -2139,22 +2139,22 @@ public function testGetSharesByExpiredLinkShares() { */ $this->defaultProvider ->method('getSharesBy') - ->will($this->returnCallback(function($uid, $type, $node, $reshares, $limit, $offset) use (&$shares2) { + ->willReturnCallback(function($uid, $type, $node, $reshares, $limit, $offset) use (&$shares2) { return array_slice($shares2, $offset, $limit); - })); + }); /* * Simulate the deleteShare call. */ $manager->method('deleteShare') - ->will($this->returnCallback(function($share) use (&$shares2) { + ->willReturnCallback(function($share) use (&$shares2) { for($i = 0; $i < count($shares2); $i++) { if ($shares2[$i]->getId() === $share->getId()) { array_splice($shares2, $i, 1); break; } } - })); + }); $res = $manager->getSharesBy('user', \OCP\Share::SHARE_TYPE_LINK, $node, true, 3, 0); @@ -2249,13 +2249,13 @@ public function testGetShareByTokenRoom() { $factory->expects($this->any()) ->method('getProviderForType') - ->will($this->returnCallback(function($shareType) use ($roomShareProvider) { + ->willReturnCallback(function($shareType) use ($roomShareProvider) { if ($shareType !== \OCP\Share::SHARE_TYPE_ROOM) { throw new Exception\ProviderException(); } return $roomShareProvider; - })); + }); $roomShareProvider->expects($this->once()) ->method('getShareByToken') @@ -2403,9 +2403,9 @@ public function testGetShareByTokenPublicUploadDisabled() { $this->config ->expects($this->at(1)) ->method('getAppValue') - ->will($this->returnValueMap([ + ->willReturnMap([ ['core', 'shareapi_allow_public_upload', 'yes', 'no'], - ])); + ]); $this->defaultProvider->expects($this->once()) ->method('getShareByToken') @@ -2458,11 +2458,11 @@ public function testCheckPasswordUpdateShare() { ->setPassword('passwordHash'); $this->hasher->method('verify')->with('password', 'passwordHash', '') - ->will($this->returnCallback(function($pass, $hash, &$newHash) { + ->willReturnCallback(function($pass, $hash, &$newHash) { $newHash = 'newHash'; return true; - })); + }); $this->defaultProvider->expects($this->once()) ->method('update') @@ -2601,7 +2601,7 @@ public function testUpdateShareUser() { \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); $hookListner->expects($this->never())->method('post'); - $this->rootFolder->method('getUserFolder')->with('newUser')->will($this->returnSelf()); + $this->rootFolder->method('getUserFolder')->with('newUser')->willReturnSelf(); $this->rootFolder->method('getRelativePath')->with('/newUser/files/myPath')->willReturn('/myPath'); $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); @@ -3523,7 +3523,7 @@ public function testMoveShareUser() { $share->setSharedWith('recipient'); - $this->defaultProvider->method('move')->with($share, 'recipient')->will($this->returnArgument(0)); + $this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0); $this->manager->moveShare($share, 'recipient'); $this->addToAssertionCount(1); @@ -3581,7 +3581,7 @@ public function testMoveShareGroup() { $this->groupManager->method('get')->with('group')->willReturn($group); $this->userManager->method('get')->with('recipient')->willReturn($recipient); - $this->defaultProvider->method('move')->with($share, 'recipient')->will($this->returnArgument(0)); + $this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0); $this->manager->moveShare($share, 'recipient'); $this->addToAssertionCount(1); From f59238444a7df953442ce6687998ace41fd401fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 11 Nov 2020 19:34:26 +0100 Subject: [PATCH 02/16] Fix typos in method names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index c6bd251b1361b..4e9facbeb2a7a 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -766,7 +766,7 @@ public function testGeneralCheckShareRoot() { } - public function testvalidateExpirationDateInPast() { + public function testValidateExpirationDateInPast() { $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); $this->expectExceptionMessage('Expiration date is in the past'); @@ -782,7 +782,7 @@ public function testvalidateExpirationDateInPast() { } - public function testvalidateExpirationDateEnforceButNotSet() { + public function testValidateExpirationDateEnforceButNotSet() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Expiration date is enforced'); @@ -798,7 +798,7 @@ public function testvalidateExpirationDateEnforceButNotSet() { self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); } - public function testvalidateExpirationDateEnforceButNotEnabledAndNotSet() { + public function testValidateExpirationDateEnforceButNotEnabledAndNotSet() { $share = $this->manager->newShare(); $share->setProviderId('foo')->setId('bar'); @@ -812,7 +812,7 @@ public function testvalidateExpirationDateEnforceButNotEnabledAndNotSet() { $this->assertNull($share->getExpirationDate()); } - public function testvalidateExpirationDateEnforceButNotSetNewShare() { + public function testValidateExpirationDateEnforceButNotSetNewShare() { $share = $this->manager->newShare(); $this->config->method('getAppValue') @@ -833,7 +833,7 @@ public function testvalidateExpirationDateEnforceButNotSetNewShare() { $this->assertEquals($expected, $share->getExpirationDate()); } - public function testvalidateExpirationDateEnforceToFarIntoFuture() { + public function testValidateExpirationDateEnforceTooFarIntoFuture() { // Expire date in the past $future = new \DateTime(); $future->add(new \DateInterval('P7D')); @@ -857,7 +857,7 @@ public function testvalidateExpirationDateEnforceToFarIntoFuture() { } } - public function testvalidateExpirationDateEnforceValid() { + public function testValidateExpirationDateEnforceValid() { // Expire date in the past $future = new \DateTime(); $future->add(new \DateInterval('P2D')); @@ -886,7 +886,7 @@ public function testvalidateExpirationDateEnforceValid() { $this->assertEquals($expected, $share->getExpirationDate()); } - public function testvalidateExpirationDateNoDateNoDefaultNull() { + public function testValidateExpirationDateNoDateNoDefaultNull() { $date = new \DateTime(); $date->add(new \DateInterval('P5D')); @@ -907,7 +907,7 @@ public function testvalidateExpirationDateNoDateNoDefaultNull() { $this->assertEquals($expected, $share->getExpirationDate()); } - public function testvalidateExpirationDateNoDateNoDefault() { + public function testValidateExpirationDateNoDateNoDefault() { $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); $hookListner->expects($this->once())->method('listener')->with($this->callback(function ($data) { @@ -922,7 +922,7 @@ public function testvalidateExpirationDateNoDateNoDefault() { $this->assertNull($share->getExpirationDate()); } - public function testvalidateExpirationDateNoDateDefault() { + public function testValidateExpirationDateNoDateDefault() { $future = new \DateTime(); $future->add(new \DateInterval('P3D')); $future->setTime(0,0,0); From e9dfa135a127932e959adfb17afe38e854a975c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 11 Nov 2020 19:55:20 +0100 Subject: [PATCH 03/16] Fix typo in variable name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 258 +++++++++++++++--------------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 4e9facbeb2a7a..2edacf11f0abd 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -875,9 +875,9 @@ public function testValidateExpirationDateEnforceValid() { ['core', 'shareapi_expire_after_n_days', '7', '3'], ]); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { return $data['expirationDate'] == $future; })); @@ -896,9 +896,9 @@ public function testValidateExpirationDateNoDateNoDefaultNull() { $share = $this->manager->newShare(); $share->setExpirationDate($date); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected && $data['passwordSet'] === false; })); @@ -908,9 +908,9 @@ public function testValidateExpirationDateNoDateNoDefaultNull() { } public function testValidateExpirationDateNoDateNoDefault() { - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->with($this->callback(function ($data) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) { return $data['expirationDate'] === null && $data['passwordSet'] === true; })); @@ -938,9 +938,9 @@ public function testValidateExpirationDateNoDateDefault() { ['core', 'shareapi_expire_after_n_days', '7', '3'], ]); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -956,9 +956,9 @@ public function testValidateExpirationDateHookModification() { $save = clone $nextWeek; - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['expirationDate']->sub(new \DateInterval('P2D')); }); @@ -983,9 +983,9 @@ public function testValidateExpirationDateHookException() { $share = $this->manager->newShare(); $share->setExpirationDate($nextWeek); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListner, 'listener'); - $hookListner->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['accepted'] = false; $data['message'] = 'Invalid date!'; }); @@ -2597,16 +2597,16 @@ public function testUpdateShareUser() { ->with($share) ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); $this->rootFolder->method('getUserFolder')->with('newUser')->willReturnSelf(); $this->rootFolder->method('getRelativePath')->with('/newUser/files/myPath')->willReturn('/myPath'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner2, 'post'); - $hookListner2->expects($this->once())->method('post')->with([ + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); + $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'shareType' => \OCP\Share::SHARE_TYPE_USER, @@ -2654,13 +2654,13 @@ public function testUpdateShareGroup() { ->with($share) ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -2716,18 +2716,18 @@ public function testUpdateShareLink() { ->with($share) ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->once())->method('post')->with([ + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'date' => $tomorrow, 'uidOwner' => 'owner', ]); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->once())->method('post')->with([ + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'uidOwner' => 'owner', @@ -2735,9 +2735,9 @@ public function testUpdateShareLink() { 'disabled' => false, ]); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); @@ -2797,17 +2797,17 @@ public function testUpdateShareLinkEnableSendPasswordByTalkWithNoPassword() { $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -2866,13 +2866,13 @@ public function testUpdateShareMail() { ->with($share, 'password') ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->once())->method('post')->with([ + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'uidOwner' => 'owner', @@ -2880,9 +2880,9 @@ public function testUpdateShareMail() { 'disabled' => false, ]); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -2944,13 +2944,13 @@ public function testUpdateShareMailEnableSendPasswordByTalk() { ->with($share, 'password') ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->once())->method('post')->with([ + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'uidOwner' => 'owner', @@ -2958,9 +2958,9 @@ public function testUpdateShareMailEnableSendPasswordByTalk() { 'disabled' => false, ]); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3027,13 +3027,13 @@ public function testUpdateShareMailEnableSendPasswordByTalkWithDifferentPassword ->with($share, 'password') ->willReturn($share); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->once())->method('post')->with([ + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->once())->method('post')->with([ 'itemType' => 'file', 'itemSource' => 100, 'uidOwner' => 'owner', @@ -3041,9 +3041,9 @@ public function testUpdateShareMailEnableSendPasswordByTalkWithDifferentPassword 'disabled' => false, ]); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3104,17 +3104,17 @@ public function testUpdateShareMailEnableSendPasswordByTalkWithNoPassword() { $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3176,17 +3176,17 @@ public function testUpdateShareMailEnableSendPasswordByTalkRemovingPassword() { $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3248,17 +3248,17 @@ public function testUpdateShareMailEnableSendPasswordByTalkRemovingPasswordWithE $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3325,17 +3325,17 @@ public function testUpdateShareMailEnableSendPasswordByTalkWithPreviousPassword( $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3401,17 +3401,17 @@ public function testUpdateShareMailDisableSendPasswordByTalkWithPreviousPassword $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } @@ -3475,17 +3475,17 @@ public function testUpdateShareMailDisableSendPasswordByTalkWithoutChangingPassw $this->defaultProvider->expects($this->never()) ->method('update'); - $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListner, 'post'); - $hookListner->expects($this->never())->method('post'); + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post'); + $hookListener->expects($this->never())->method('post'); - $hookListner2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListner2, 'post'); - $hookListner2->expects($this->never())->method('post'); + $hookListener2 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post'); + $hookListener2->expects($this->never())->method('post'); - $hookListner3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); - \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListner3, 'post'); - $hookListner3->expects($this->never())->method('post'); + $hookListener3 = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post'); + $hookListener3->expects($this->never())->method('post'); $manager->updateShare($share); } From 66eb1233a702237cbc0c510e86d457220d2b821c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 09:38:20 +0100 Subject: [PATCH 04/16] Remove extra spaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 2edacf11f0abd..87b7beea144eb 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -770,7 +770,6 @@ public function testValidateExpirationDateInPast() { $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); $this->expectExceptionMessage('Expiration date is in the past'); - // Expire date in the past $past = new \DateTime(); $past->sub(new \DateInterval('P1D')); @@ -781,7 +780,6 @@ public function testValidateExpirationDateInPast() { self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); } - public function testValidateExpirationDateEnforceButNotSet() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Expiration date is enforced'); @@ -876,7 +874,7 @@ public function testValidateExpirationDateEnforceValid() { ]); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { return $data['expirationDate'] == $future; })); @@ -897,7 +895,7 @@ public function testValidateExpirationDateNoDateNoDefaultNull() { $share->setExpirationDate($date); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected && $data['passwordSet'] === false; })); @@ -909,7 +907,7 @@ public function testValidateExpirationDateNoDateNoDefaultNull() { public function testValidateExpirationDateNoDateNoDefault() { $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) { return $data['expirationDate'] === null && $data['passwordSet'] === true; })); @@ -939,7 +937,7 @@ public function testValidateExpirationDateNoDateDefault() { ]); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { return $data['expirationDate'] == $expected; })); @@ -957,7 +955,7 @@ public function testValidateExpirationDateHookModification() { $save = clone $nextWeek; $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['expirationDate']->sub(new \DateInterval('P2D')); }); @@ -971,7 +969,6 @@ public function testValidateExpirationDateHookModification() { $this->assertEquals($save, $share->getExpirationDate()); } - public function testValidateExpirationDateHookException() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Invalid date!'); @@ -984,7 +981,7 @@ public function testValidateExpirationDateHookException() { $share->setExpirationDate($nextWeek); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); - \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { $data['accepted'] = false; $data['message'] = 'Invalid date!'; @@ -1009,7 +1006,6 @@ public function testValidateExpirationDateExistingShareNoDefault() { $this->assertEquals(null, $share->getExpirationDate()); } - public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups() { $this->expectException(\Exception::class); $this->expectExceptionMessage('Sharing is only allowed with group members'); From 47897090eccd1fe9a045c872c791a4bdfbcde3fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 11 Nov 2020 20:27:01 +0100 Subject: [PATCH 05/16] Remove wrong and misleading comment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 87b7beea144eb..71918d8a5d176 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -832,7 +832,6 @@ public function testValidateExpirationDateEnforceButNotSetNewShare() { } public function testValidateExpirationDateEnforceTooFarIntoFuture() { - // Expire date in the past $future = new \DateTime(); $future->add(new \DateInterval('P7D')); @@ -856,7 +855,6 @@ public function testValidateExpirationDateEnforceTooFarIntoFuture() { } public function testValidateExpirationDateEnforceValid() { - // Expire date in the past $future = new \DateTime(); $future->add(new \DateInterval('P2D')); $future->setTime(0,0,0); From aaeaed072f4aa1d1e60b8f99814ae1a84989f094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 11 Nov 2020 19:36:04 +0100 Subject: [PATCH 06/16] Add unit tests to enforce a relaxed default share expiration date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 71918d8a5d176..e2110f26022c1 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -831,6 +831,27 @@ public function testValidateExpirationDateEnforceButNotSetNewShare() { $this->assertEquals($expected, $share->getExpirationDate()); } + public function testValidateExpirationDateEnforceRelaxedDefaultButNotSetNewShare() { + $share = $this->manager->newShare(); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_expire_date', 'no', 'yes'], + ['core', 'link_defaultExpDays', 3, '1'], + ]); + + $expected = new \DateTime(); + $expected->setTime(0,0,0); + $expected->add(new \DateInterval('P1D')); + + self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); + + $this->assertNotNull($share->getExpirationDate()); + $this->assertEquals($expected, $share->getExpirationDate()); + } + public function testValidateExpirationDateEnforceTooFarIntoFuture() { $future = new \DateTime(); $future->add(new \DateInterval('P7D')); From f4f39fc1578fb08a573b9e4b4be5851ff0f94520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Wed, 11 Nov 2020 20:50:23 +0100 Subject: [PATCH 07/16] Fix unit test for verifying enforced expire date too far in the future MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The test should fail if no exception was thrown, and no exception was thrown due to a missing configuration parameter. However, the use of "addToAssertionCount(1)" made the test pass even if no exception was thrown and, therefore, to silently fail. Now the missing configuration parameter was added and the test will fail if the expected exception is not thrown. Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index e2110f26022c1..d32c3e554dbf3 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -853,6 +853,9 @@ public function testValidateExpirationDateEnforceRelaxedDefaultButNotSetNewShare } public function testValidateExpirationDateEnforceTooFarIntoFuture() { + $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectExceptionMessage('Can’t set expiration date more than 3 days in the future'); + $future = new \DateTime(); $future->add(new \DateInterval('P7D')); @@ -863,16 +866,10 @@ public function testValidateExpirationDateEnforceTooFarIntoFuture() { ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_expire_date', 'no', 'yes'], ]); - try { - self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); - $this->addToAssertionCount(1); - } catch (\OCP\Share\Exceptions\GenericShareException $e) { - $this->assertEquals('Cannot set expiration date more than 3 days in the future', $e->getMessage()); - $this->assertEquals('Cannot set expiration date more than 3 days in the future', $e->getHint()); - $this->assertEquals(404, $e->getCode()); - } + self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); } public function testValidateExpirationDateEnforceValid() { From eae5fa876cde2f610dd1c952b2d83d19c1c347e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 08:25:36 +0100 Subject: [PATCH 08/16] Fix unit test for verifying enforced valid expiration date. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The enforced expiration date was not actually enabled, as for that "shareapi_default_expire_date" needs to be explicitly set to "yes". Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index d32c3e554dbf3..1cb579c7d24da 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -887,6 +887,7 @@ public function testValidateExpirationDateEnforceValid() { ->willReturnMap([ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_expire_date', 'no', 'yes'], ]); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); From 6cf3c294a1befc9ac0463d020cce483fa691d38d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 08:46:37 +0100 Subject: [PATCH 09/16] Fix unit test method name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 1cb579c7d24da..362182c202c29 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -901,7 +901,7 @@ public function testValidateExpirationDateEnforceValid() { $this->assertEquals($expected, $share->getExpirationDate()); } - public function testValidateExpirationDateNoDateNoDefaultNull() { + public function testValidateExpirationDateNoDefault() { $date = new \DateTime(); $date->add(new \DateInterval('P5D')); From 2f8f06fe3730bd385e903a90c667214cbbd27a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 09:34:58 +0100 Subject: [PATCH 10/16] Fix unit test for expiration date without date but with default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The expiration date was explicitly given, so it was not testing what it should. Moreover, "link_defaultExpDays" needs to be mapped when testing the default value (even if it will just fallback to the value of "shareapi_expire_after_n_days"). Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 362182c202c29..b88448b30dd63 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -938,19 +938,17 @@ public function testValidateExpirationDateNoDateNoDefault() { } public function testValidateExpirationDateNoDateDefault() { - $future = new \DateTime(); - $future->add(new \DateInterval('P3D')); - $future->setTime(0,0,0); - - $expected = clone $future; - $share = $this->manager->newShare(); - $share->setExpirationDate($future); + + $expected = new \DateTime(); + $expected->add(new \DateInterval('P3D')); + $expected->setTime(0,0,0); $this->config->method('getAppValue') ->willReturnMap([ ['core', 'shareapi_default_expire_date', 'no', 'yes'], ['core', 'shareapi_expire_after_n_days', '7', '3'], + ['core', 'link_defaultExpDays', 3, '3'], ]); $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); From c138d2d2519263d9095c1672b4ce3515e62e9bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 09:35:34 +0100 Subject: [PATCH 11/16] Add unit test for expiration date with date and with default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds back what was being actually tested in the unit test fixed in the previous commit. Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index b88448b30dd63..5d6c7960e3f1e 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -962,6 +962,34 @@ public function testValidateExpirationDateNoDateDefault() { $this->assertEquals($expected, $share->getExpirationDate()); } + public function testValidateExpirationDateDefault() { + $future = new \DateTime(); + $future->add(new \DateInterval('P5D')); + $future->setTime(0,0,0); + + $expected = clone $future; + + $share = $this->manager->newShare(); + $share->setExpirationDate($future); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_default_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '3'], + ['core', 'link_defaultExpDays', 3, '1'], + ]); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + return $data['expirationDate'] == $expected; + })); + + self::invokePrivate($this->manager, 'validateExpirationDate', [$share]); + + $this->assertEquals($expected, $share->getExpirationDate()); + } + public function testValidateExpirationDateHookModification() { $nextWeek = new \DateTime(); $nextWeek->add(new \DateInterval('P7D')); From 713e87909aaac41f9beafb514f2404409f7c9a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 08:43:03 +0100 Subject: [PATCH 12/16] Add explicit time to test date for clarity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This shows in a clearer way that the expected expiration date is the original one, but without time. Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 5d6c7960e3f1e..de24c743c78ee 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -875,10 +875,10 @@ public function testValidateExpirationDateEnforceTooFarIntoFuture() { public function testValidateExpirationDateEnforceValid() { $future = new \DateTime(); $future->add(new \DateInterval('P2D')); - $future->setTime(0,0,0); + $future->setTime(1,2,3); $expected = clone $future; - $future->setTime(1,2,3); + $expected->setTime(0,0,0); $share = $this->manager->newShare(); $share->setExpirationDate($future); @@ -904,6 +904,7 @@ public function testValidateExpirationDateEnforceValid() { public function testValidateExpirationDateNoDefault() { $date = new \DateTime(); $date->add(new \DateInterval('P5D')); + $date->setTime(1,2,3); $expected = clone $date; $expected->setTime(0,0,0); @@ -965,9 +966,10 @@ public function testValidateExpirationDateNoDateDefault() { public function testValidateExpirationDateDefault() { $future = new \DateTime(); $future->add(new \DateInterval('P5D')); - $future->setTime(0,0,0); + $future->setTime(1,2,3); $expected = clone $future; + $expected->setTime(0,0,0); $share = $this->manager->newShare(); $share->setExpirationDate($future); From bae712b68eab59a8e05867f36aa1b5dc4bcbc126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 11:49:40 +0100 Subject: [PATCH 13/16] Fix default internal expiration date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default expiration date for internal shares was set from the default link expiration date instead of the internal one. Signed-off-by: Daniel Calviño Sánchez --- lib/private/Share20/Manager.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 348e0207d2f2e..5c1db638f7a94 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -402,9 +402,9 @@ protected function validateExpirationDateInternal(\OCP\Share\IShare $share) { $expirationDate = new \DateTime(); $expirationDate->setTime(0,0,0); - $days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', $this->shareApiLinkDefaultExpireDays()); - if ($days > $this->shareApiLinkDefaultExpireDays()) { - $days = $this->shareApiLinkDefaultExpireDays(); + $days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', (string)$this->shareApiInternalDefaultExpireDays()); + if ($days > $this->shareApiInternalDefaultExpireDays()) { + $days = $this->shareApiInternalDefaultExpireDays(); } $expirationDate->add(new \DateInterval('P'.$days.'D')); } From 68f67d9c9ec53e45d6589e3c7f4039f745d29276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 11:50:16 +0100 Subject: [PATCH 14/16] Add unit tests for "validateExpirationDateInternal" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit They were copied and adjusted as needed from the tests for "validateExpirationDate". Signed-off-by: Daniel Calviño Sánchez --- tests/lib/Share20/ManagerTest.php | 284 ++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index de24c743c78ee..157d518f6985b 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -765,6 +765,290 @@ public function testGeneralCheckShareRoot() { self::invokePrivate($this->manager, 'generalCreateChecks', [$share]); } + public function testValidateExpirationDateInternalInPast() { + $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectExceptionMessage('Expiration date is in the past'); + + // Expire date in the past + $past = new \DateTime(); + $past->sub(new \DateInterval('P1D')); + + $share = $this->manager->newShare(); + $share->setExpirationDate($past); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + } + + public function testValidateExpirationDateInternalEnforceButNotSet() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Expiration date is enforced'); + + $share = $this->manager->newShare(); + $share->setProviderId('foo')->setId('bar'); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ]); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + } + + public function testValidateExpirationDateInternalEnforceButNotEnabledAndNotSet() { + $share = $this->manager->newShare(); + $share->setProviderId('foo')->setId('bar'); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ]); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertNull($share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalEnforceButNotSetNewShare() { + $share = $this->manager->newShare(); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'internal_defaultExpDays', '3', '3'], + ]); + + $expected = new \DateTime(); + $expected->setTime(0,0,0); + $expected->add(new \DateInterval('P3D')); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertNotNull($share->getExpirationDate()); + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalEnforceRelaxedDefaultButNotSetNewShare() { + $share = $this->manager->newShare(); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'internal_defaultExpDays', '3', '1'], + ]); + + $expected = new \DateTime(); + $expected->setTime(0,0,0); + $expected->add(new \DateInterval('P1D')); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertNotNull($share->getExpirationDate()); + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalEnforceTooFarIntoFuture() { + $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); + $this->expectExceptionMessage('Can’t set expiration date more than 3 days in the future'); + + $future = new \DateTime(); + $future->add(new \DateInterval('P7D')); + + $share = $this->manager->newShare(); + $share->setExpirationDate($future); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ]); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + } + + public function testValidateExpirationDateInternalEnforceValid() { + $future = new \DateTime(); + $future->add(new \DateInterval('P2D')); + $future->setTime(1,2,3); + + $expected = clone $future; + $expected->setTime(0,0,0); + + $share = $this->manager->newShare(); + $share->setExpirationDate($future); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ]); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) { + return $data['expirationDate'] == $future; + })); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalNoDefault() { + $date = new \DateTime(); + $date->add(new \DateInterval('P5D')); + $date->setTime(1,2,3); + + $expected = clone $date; + $expected->setTime(0,0,0); + + $share = $this->manager->newShare(); + $share->setExpirationDate($date); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + return $data['expirationDate'] == $expected && $data['passwordSet'] === false; + })); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalNoDateNoDefault() { + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) { + return $data['expirationDate'] === null && $data['passwordSet'] === true; + })); + + $share = $this->manager->newShare(); + $share->setPassword('password'); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertNull($share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalNoDateDefault() { + $share = $this->manager->newShare(); + + $expected = new \DateTime(); + $expected->add(new \DateInterval('P3D')); + $expected->setTime(0,0,0); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'internal_defaultExpDays', '3', '3'], + ]); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + return $data['expirationDate'] == $expected; + })); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalDefault() { + $future = new \DateTime(); + $future->add(new \DateInterval('P5D')); + $future->setTime(1,2,3); + + $expected = clone $future; + $expected->setTime(0,0,0); + + $share = $this->manager->newShare(); + $share->setExpirationDate($future); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '3'], + ['core', 'internal_defaultExpDays', '3', '1'], + ]); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) { + return $data['expirationDate'] == $expected; + })); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertEquals($expected, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalHookModification() { + $nextWeek = new \DateTime(); + $nextWeek->add(new \DateInterval('P7D')); + $nextWeek->setTime(0,0,0); + + $save = clone $nextWeek; + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + $data['expirationDate']->sub(new \DateInterval('P2D')); + }); + + $share = $this->manager->newShare(); + $share->setExpirationDate($nextWeek); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $save->sub(new \DateInterval('P2D')); + $this->assertEquals($save, $share->getExpirationDate()); + } + + public function testValidateExpirationDateInternalHookException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid date!'); + + $nextWeek = new \DateTime(); + $nextWeek->add(new \DateInterval('P7D')); + $nextWeek->setTime(0,0,0); + + $share = $this->manager->newShare(); + $share->setExpirationDate($nextWeek); + + $hookListener = $this->getMockBuilder('Dummy')->setMethods(['listener'])->getMock(); + \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener'); + $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) { + $data['accepted'] = false; + $data['message'] = 'Invalid date!'; + }); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + } + + public function testValidateExpirationDateInternalExistingShareNoDefault() { + $share = $this->manager->newShare(); + + $share->setId('42')->setProviderId('foo'); + + $this->config->method('getAppValue') + ->willReturnMap([ + ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'], + ['core', 'shareapi_internal_expire_after_n_days', '7', '6'], + ]); + + self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]); + + $this->assertEquals(null, $share->getExpirationDate()); + } public function testValidateExpirationDateInPast() { $this->expectException(\OCP\Share\Exceptions\GenericShareException::class); From aadd0ab2c5cad9fe09d000e730c8019b17cf36b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 11:51:37 +0100 Subject: [PATCH 15/16] Reset app configs by deleting the values instead of setting the defaults MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids the need to keep the default values in the integration tests in sync with the code, and also makes possible to reset values with "dynamic" defaults (defaults that depend on other values). Signed-off-by: Daniel Calviño Sánchez --- .../features/bootstrap/AppConfiguration.php | 13 +++++++++++ .../bootstrap/CapabilitiesContext.php | 22 +++++++++---------- .../features/bootstrap/FederationContext.php | 4 ++-- .../features/bootstrap/ShareesContext.php | 6 ++--- .../features/bootstrap/SharingContext.php | 4 ++-- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/build/integration/features/bootstrap/AppConfiguration.php b/build/integration/features/bootstrap/AppConfiguration.php index 23ce2f89d04e3..b907abae2aafc 100644 --- a/build/integration/features/bootstrap/AppConfiguration.php +++ b/build/integration/features/bootstrap/AppConfiguration.php @@ -71,6 +71,19 @@ protected function modifyServerConfig($app, $parameter, $value) { } } + /** + * @param string $app + * @param string $parameter + * @param string $value + */ + protected function deleteServerConfig($app, $parameter) { + $this->sendingTo('DELETE', "/apps/testing/api/v1/app/{$app}/{$parameter}"); + $this->theHTTPStatusCodeShouldBe('200'); + if ($this->apiVersion === 1) { + $this->theOCSStatusCodeShouldBe('100'); + } + } + protected function setStatusTestingApp($enabled) { $this->sendingTo(($enabled ? 'post' : 'delete'), '/cloud/apps/testing'); $this->theHTTPStatusCodeShouldBe('200'); diff --git a/build/integration/features/bootstrap/CapabilitiesContext.php b/build/integration/features/bootstrap/CapabilitiesContext.php index 1de5001d13646..a7a8c79e44260 100644 --- a/build/integration/features/bootstrap/CapabilitiesContext.php +++ b/build/integration/features/bootstrap/CapabilitiesContext.php @@ -66,16 +66,16 @@ public function checkCapabilitiesResponse(\Behat\Gherkin\Node\TableNode $formDat } protected function resetAppConfigs() { - $this->modifyServerConfig('core', 'shareapi_enabled', 'yes'); - $this->modifyServerConfig('core', 'shareapi_allow_links', 'yes'); - $this->modifyServerConfig('core', 'shareapi_allow_public_upload', 'yes'); - $this->modifyServerConfig('core', 'shareapi_allow_resharing', 'yes'); - $this->modifyServerConfig('files_sharing', 'outgoing_server2server_share_enabled', 'yes'); - $this->modifyServerConfig('files_sharing', 'incoming_server2server_share_enabled', 'yes'); - $this->modifyServerConfig('core', 'shareapi_enforce_links_password', 'no'); - $this->modifyServerConfig('core', 'shareapi_allow_public_notification', 'no'); - $this->modifyServerConfig('core', 'shareapi_default_expire_date', 'no'); - $this->modifyServerConfig('core', 'shareapi_enforce_expire_date', 'no'); - $this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes'); + $this->deleteServerConfig('core', 'shareapi_enabled'); + $this->deleteServerConfig('core', 'shareapi_allow_links'); + $this->deleteServerConfig('core', 'shareapi_allow_public_upload'); + $this->deleteServerConfig('core', 'shareapi_allow_resharing'); + $this->deleteServerConfig('files_sharing', 'outgoing_server2server_share_enabled'); + $this->deleteServerConfig('files_sharing', 'incoming_server2server_share_enabled'); + $this->deleteServerConfig('core', 'shareapi_enforce_links_password'); + $this->deleteServerConfig('core', 'shareapi_allow_public_notification'); + $this->deleteServerConfig('core', 'shareapi_default_expire_date'); + $this->deleteServerConfig('core', 'shareapi_enforce_expire_date'); + $this->deleteServerConfig('core', 'shareapi_allow_group_sharing'); } } diff --git a/build/integration/features/bootstrap/FederationContext.php b/build/integration/features/bootstrap/FederationContext.php index 092f0326d3a01..a4a755a7ca4a7 100644 --- a/build/integration/features/bootstrap/FederationContext.php +++ b/build/integration/features/bootstrap/FederationContext.php @@ -99,7 +99,7 @@ public function acceptLastPendingShare($user, $server){ } protected function resetAppConfigs() { - $this->modifyServerConfig('files_sharing', 'incoming_server2server_group_share_enabled', 'no'); - $this->modifyServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled', 'no'); + $this->deleteServerConfig('files_sharing', 'incoming_server2server_group_share_enabled'); + $this->deleteServerConfig('files_sharing', 'outgoing_server2server_group_share_enabled'); } } diff --git a/build/integration/features/bootstrap/ShareesContext.php b/build/integration/features/bootstrap/ShareesContext.php index 4042bb64f5cd4..e9c5b65c98b5d 100644 --- a/build/integration/features/bootstrap/ShareesContext.php +++ b/build/integration/features/bootstrap/ShareesContext.php @@ -40,8 +40,8 @@ class ShareesContext implements Context, SnippetAcceptingContext { use AppConfiguration; protected function resetAppConfigs() { - $this->modifyServerConfig('core', 'shareapi_only_share_with_group_members', 'no'); - $this->modifyServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'); - $this->modifyServerConfig('core', 'shareapi_allow_group_sharing', 'yes'); + $this->deleteServerConfig('core', 'shareapi_only_share_with_group_members'); + $this->deleteServerConfig('core', 'shareapi_allow_share_dialog_user_enumeration'); + $this->deleteServerConfig('core', 'shareapi_allow_group_sharing'); } } diff --git a/build/integration/features/bootstrap/SharingContext.php b/build/integration/features/bootstrap/SharingContext.php index 29c91501efff7..d656b776a394b 100644 --- a/build/integration/features/bootstrap/SharingContext.php +++ b/build/integration/features/bootstrap/SharingContext.php @@ -37,7 +37,7 @@ class SharingContext implements Context, SnippetAcceptingContext { use CommandLine; protected function resetAppConfigs() { - $this->modifyServerConfig('core', 'shareapi_default_permissions', '31'); - $this->modifyServerConfig('sharebymail', 'enforcePasswordProtection', 'no'); + $this->deleteServerConfig('core', 'shareapi_default_permissions'); + $this->deleteServerConfig('sharebymail', 'enforcePasswordProtection'); } } From 47ca9e39970a41767cfd355576a3629551014963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 12 Nov 2020 11:52:53 +0100 Subject: [PATCH 16/16] Add integration tests for creating shares with default expiration dates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Calviño Sánchez --- .../features/bootstrap/SharingContext.php | 6 + .../sharing_features/sharing-v1.feature | 106 ++++++++++++++++++ 2 files changed, 112 insertions(+) diff --git a/build/integration/features/bootstrap/SharingContext.php b/build/integration/features/bootstrap/SharingContext.php index d656b776a394b..1b24f8a3bedfb 100644 --- a/build/integration/features/bootstrap/SharingContext.php +++ b/build/integration/features/bootstrap/SharingContext.php @@ -38,6 +38,12 @@ class SharingContext implements Context, SnippetAcceptingContext { protected function resetAppConfigs() { $this->deleteServerConfig('core', 'shareapi_default_permissions'); + $this->deleteServerConfig('core', 'shareapi_default_internal_expire_date'); + $this->deleteServerConfig('core', 'shareapi_internal_expire_after_n_days'); + $this->deleteServerConfig('core', 'internal_defaultExpDays'); + $this->deleteServerConfig('core', 'shareapi_default_expire_date'); + $this->deleteServerConfig('core', 'shareapi_expire_after_n_days'); + $this->deleteServerConfig('core', 'link_defaultExpDays'); $this->deleteServerConfig('sharebymail', 'enforcePasswordProtection'); } } diff --git a/build/integration/sharing_features/sharing-v1.feature b/build/integration/sharing_features/sharing-v1.feature index 38eb2d8a812cc..b5b4f5341afd9 100644 --- a/build/integration/sharing_features/sharing-v1.feature +++ b/build/integration/sharing_features/sharing-v1.feature @@ -391,6 +391,112 @@ Feature: sharing And Share fields of last share match with | permissions | 7 | + Scenario: Creating a new internal share with default expiration date + Given user "user0" exists + And user "user1" exists + And As an "user0" + And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes" + And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3" + When creating a share with + | path | welcome.txt | + | shareWith | user1 | + | shareType | 0 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +3 days | + + Scenario: Creating a new internal share with relaxed default expiration date + Given user "user0" exists + And user "user1" exists + And As an "user0" + And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes" + And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3" + And parameter "internal_defaultExpDays" of app "core" is set to "1" + When creating a share with + | path | welcome.txt | + | shareWith | user1 | + | shareType | 0 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +1 days | + + Scenario: Creating a new internal share with relaxed default expiration date too large + Given user "user0" exists + And user "user1" exists + And As an "user0" + And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes" + And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3" + And parameter "internal_defaultExpDays" of app "core" is set to "10" + When creating a share with + | path | welcome.txt | + | shareWith | user1 | + | shareType | 0 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +3 days | + + Scenario: Creating a new link share with default expiration date + Given user "user0" exists + And As an "user0" + And parameter "shareapi_default_expire_date" of app "core" is set to "yes" + And parameter "shareapi_expire_after_n_days" of app "core" is set to "3" + When creating a share with + | path | welcome.txt | + | shareType | 3 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +3 days | + + Scenario: Creating a new link share with relaxed default expiration date + Given user "user0" exists + And As an "user0" + And parameter "shareapi_default_expire_date" of app "core" is set to "yes" + And parameter "shareapi_expire_after_n_days" of app "core" is set to "3" + And parameter "link_defaultExpDays" of app "core" is set to "1" + When creating a share with + | path | welcome.txt | + | shareType | 3 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +1 days | + + Scenario: Creating a new link share with relaxed default expiration date too large + Given user "user0" exists + And As an "user0" + And parameter "shareapi_default_expire_date" of app "core" is set to "yes" + And parameter "shareapi_expire_after_n_days" of app "core" is set to "3" + And parameter "link_defaultExpDays" of app "core" is set to "10" + When creating a share with + | path | welcome.txt | + | shareType | 3 | + And the OCS status code should be "100" + And the HTTP status code should be "200" + And Getting info of last share + Then the OCS status code should be "100" + And the HTTP status code should be "200" + And Share fields of last share match with + | expiration | +3 days | + Scenario: getting all shares of a user using that user Given user "user0" exists And user "user1" exists