2014-04-23 14:50:24 +04:00
|
|
|
<?php
|
|
|
|
/**
|
2020-04-08 23:24:54 +03:00
|
|
|
* ownCloud
|
|
|
|
*
|
|
|
|
* @author Bjoern Schiessle
|
|
|
|
* @copyright 2014 Bjoern Schiessle <schiessle@owncloud.com>
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 3 of the License, or any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Affero General Public
|
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
2014-04-23 14:50:24 +04:00
|
|
|
|
2016-05-19 10:15:10 +03:00
|
|
|
namespace Test\Share;
|
|
|
|
|
2015-12-09 14:00:00 +03:00
|
|
|
/**
|
|
|
|
* @group DB
|
2016-05-19 10:15:10 +03:00
|
|
|
* Class Helper
|
2015-12-09 14:00:00 +03:00
|
|
|
*/
|
2016-05-20 16:38:20 +03:00
|
|
|
class HelperTest extends \Test\TestCase {
|
2014-04-23 14:50:24 +04:00
|
|
|
public function expireDateProvider() {
|
2020-03-26 11:30:18 +03:00
|
|
|
return [
|
2014-04-23 14:50:24 +04:00
|
|
|
// no default expire date, we take the users expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => false], 2000000000, 2000010000, 2000010000],
|
2014-04-23 14:50:24 +04:00
|
|
|
// no default expire date and no user defined expire date, return false
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => false], 2000000000, null, false],
|
2014-11-21 15:31:56 +03:00
|
|
|
// unenforced expire data and no user defined expire date, return false (because the default is not enforced)
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, null, false],
|
2014-04-23 14:50:24 +04:00
|
|
|
// enforced expire date and no user defined expire date, take default expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, null, 2000086400],
|
2014-04-23 14:50:24 +04:00
|
|
|
// unenforced expire date and user defined date > default expire date, take users expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, 2000100000, 2000100000],
|
2014-04-23 14:50:24 +04:00
|
|
|
// unenforced expire date and user expire date < default expire date, take users expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, 2000010000, 2000010000],
|
2014-04-23 14:50:24 +04:00
|
|
|
// enforced expire date and user expire date < default expire date, take users expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, 2000010000, 2000010000],
|
2014-04-23 14:50:24 +04:00
|
|
|
// enforced expire date and users expire date > default expire date, take default expire date
|
2020-03-26 11:30:18 +03:00
|
|
|
[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, 2000100000, 2000086400],
|
|
|
|
];
|
2014-04-23 14:50:24 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider expireDateProvider
|
|
|
|
*/
|
|
|
|
public function testCalculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate, $expected) {
|
|
|
|
$result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate);
|
|
|
|
$this->assertSame($expected, $result);
|
|
|
|
}
|
2015-02-02 21:54:56 +03:00
|
|
|
|
2015-06-18 12:46:37 +03:00
|
|
|
public function dataTestSplitUserRemote() {
|
|
|
|
$userPrefix = ['user@name', 'username'];
|
2015-02-02 21:54:56 +03:00
|
|
|
$protocols = ['', 'http://', 'https://'];
|
|
|
|
$remotes = [
|
|
|
|
'localhost',
|
|
|
|
'local.host',
|
|
|
|
'dev.local.host',
|
|
|
|
'dev.local.host/path',
|
2015-06-18 12:46:37 +03:00
|
|
|
'dev.local.host/at@inpath',
|
2015-02-02 21:54:56 +03:00
|
|
|
'127.0.0.1',
|
|
|
|
'::1',
|
|
|
|
'::192.0.2.128',
|
2015-06-18 12:46:37 +03:00
|
|
|
'::192.0.2.128/at@inpath',
|
2015-02-02 21:54:56 +03:00
|
|
|
];
|
|
|
|
|
2015-06-18 12:46:37 +03:00
|
|
|
$testCases = [];
|
2015-02-02 21:54:56 +03:00
|
|
|
foreach ($userPrefix as $user) {
|
|
|
|
foreach ($remotes as $remote) {
|
|
|
|
foreach ($protocols as $protocol) {
|
2015-06-18 12:46:37 +03:00
|
|
|
$baseUrl = $user . '@' . $protocol . $remote;
|
2015-02-02 21:54:56 +03:00
|
|
|
|
2015-06-18 12:46:37 +03:00
|
|
|
$testCases[] = [$baseUrl, $user, $protocol . $remote];
|
|
|
|
$testCases[] = [$baseUrl . '/', $user, $protocol . $remote];
|
|
|
|
$testCases[] = [$baseUrl . '/index.php', $user, $protocol . $remote];
|
|
|
|
$testCases[] = [$baseUrl . '/index.php/s/token', $user, $protocol . $remote];
|
2015-02-02 21:54:56 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $testCases;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2015-06-18 12:46:37 +03:00
|
|
|
* @dataProvider dataTestSplitUserRemote
|
2015-06-18 10:21:06 +03:00
|
|
|
*
|
2015-06-18 12:46:37 +03:00
|
|
|
* @param string $remote
|
2015-06-18 10:21:06 +03:00
|
|
|
* @param string $expectedUser
|
2015-06-18 12:46:37 +03:00
|
|
|
* @param string $expectedUrl
|
2015-06-18 10:21:06 +03:00
|
|
|
*/
|
2015-06-18 12:46:37 +03:00
|
|
|
public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) {
|
|
|
|
list($remoteUser, $remoteUrl) = \OC\Share\Helper::splitUserRemote($remote);
|
|
|
|
$this->assertSame($expectedUser, $remoteUser);
|
|
|
|
$this->assertSame($expectedUrl, $remoteUrl);
|
2015-06-18 10:21:06 +03:00
|
|
|
}
|
|
|
|
|
2015-06-18 12:46:37 +03:00
|
|
|
public function dataTestSplitUserRemoteError() {
|
2020-03-26 11:30:18 +03:00
|
|
|
return [
|
2015-06-18 12:46:37 +03:00
|
|
|
// Invalid path
|
2020-03-26 11:30:18 +03:00
|
|
|
['user@'],
|
2015-06-18 12:46:37 +03:00
|
|
|
|
|
|
|
// Invalid user
|
2020-03-26 11:30:18 +03:00
|
|
|
['@server'],
|
|
|
|
['us/er@server'],
|
|
|
|
['us:er@server'],
|
2015-06-18 12:46:37 +03:00
|
|
|
|
|
|
|
// Invalid splitting
|
2020-03-26 11:30:18 +03:00
|
|
|
['user'],
|
|
|
|
[''],
|
|
|
|
['us/erserver'],
|
|
|
|
['us:erserver'],
|
|
|
|
];
|
2015-06-18 10:21:06 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider dataTestSplitUserRemoteError
|
|
|
|
*
|
|
|
|
* @param string $id
|
|
|
|
*/
|
|
|
|
public function testSplitUserRemoteError($id) {
|
2019-11-27 17:27:18 +03:00
|
|
|
$this->expectException(\OC\HintException::class);
|
|
|
|
|
2015-06-18 10:21:06 +03:00
|
|
|
\OC\Share\Helper::splitUserRemote($id);
|
|
|
|
}
|
2015-12-09 14:00:00 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider dataTestCompareServerAddresses
|
|
|
|
*
|
|
|
|
* @param string $server1
|
|
|
|
* @param string $server2
|
|
|
|
* @param bool $expected
|
|
|
|
*/
|
|
|
|
public function testIsSameUserOnSameServer($user1, $server1, $user2, $server2, $expected) {
|
|
|
|
$this->assertSame($expected,
|
|
|
|
\OC\Share\Helper::isSameUserOnSameServer($user1, $server1, $user2, $server2)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function dataTestCompareServerAddresses() {
|
|
|
|
return [
|
|
|
|
['user1', 'http://server1', 'user1', 'http://server1', true],
|
|
|
|
['user1', 'https://server1', 'user1', 'http://server1', true],
|
|
|
|
['user1', 'http://serVer1', 'user1', 'http://server1', true],
|
|
|
|
['user1', 'http://server1/', 'user1', 'http://server1', true],
|
|
|
|
['user1', 'server1', 'user1', 'http://server1', true],
|
|
|
|
['user1', 'http://server1', 'user1', 'http://server2', false],
|
|
|
|
['user1', 'https://server1', 'user1', 'http://server2', false],
|
|
|
|
['user1', 'http://serVer1', 'user1', 'http://serer2', false],
|
|
|
|
['user1', 'http://server1/', 'user1', 'http://server2', false],
|
|
|
|
['user1', 'server1', 'user1', 'http://server2', false],
|
|
|
|
['user1', 'http://server1', 'user2', 'http://server1', false],
|
|
|
|
['user1', 'https://server1', 'user2', 'http://server1', false],
|
|
|
|
['user1', 'http://serVer1', 'user2', 'http://server1', false],
|
|
|
|
['user1', 'http://server1/', 'user2', 'http://server1', false],
|
|
|
|
['user1', 'server1', 'user2', 'http://server1', false],
|
|
|
|
];
|
|
|
|
}
|
2014-04-23 14:50:24 +04:00
|
|
|
}
|