summaryrefslogtreecommitdiffstats
path: root/tests/lib/Share/HelperTest.php
blob: 2056e6bd1e2f57a772c6841cb8a750842f73a32b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?php
/**
* 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/>.
*/

namespace Test\Share;

/**
 * @group DB
 * Class Helper
 */
class HelperTest extends \Test\TestCase {

	public function expireDateProvider() {
		return [
			// no default expire date, we take the users expire date
			[['defaultExpireDateSet' => false], 2000000000, 2000010000, 2000010000],
			// no default expire date and no user defined expire date, return false
			[['defaultExpireDateSet' => false], 2000000000, null, false],
			// unenforced expire data and no user defined expire date, return false (because the default is not enforced)
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, null, false],
			// enforced expire date and no user defined expire date, take default expire date
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, null, 2000086400],
			// unenforced expire date and user defined date > default expire date, take users expire date
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, 2000100000, 2000100000],
			// unenforced expire date and user expire date < default expire date, take users expire date
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false], 2000000000, 2000010000, 2000010000],
			// enforced expire date and user expire date < default expire date, take users expire date
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, 2000010000, 2000010000],
			// enforced expire date and users expire date > default expire date, take default expire date
			[['defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true], 2000000000, 2000100000, 2000086400],
		];
	}

	/**
	 * @dataProvider expireDateProvider
	 */
	public function testCalculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate, $expected) {
		$result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate);
		$this->assertSame($expected, $result);
	}

	public function dataTestSplitUserRemote() {
		$userPrefix = ['user@name', 'username'];
		$protocols = ['', 'http://', 'https://'];
		$remotes = [
			'localhost',
			'local.host',
			'dev.local.host',
			'dev.local.host/path',
			'dev.local.host/at@inpath',
			'127.0.0.1',
			'::1',
			'::192.0.2.128',
			'::192.0.2.128/at@inpath',
		];

		$testCases = [];
		foreach ($userPrefix as $user) {
			foreach ($remotes as $remote) {
				foreach ($protocols as $protocol) {
					$baseUrl = $user . '@' . $protocol . $remote;

					$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];
				}
			}
		}
		return $testCases;
	}

	/**
	 * @dataProvider dataTestSplitUserRemote
	 *
	 * @param string $remote
	 * @param string $expectedUser
	 * @param string $expectedUrl
	 */
	public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) {
		list($remoteUser, $remoteUrl) = \OC\Share\Helper::splitUserRemote($remote);
		$this->assertSame($expectedUser, $remoteUser);
		$this->assertSame($expectedUrl, $remoteUrl);
	}

	public function dataTestSplitUserRemoteError() {
		return [
			// Invalid path
			['user@'],

			// Invalid user
			['@server'],
			['us/er@server'],
			['us:er@server'],

			// Invalid splitting
			['user'],
			[''],
			['us/erserver'],
			['us:erserver'],
		];
	}

	/**
	 * @dataProvider dataTestSplitUserRemoteError
	 *
	 * @param string $id
	 */
	public function testSplitUserRemoteError($id) {
		$this->expectException(\OC\HintException::class);

		\OC\Share\Helper::splitUserRemote($id);
	}

	/**
	 * @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],
		];
	}
}
ndrede din email på %2$s.", "Your email address on %s was changed." : "Din email på %s blev ændret.", "Your email address on %s was changed by an administrator." : "Din email adresse på %s er blevet ændret af en administrator", "Email address for %1$s changed on %2$s" : "Email adresse for %1$s ændret på %2$s", "Email address changed for %s" : "Email adresse ændret for %s", "The new email address is %s" : "Den nye email adresse er %s", "Your %s account was created" : "Din %s-konto blev oprettet", "Welcome aboard" : "Velkommen ombord", "Welcome aboard %s" : "velkommen ombord %s", "Welcome to your %s account, you can add, protect, and share your data." : "Velkommen til din %s konto, du kan tilføje, beskytte og dele dine data.", "Your username is: %s" : "Dit brugernavn er: %s", "Set your password" : "Sæt dit password", "Go to %s" : "Gå til %s", "Install Client" : "Installer client", "Password confirmation is required" : "Password beskæftigelse er påkrævet", "Couldn't remove app." : "Kunne ikke fjerne app'en.", "Couldn't update app." : "Kunne ikke opdatere app'en.", "Are you really sure you want add {domain} as trusted domain?" : "Er du helt sikker på at du vil tilføje {domain} som et betroet domæne?", "Add trusted domain" : "Tilføj et domæne som du har tillid til", "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", "Migration started …" : "Migrering er påbegyndt...", "Not saved" : "Ikke gemt", "Sending…" : "Sender...", "Email sent" : "E-mail afsendt", "Official" : "Officiel", "All" : "Alle", "Update to %s" : "Opdatér til %s", "No apps found for your version" : "Ingen apps fundet til din verion", "The app will be downloaded from the app store" : "Appen vil blive downloaded fra app storen.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Godkendte programmer er udviklet af betroet udviklere som har bestået en let sikkerheds gennemgang. De er aktivt vedligeholdt i et åben kode lager og udviklerne vurdere programmet til at være stabilt for normalt brug.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Dette program er ikke kontrolleret for sikkerhedsproblemer, og er nyt eller kendt for at være ustabilt. Installer på eget ansvar.", "Disabling app …" : "Deaktiverer app...", "Error while disabling app" : "Kunne ikke deaktivere app", "Disable" : "Deaktiver", "Enable" : "Aktiver", "Enabling app …" : "Aktiverer app...", "Error while enabling app" : "Kunne ikke aktivere app", "Error: This app can not be enabled because it makes the server unstable" : "Fejl: Denne app kan ikke aktiveres fordi den gør serveren ustabil", "Error: Could not disable broken app" : "Fejl: Kunne ikke deaktivere app", "Error while disabling broken app" : "Fejl under deaktivering af ødelagt app", "Updated" : "Opdateret", "Removing …" : "Fjerner...", "Remove" : "Fjern", "Approved" : "Godkendt", "Experimental" : "Eksperimentel", "No apps found for {query}" : "Ingen apps fundet for {query}", "Enable all" : "Aktiver alle", "Allow filesystem access" : "Tillad filsystem adgang", "Disconnect" : "Frakobl", "Revoke" : "Tilbagekald", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", "Google Chrome" : "Google Chrome", "Safari" : "Safari", "Google Chrome for Android" : "Google Chrome til Android", "iPhone iOS" : "iPhone iOS", "iPad iOS" : "iPad iOS", "iOS Client" : "iOS Client", "Android Client" : "Android klient", "Sync client - {os}" : "Synk klient - {os}", "This session" : "Sessionen", "Copy" : "Kopier", "Copied!" : "Kopieret", "Not supported!" : "Ikke understøttet", "Press ⌘-C to copy." : "Tryk ⌘-C for at kopiere.", "Press Ctrl-C to copy." : "Tryk Ctrl-C for kopi.", "Error while loading browser sessions and device tokens" : "Fejl mens browser sessions og enhed tokens blev loadet.", "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Der opstod en fejl. Upload venligst et ASCII-indkodet PEM-certifikat.", "Valid until {date}" : "Gyldig indtil {date}", "Delete" : "Slet", "Local" : "Lokal", "Private" : "Privat", "Only visible to local users" : "Kun synlig for lokale brugere", "Only visible to you" : "Kun synlig for dig", "Contacts" : "Kontakter", "Public" : "Offentlig", "Verify" : "Bekræft", "Verifying …" : "Bekræfter.....", "Select a profile picture" : "Vælg et profilbillede", "Very weak password" : "Meget svagt kodeord", "Weak password" : "Svagt kodeord", "So-so password" : "Jævnt kodeord", "Good password" : "Godt kodeord", "Strong password" : "Stærkt kodeord", "Groups" : "Grupper", "Unable to delete {objName}" : "Kunne ikke slette {objName}", "A valid group name must be provided" : "Et gyldigt gruppenavn skal angives ", "deleted {groupName}" : "slettede {groupName}", "undo" : "fortryd", "{size} used" : "{size} brugt", "never" : "aldrig", "deleted {userName}" : "slettede {userName}", "Add group" : "Tilføj gruppe", "no group" : "ingen gruppe", "Changing the password will result in data loss, because data recovery is not available for this user" : "Ændring af kodeordet vil føre til datatab, fordi datagendannelse ikke er tilgængelig for denne bruger", "A valid username must be provided" : "Et gyldigt brugernavn skal angives", "A valid password must be provided" : "En gyldig adgangskode skal angives", "A valid email must be provided" : "Der skal angives en gyldig e-mail", "Developer documentation" : "Dokumentation for udviklere", "by %s" : "af %s", "Documentation:" : "Dokumentation:", "User documentation" : "Brugerdokumentation", "Admin documentation" : "Admin-dokumentation", "Show description …" : "Vis beskrivelse", "Hide description …" : "Skjul beskrivelse", "This app cannot be installed because the following dependencies are not fulfilled:" : "Dette program kan ikke installeres, da følgende afhængigheder ikke imødekommes:", "Enable only for specific groups" : "Aktivér kun for udvalgte grupper", "Common Name" : "Almindeligt navn", "Valid until" : "Gyldig indtil", "Issued By" : "Udstedt af", "Valid until %s" : "Gyldig indtil %s", "Import root certificate" : "Importer rodcertifikat", "Administrator documentation" : "Administratordokumentation", "Online documentation" : "Online dokumentation", "Forum" : "Forum", "Getting help" : "Få hjælp", "Commercial support" : "Kommerciel support", "None" : "Ingen", "Login" : "Login", "Plain" : "Klartekst", "NT LAN Manager" : "NT LAN Manager", "SSL/TLS" : "SSL/TLS", "STARTTLS" : "STARTTLS", "Email server" : "E-mailserver", "Open documentation" : "Åben dokumentation", "Send mode" : "Tilstand for afsendelse", "Encryption" : "Kryptering", "From address" : "Fra adresse", "mail" : "mail", "Authentication method" : "Godkendelsesmetode", "Authentication required" : "Godkendelse påkrævet", "Server address" : "Serveradresse", "Port" : "Port", "Credentials" : "Brugeroplysninger", "SMTP Username" : "SMTP Brugernavn", "SMTP Password" : "SMTP Kodeord", "Store credentials" : "Gem brugeroplysninger", "Test email settings" : "Test e-mail-indstillinger", "Send email" : "Send e-mail", "Server-side encryption" : "Kryptering på serversiden", "Enable server-side encryption" : "Slå kryptering til på serversiden", "Please read carefully before activating server-side encryption: " : "Læs venligst dette omhyggeligt, før der aktivere kryptering på serversiden:", "This is the final warning: Do you really want to enable encryption?" : "Dette er den sidste advarsel: Sikker på at du vil slå kryptering til?", "Enable encryption" : "Slå kryptering til", "No encryption module loaded, please enable an encryption module in the app menu." : "Der er ikke indlæst et krypteringsmodul - slå venligst et krypteringsmodul til i app-menuen.", "Select default encryption module:" : "Vælg standardmodulet til kryptering:", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen. Slå venligst \"Standardmodul til kryptering\" til, og kør \"occ encryption:migrate\"", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du skal immigrere dine krypteringsnøgler fra den gamle kryptering (ownCloud <= 8.0) til den nye af slagsen.", "Start migration" : "Påbegynd immigrering", "Security & setup warnings" : "Advarsler om sikkerhed og opsætning", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Den skrivebeskyttede konfiguration er blevet slået til. Dette forhindrer indstillinger af nogle konfigurationer via webgrænsefladen. I tillæg skal filen gøres skrivbar manuelt for hver opdatering.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dette er sansynligvis forårsaget af et accelerator eller cache som Zend OPcache eller eAccelerator", "System locale can not be set to a one which supports UTF-8." : "Systemets lokalitet kan ikke sættes til et der bruger UTF-8.", "All checks passed." : "Alle tjek blev bestået.", "Execute one task with each page loaded" : "Udføre en opgave med hver side indlæsning", "Version" : "Version", "Sharing" : "Deling", "Allow apps to use the Share API" : "Tillad apps til at bruge Share API", "Allow users to share via link" : "Tillad brugere at dele via link", "Allow public uploads" : "Tillad offentlig upload", "Always ask for a password" : "Altid spørg efter kodeord", "Enforce password protection" : "Tving kodeords beskyttelse", "Set default expiration date" : "Vælg standard udløbsdato", "Expire after " : "Udløber efter", "days" : "dage", "Enforce expiration date" : "Påtving udløbsdato", "Allow resharing" : "Tillad videredeling", "Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe", "Exclude groups from sharing" : "Ekskluder grupper fra at dele", "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.", "Tips & tricks" : "Tips & tricks", "How to do backups" : "Hvordan man laver sikkerhedskopier", "Advanced monitoring" : "Avancerede monitorering", "Performance tuning" : "Ydelses optimering", "Improving the config.php" : "Forbedring af config.php", "Theming" : "Temaer", "Hardening and security guidance" : "Modstanddygtighed og sikkerheds vejledning", "Personal" : "Personligt", "Administration" : "Administration", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Du bruger <strong>%s</strong> af <strong>%s</strong>", "You are using <strong>%s</strong> of <strong>%s</strong> (<strong>%s %%</strong>)" : "Du bruger <strong>%s</strong> af <strong>%s</strong> (<strong>%s %%</strong>)", "Profile picture" : "Profilbillede", "Upload new" : "Upload nyt", "Select from Files" : "Vælg fra filer", "Remove image" : "Fjern billede", "png or jpg, max. 20 MB" : "png eller jpg, max. 20 MB", "Picture provided by original account" : "Billede leveret af den oprindelige konto", "Cancel" : "Annuller", "Choose as profile picture" : "Vælg et profilbillede", "Full name" : "Fulde navn", "No display name set" : "Der er ikke angivet skærmnavn", "Email" : "E-mail", "Your email address" : "Din e-mailadresse", "No email address set" : "Der er ikke angivet e-mailadresse", "For password reset and notifications" : "Til nulstilling af adgangskoder og meddelelser", "Phone number" : "Telefon nummer", "Your phone number" : "Dit telefon nummer", "Address" : "Adresse", "Your postal address" : "Dit Postnummer", "Website" : "Hjemmeside", "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", "Twitter" : "Twitter", "Twitter handle @…" : "Twitter handle @…", "You are member of the following groups:" : "Du er medlem af følgende grupper:", "Language" : "Sprog", "Help translate" : "Hjælp med oversættelsen", "Password" : "Kodeord", "Current password" : "Nuværende adgangskode", "New password" : "Nyt kodeord", "Change password" : "Skift kodeord", "Web, desktop and mobile clients currently logged in to your account." : "Web, stationære og mobile klienter, der er logget ind på din konto.", "Device" : "Enhed", "Last activity" : "Sidste aktivitet", "App name" : "App navn", "Create new app password" : "Opret nyt app kodeord", "Username" : "Brugernavn", "Done" : "Færdig", "Follow us on Google+" : "Følg os på Google+", "Like our Facebook page" : "Følg os på Facebook", "Follow us on Twitter" : "Følg os på Twitter", "Settings" : "Indstillinger", "Show storage location" : "Vis placering af lageret", "Show user backend" : "Vis bruger-backend", "Show last login" : "Vis seneste login", "Show email address" : "Vis e-mailadresse", "Send email to new user" : "Send e-mail til ny bruger", "E-Mail" : "E-mail", "Create" : "Ny", "Admin Recovery Password" : "Administrator gendannelse kodeord", "Enter the recovery password in order to recover the users files during password change" : "Indtast et gendannelse kodeord for, at kunne gendanne brugerens filer ved ændring af kodeord", "Everyone" : "Alle", "Admins" : "Administratore", "Disabled" : "Deaktiveret", "Default quota" : "Standard kvote", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Indtast venligst lagerkvote (f.eks. \"512 MB\" eller \"12 GB\")", "Unlimited" : "Ubegrænset", "Other" : "Andet", "Group admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "Storage location" : "Placering af lageret", "User backend" : "Bruger-backend", "Last login" : "Seneste login", "change full name" : "ændre fulde navn", "set new password" : "skift kodeord", "change email address" : "skift e-mailadresse", "Default" : "Standard" }, "nplurals=2; plural=(n != 1);");