diff options
Diffstat (limited to 'apps/files_external')
51 files changed, 416 insertions, 1098 deletions
diff --git a/apps/files_external/l10n/et_EE.js b/apps/files_external/l10n/et_EE.js index c43471fe499..9624cfcc025 100644 --- a/apps/files_external/l10n/et_EE.js +++ b/apps/files_external/l10n/et_EE.js @@ -2,13 +2,14 @@ OC.L10N.register( "files_external", { "Grant access" : "Anna ligipääs", - "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", - "Please provide a valid app key and secret." : "Palun sisesta rakenduse ketiva võti ja saladus.", - "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", + "Error configuring OAuth1" : "Viga OAuth1 seadistamisel", + "Please provide a valid app key and secret." : "Palun sisesta rakenduse kehtiv võti ja saladus.", + "Error configuring OAuth2" : "Viga OAuth2 seadistamisel", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", "You are not logged in" : "Sa pole sisse logitud.", "Permission denied" : "Õigus on keelatud", + "Forbidden to manage local mounts" : "Kohalike haakepunktide haldamine on keelatud", "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu", "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass", "Invalid mount point" : "Vigane haakepunkt", @@ -19,6 +20,7 @@ OC.L10N.register( "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", "Insufficient data: %s" : "Pole piisavalt andmeid: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Andmeruumi tunnusega „%d“ on muudetav vaid peakasutajate poolt", "Access key" : "Ligipääsuvõti", "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", @@ -43,6 +45,7 @@ OC.L10N.register( "Login and password" : "Kasutajanimi ja salasõna", "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis", "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna", + "Manually entered, store in database" : "Käsitsi sisestatud ja salvestub andmebaasis", "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", "RSA private key" : "RSA privaatvõti", @@ -52,12 +55,13 @@ OC.L10N.register( "Hostname" : "Hostinimi", "Port" : "Port", "Region" : "Piirkond", + "Storage Class" : "Andmeruumi klass (Storage class)", "Enable SSL" : "SSL-i kasutamine", "Enable Path Style" : "Luba otsingtee stiilis", "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)", "SSE-C encryption key" : "SSE-C krüptimisvõti", "WebDAV" : "WebDAV", - "URL" : "URL", + "URL" : "Võrguaadress", "Remote subfolder" : "Mujal olev alamkaust", "Secure https://" : "Turvaline https://", "FTP" : "FTP", @@ -73,6 +77,7 @@ OC.L10N.register( "Share" : "Jaga", "Show hidden files" : "Näita peidetud faile", "Case sensitive file system" : "Tõstutundlik failisüsteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Selle valiku keelamisega saad kasutada tõstutundetut failisüsteemi, kuid sellega kaasneb jõudluskadu", "Timeout" : "Aegumine", "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist", "OpenStack Object Storage" : "OpenStack Object Storage", @@ -80,25 +85,37 @@ OC.L10N.register( "Request timeout (seconds)" : "Päringu aegumine (sekundites)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ pole paigladatud. „%2$s“ haakimine pole võimalik. Palu oma peakasutajal või süsteemihalduril ta paigaldada.", "External storage" : "Väline andmehoidla", "External storage support" : "Väliste andmehoidlate tugi", - "Adds basic external storage support" : "Lisab väliste andmehoidlate toe baasiteratsioonis", + "Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi", "Confirm" : "Kinnita", "Storage credentials" : "Andmeruumi kasutajanimi/salasõna", "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.", "Enter the storage login" : "Sisesta andmeruumi kasutajatunnus", "Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna", + "Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}", + "New configuration successfully saved" : "Uue seadistuse salvestamine õnnestus", "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna", "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus", "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}", "Checking storage …" : "Kontrollin andmeruumi…", + "There was an error with this external storage." : "Selle välis andmeruumi kontekstis tekkis viga.", + "We were unable to check the external storage {basename}" : "Meil ei õnnestunud kontrollida välist andmeruumi „{basename}“", + "Examine this faulty external storage configuration" : "Kontrolli uuesti selle vigase välise andmeruumi seadistusi", "Open in Files" : "Ava failirakenduses", - "External mount error" : "Välise seostamise tõrge", - "Storage type" : "Andmehoidla tüüp", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?", + "External mount error" : "Viga välise andmeruumi haakimisel", + "List of external storage." : "Väliste andmeruumide loend.", + "There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.", + "There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.", + "No external storage" : "Ühtegi välist andmeruumi ei leidu", + "Storage type" : "Andmeruumi tüüp", "Unknown" : "Teadmata", "Scope" : "Skoop", "Personal" : "Isiklik", "System" : "Süsteem", + "Type to select account or group." : "Kasutakonto või grupi leidmiseks kirjuta midagi.", "(Group)" : "(Grupp)", "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)", "Enable encryption" : "Luba krüptimine", @@ -124,6 +141,8 @@ OC.L10N.register( "Configuration" : "Seadistamine", "Available for" : "Saadaval", "Add storage" : "Lisa andmehoidla", - "Advanced settings" : "Lisavalikud" + "All people" : "Kõik inimesed", + "Advanced settings" : "Lisavalikud", + "Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/et_EE.json b/apps/files_external/l10n/et_EE.json index 108e1ad18aa..eed33193c14 100644 --- a/apps/files_external/l10n/et_EE.json +++ b/apps/files_external/l10n/et_EE.json @@ -1,12 +1,13 @@ { "translations": { "Grant access" : "Anna ligipääs", - "Error configuring OAuth1" : "OAuth1 seadistamise tõrge", - "Please provide a valid app key and secret." : "Palun sisesta rakenduse ketiva võti ja saladus.", - "Error configuring OAuth2" : "OAuth2 seadistamise tõrge", + "Error configuring OAuth1" : "Viga OAuth1 seadistamisel", + "Please provide a valid app key and secret." : "Palun sisesta rakenduse kehtiv võti ja saladus.", + "Error configuring OAuth2" : "Viga OAuth2 seadistamisel", "Generate keys" : "Loo võtmed", "Error generating key pair" : "Viga võtmepaari loomisel", "You are not logged in" : "Sa pole sisse logitud.", "Permission denied" : "Õigus on keelatud", + "Forbidden to manage local mounts" : "Kohalike haakepunktide haldamine on keelatud", "Storage with ID \"%d\" not found" : "Andmeruumi tunnusega „%d“ ei leidu", "Invalid backend or authentication mechanism class" : "Vigane taustateenus või autentimismeetodi klass", "Invalid mount point" : "Vigane haakepunkt", @@ -17,6 +18,7 @@ "Unsatisfied backend parameters" : "Rahuldamata taustarakenduse parameetrid", "Insufficient data: %s" : "Pole piisavalt andmeid: %s", "%s" : "%s", + "Storage with ID \"%d\" is not editable by non-admins" : "Andmeruumi tunnusega „%d“ on muudetav vaid peakasutajate poolt", "Access key" : "Ligipääsuvõti", "Secret key" : "Salavõti", "Builtin" : "Sisseehitatud", @@ -41,6 +43,7 @@ "Login and password" : "Kasutajanimi ja salasõna", "Log-in credentials, save in session" : "Salvesta sisselogimise kasutajanimi/salasõna sessioonis", "Global credentials, manually entered" : "Käsitsi sisestatud üldine kasutajanimi/salasõna", + "Manually entered, store in database" : "Käsitsi sisestatud ja salvestub andmebaasis", "RSA public key" : "RSA avalik võti", "Public key" : "Avalik võti", "RSA private key" : "RSA privaatvõti", @@ -50,12 +53,13 @@ "Hostname" : "Hostinimi", "Port" : "Port", "Region" : "Piirkond", + "Storage Class" : "Andmeruumi klass (Storage class)", "Enable SSL" : "SSL-i kasutamine", "Enable Path Style" : "Luba otsingtee stiilis", "Legacy (v2) authentication" : "Pärandvormis autentimine (v2)", "SSE-C encryption key" : "SSE-C krüptimisvõti", "WebDAV" : "WebDAV", - "URL" : "URL", + "URL" : "Võrguaadress", "Remote subfolder" : "Mujal olev alamkaust", "Secure https://" : "Turvaline https://", "FTP" : "FTP", @@ -71,6 +75,7 @@ "Share" : "Jaga", "Show hidden files" : "Näita peidetud faile", "Case sensitive file system" : "Tõstutundlik failisüsteem", + "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Selle valiku keelamisega saad kasutada tõstutundetut failisüsteemi, kuid sellega kaasneb jõudluskadu", "Timeout" : "Aegumine", "SMB/CIFS using OC login" : "SMB / CIFS kasutades OC sisselogimist", "OpenStack Object Storage" : "OpenStack Object Storage", @@ -78,25 +83,37 @@ "Request timeout (seconds)" : "Päringu aegumine (sekundites)", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-i tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks cURL-i toe tagamiseks vajalikud muudatused.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tugi on PHP-s on kas paigaldamata või pole kasutusele võetud. „%s“ haakimine pole võimalik. Palun oma peakasutajat, et ta teeks FTP toe tagamiseks vajalikud muudatused.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "„%1$s“ pole paigladatud. „%2$s“ haakimine pole võimalik. Palu oma peakasutajal või süsteemihalduril ta paigaldada.", "External storage" : "Väline andmehoidla", "External storage support" : "Väliste andmehoidlate tugi", - "Adds basic external storage support" : "Lisab väliste andmehoidlate toe baasiteratsioonis", + "Adds basic external storage support" : "Lisab väliste andmehoidlate toe põhivariandi", "Confirm" : "Kinnita", "Storage credentials" : "Andmeruumi kasutajanimi/salasõna", "To access the storage, you need to provide the authentication credentials." : "Selle andmeruumi jaoks pead autentimiseks lisama kasutajanime ja salasõna.", "Enter the storage login" : "Sisesta andmeruumi kasutajatunnus", "Enter the storage password" : "Sisesta andmeruumi kasutaja salasõna", + "Unable to update this external storage config. {statusMessage}" : "Selle välise andmeruumi seadistusi pole võimalik uuendada. {statusMessage}", + "New configuration successfully saved" : "Uue seadistuse salvestamine õnnestus", "Enter missing credentials" : "Lisa puuduvad kasutajanimi/salasõna", "Credentials successfully set" : "Kasutajanime/salasõna lisamine õnnestus", "Error while setting credentials: {error}" : "Viga kasutajanime/salasõna lisamisel: {error}", "Checking storage …" : "Kontrollin andmeruumi…", + "There was an error with this external storage." : "Selle välis andmeruumi kontekstis tekkis viga.", + "We were unable to check the external storage {basename}" : "Meil ei õnnestunud kontrollida välist andmeruumi „{basename}“", + "Examine this faulty external storage configuration" : "Kontrolli uuesti selle vigase välise andmeruumi seadistusi", "Open in Files" : "Ava failirakenduses", - "External mount error" : "Välise seostamise tõrge", - "Storage type" : "Andmehoidla tüüp", + "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Selle välise andmeruumiga tekkis viga. Kas sa tahaksid seadistustest kontrollida haakepunkti konfiguratsiooni?", + "External mount error" : "Viga välise andmeruumi haakimisel", + "List of external storage." : "Väliste andmeruumide loend.", + "There is no external storage configured. You can configure them in your Personal settings." : "Ühtegi välist andmeruumi pole seadistatud. Saad seda teha isiklikest seadistustest.", + "There is no external storage configured and you don't have the permission to configure them." : "Ühtegi välist andmeruumi pole seadistatud ja sul pole õigust seda teha.", + "No external storage" : "Ühtegi välist andmeruumi ei leidu", + "Storage type" : "Andmeruumi tüüp", "Unknown" : "Teadmata", "Scope" : "Skoop", "Personal" : "Isiklik", "System" : "Süsteem", + "Type to select account or group." : "Kasutakonto või grupi leidmiseks kirjuta midagi.", "(Group)" : "(Grupp)", "Compatibility with Mac NFD encoding (slow)" : "Ühilduvus Mac NFD kodeeringuga (aeglane)", "Enable encryption" : "Luba krüptimine", @@ -122,6 +139,8 @@ "Configuration" : "Seadistamine", "Available for" : "Saadaval", "Add storage" : "Lisa andmehoidla", - "Advanced settings" : "Lisavalikud" + "All people" : "Kõik inimesed", + "Advanced settings" : "Lisavalikud", + "Allow people to mount external storage" : "Luba kõigil haakida välist andmeruumi" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index bb6ed322fea..5c6d38b6396 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -7,6 +7,7 @@ OC.L10N.register( "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2", "Generate keys" : "Générer des clés", "Error generating key pair" : "Erreur lors de la génération des clés", + "You are not logged in" : "Vous n'êtes pas connecté", "Permission denied" : "Autorisation refusée", "Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.", "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 23e6346641f..2cadc830a7d 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -5,6 +5,7 @@ "Error configuring OAuth2" : "Erreur lors de la configuration de OAuth2", "Generate keys" : "Générer des clés", "Error generating key pair" : "Erreur lors de la génération des clés", + "You are not logged in" : "Vous n'êtes pas connecté", "Permission denied" : "Autorisation refusée", "Forbidden to manage local mounts" : "Interdiction de gérer les montages locaux.", "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 4df5dddd8db..233814a6abc 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -33,7 +33,7 @@ OC.L10N.register( "Client ID" : "ID do Cliente", "Client secret" : "Segredo do cliente", "OpenStack v2" : "OpenStack v2", - "Login" : "Entrar", + "Login" : "Nome de login", "Password" : "Senha", "Tenant name" : "Nome do inquilino", "Identity endpoint URL" : "URL do destino da identidade", @@ -42,17 +42,17 @@ OC.L10N.register( "Rackspace" : "Espaço no rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", - "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Login and password" : "Login e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", + "Log-in credentials, save in database" : "Credenciais de acesso, armazenar no banco de dados", + "Login and password" : "Nome de login e senha", + "Log-in credentials, save in session" : "Credenciais de login, armazenar na sessão", "Global credentials, manually entered" : "Credenciais globais, inseridas manualmente", - "Manually entered, store in database" : "Inserido manualmente, armazenado no banco de dados", + "Manually entered, store in database" : "Inseridos manualmente, armazenados no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "RSA private key" : "Chave privada RSA", "Private key" : "Chave privada", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "reino padrão do Kerberos, padrão para \"WORKGROUP\"", - "Kerberos ticket Apache mode" : "Bilhete Kerberos Modo Apache", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Reino padrão do Kerberos, o padrão é \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Modo Apache de Ticket Kerberos", "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Cesta", @@ -81,13 +81,13 @@ OC.L10N.register( "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartilhar", "Show hidden files" : "Mostrar arquivos ocultos", - "Case sensitive file system" : "Sistema de arquivos sensível a maiúsculas", + "Case sensitive file system" : "Sistema de arquivos diferenciando maiúsculas/minúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativá-lo permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", "Verify ACL access when listing files" : "Verifique o acesso da ACL ao listar arquivos", "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, o que acarreta uma penalidade de desempenho", "Timeout" : "Tempo limite", - "SMB/CIFS using OC login" : "SMB/CIFS usandoo login OC", - "Login as share" : "Faça login como compartilhar", + "SMB/CIFS using OC login" : "SMB/CIFS usando login OC", + "Login as share" : "Faça login como compartilhamento", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo limite para requisição (segundos)", @@ -101,21 +101,21 @@ OC.L10N.register( "Confirm" : "Confirmar", "Storage credentials" : "Credenciais de armazenamento", "To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.", - "Enter the storage login" : "Digite o login de armazenamento", + "Enter the storage login" : "Digite o nome de login de armazenamento", "Enter the storage password" : "Digite a senha de armazenamento", "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", "Enter missing credentials" : "Digite as credenciais ausentes", - "Credentials successfully set" : "Credenciais configuradas com sucesso", - "Error while setting credentials: {error}" : "Erro ao configurar as credenciais: {error}", + "Credentials successfully set" : "Credenciais definidas com sucesso", + "Error while setting credentials: {error}" : "Erro ao definir as credenciais: {error}", "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", - "Open in Files" : "Abrir em arquivos", + "Open in Files" : "Abrir em Arquivos", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Ocorreu um erro com este armazenamento externo. Deseja revisar esta configuração do ponto de montagem na página de configurações?", "External mount error" : "Erro de montagem externa", - "List of external storage." : "Lista de armazenamento externo.", + "List of external storage." : "Lista de armazenamentos externos.", "There is no external storage configured. You can configure them in your Personal settings." : "Não há armazenamento externo configurado. Você pode configurá-los em suas configurações pessoais.", "There is no external storage configured and you don't have the permission to configure them." : "Não há armazenamento externo configurado e você não tem permissão para configurá-los.", "No external storage" : "Sem armazenamento externo", @@ -135,10 +135,10 @@ OC.L10N.register( "Once every direct access" : "Uma vez a cada acesso direto", "Read only" : "Somente leitura", "Disconnect" : "Desconectar", - "Unknown backend: {backendName}" : "Backend desconhecido: {backendName}", + "Unknown backend: {backendName}" : "Back-end desconhecido: {backendName}", "Admin defined" : "Definido pelo administrador", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão desses arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta no próprio armazenamento externo.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão destes arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta do armazenamento externo em si.", "Delete storage?" : "Excluir armazenamento?", "Click to recheck the configuration" : "Clique para rechecar a configuração", "Saved" : "Salvo", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 02fd258d356..6002404e464 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -31,7 +31,7 @@ "Client ID" : "ID do Cliente", "Client secret" : "Segredo do cliente", "OpenStack v2" : "OpenStack v2", - "Login" : "Entrar", + "Login" : "Nome de login", "Password" : "Senha", "Tenant name" : "Nome do inquilino", "Identity endpoint URL" : "URL do destino da identidade", @@ -40,17 +40,17 @@ "Rackspace" : "Espaço no rack", "API key" : "Chave API", "Global credentials" : "Credenciais globais", - "Log-in credentials, save in database" : "Credenciais de acesso, salvas no banco de dados", - "Login and password" : "Login e senha", - "Log-in credentials, save in session" : "Credenciais de login, guardadas em sessão", + "Log-in credentials, save in database" : "Credenciais de acesso, armazenar no banco de dados", + "Login and password" : "Nome de login e senha", + "Log-in credentials, save in session" : "Credenciais de login, armazenar na sessão", "Global credentials, manually entered" : "Credenciais globais, inseridas manualmente", - "Manually entered, store in database" : "Inserido manualmente, armazenado no banco de dados", + "Manually entered, store in database" : "Inseridos manualmente, armazenados no banco de dados", "RSA public key" : "Chave pública RSA", "Public key" : "Chave pública", "RSA private key" : "Chave privada RSA", "Private key" : "Chave privada", - "Kerberos default realm, defaults to \"WORKGROUP\"" : "reino padrão do Kerberos, padrão para \"WORKGROUP\"", - "Kerberos ticket Apache mode" : "Bilhete Kerberos Modo Apache", + "Kerberos default realm, defaults to \"WORKGROUP\"" : "Reino padrão do Kerberos, o padrão é \"WORKGROUP\"", + "Kerberos ticket Apache mode" : "Modo Apache de Ticket Kerberos", "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Cesta", @@ -79,13 +79,13 @@ "SMB/CIFS" : "SMB/CIFS", "Share" : "Compartilhar", "Show hidden files" : "Mostrar arquivos ocultos", - "Case sensitive file system" : "Sistema de arquivos sensível a maiúsculas", + "Case sensitive file system" : "Sistema de arquivos diferenciando maiúsculas/minúsculas", "Disabling it will allow to use a case insensitive file system, but comes with a performance penalty" : "Desativá-lo permitirá usar um sistema de arquivos que não diferencia maiúsculas de minúsculas, mas acarretará uma penalidade de desempenho", "Verify ACL access when listing files" : "Verifique o acesso da ACL ao listar arquivos", "Check the ACL's of each file or folder inside a directory to filter out items where the account has no read permissions, comes with a performance penalty" : "Verifique as ACLs de cada arquivo ou pasta dentro de um diretório para filtrar itens onde a conta não tem permissões de leitura, o que acarreta uma penalidade de desempenho", "Timeout" : "Tempo limite", - "SMB/CIFS using OC login" : "SMB/CIFS usandoo login OC", - "Login as share" : "Faça login como compartilhar", + "SMB/CIFS using OC login" : "SMB/CIFS usando login OC", + "Login as share" : "Faça login como compartilhamento", "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo limite para requisição (segundos)", @@ -99,21 +99,21 @@ "Confirm" : "Confirmar", "Storage credentials" : "Credenciais de armazenamento", "To access the storage, you need to provide the authentication credentials." : "Para acessar o armazenamento, você precisa fornecer as credenciais de autenticação.", - "Enter the storage login" : "Digite o login de armazenamento", + "Enter the storage login" : "Digite o nome de login de armazenamento", "Enter the storage password" : "Digite a senha de armazenamento", "Unable to update this external storage config. {statusMessage}" : "Não é possível atualizar esta configuração de armazenamento externo. {statusMessage}", "New configuration successfully saved" : "Nova configuração salva com sucesso", "Enter missing credentials" : "Digite as credenciais ausentes", - "Credentials successfully set" : "Credenciais configuradas com sucesso", - "Error while setting credentials: {error}" : "Erro ao configurar as credenciais: {error}", + "Credentials successfully set" : "Credenciais definidas com sucesso", + "Error while setting credentials: {error}" : "Erro ao definir as credenciais: {error}", "Checking storage …" : "Verificação do armazenamento …", "There was an error with this external storage." : "Ocorreu um erro com este armazenamento externo.", "We were unable to check the external storage {basename}" : "Não foi possível verificar o armazenamento externo {basename}", "Examine this faulty external storage configuration" : "Examine esta configuração de armazenamento externo com falha", - "Open in Files" : "Abrir em arquivos", + "Open in Files" : "Abrir em Arquivos", "There was an error with this external storage. Do you want to review this mount point config in the settings page?" : "Ocorreu um erro com este armazenamento externo. Deseja revisar esta configuração do ponto de montagem na página de configurações?", "External mount error" : "Erro de montagem externa", - "List of external storage." : "Lista de armazenamento externo.", + "List of external storage." : "Lista de armazenamentos externos.", "There is no external storage configured. You can configure them in your Personal settings." : "Não há armazenamento externo configurado. Você pode configurá-los em suas configurações pessoais.", "There is no external storage configured and you don't have the permission to configure them." : "Não há armazenamento externo configurado e você não tem permissão para configurá-los.", "No external storage" : "Sem armazenamento externo", @@ -133,10 +133,10 @@ "Once every direct access" : "Uma vez a cada acesso direto", "Read only" : "Somente leitura", "Disconnect" : "Desconectar", - "Unknown backend: {backendName}" : "Backend desconhecido: {backendName}", + "Unknown backend: {backendName}" : "Back-end desconhecido: {backendName}", "Admin defined" : "Definido pelo administrador", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "A verificação automática de status está desabilitada devido ao grande número de armazenamentos configurados, clique para verificar o status", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão desses arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta no próprio armazenamento externo.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Tem certeza de que deseja desconectar este armazenamento externo? Isso tornará o armazenamento indisponível no Nextcloud e levará à exclusão destes arquivos e pastas em qualquer cliente de sincronização que esteja conectado no momento, mas não excluirá nenhum arquivo e pasta do armazenamento externo em si.", "Delete storage?" : "Excluir armazenamento?", "Click to recheck the configuration" : "Clique para rechecar a configuração", "Saved" : "Salvo", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index c62abe057e0..e98198264b8 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -7,6 +7,8 @@ OC.L10N.register( "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания пары ключей", + "You are not logged in" : "Вход в систему не выполнен", + "Permission denied" : "Доступ запрещён", "Forbidden to manage local mounts" : "Запрещено изменять параметры подключения файловых систем", "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Недопустимый механизм или класс авторизации", @@ -62,6 +64,7 @@ OC.L10N.register( "Enable Path Style" : "Использовать стиль пути", "Legacy (v2) authentication" : "Устаревшая (v2) проверка подлинности", "Enable multipart copy" : "Включить составное копирование", + "SSE-C encryption key" : "Ключ шифрования SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Подкаталог на другом сервере", @@ -103,6 +106,9 @@ OC.L10N.register( "Unable to update this external storage config. {statusMessage}" : "Не удалось обновить эту конфигурацию внешних хранилищ. {statusMessage}", "New configuration successfully saved" : "Новая конфигурация успешно сохранена", "Enter missing credentials" : "Ввод пропущенных учётных данных", + "Credentials successfully set" : "Учётные данные успешно заданы", + "Error while setting credentials: {error}" : "Ошибка при установке учётных данных: {error}", + "Checking storage …" : "Проверка хранилища …", "There was an error with this external storage." : "Произошла ошибка с этим внешним хранилищем.", "We were unable to check the external storage {basename}" : "Нам не удалось проверить внешнее хранилище {basename}", "Examine this faulty external storage configuration" : "Проверьте эту конфигурацию внешнего хранилища, она содержит ошибки", @@ -138,6 +144,8 @@ OC.L10N.register( "Saved" : "Сохранено", "Saving …" : "Сохранение ...", "Save" : "Сохранить", + "Failed to save global credentials" : "Не удалось сохранить глобальные учётные данные", + "Failed to save global credentials: {message}" : "Не удалось сохранить глобальные учётные данные: {message}", "No external storage configured or you don't have the permission to configure them" : "Нет настроенного внешнего хранилища или у вас нет прав доступа для их настройки", "Open documentation" : "Открыть документацию", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние службы и устройства хранения в качестве дополнительных устройств хранения данных Nextcloud. Вы также можете разрешить людям подключать свои собственные внешние службы хранения данных.", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index ece2f8cd31b..a0260761245 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -5,6 +5,8 @@ "Error configuring OAuth2" : "Ошибка настройки OAuth2", "Generate keys" : "Создать ключи", "Error generating key pair" : "Ошибка создания пары ключей", + "You are not logged in" : "Вход в систему не выполнен", + "Permission denied" : "Доступ запрещён", "Forbidden to manage local mounts" : "Запрещено изменять параметры подключения файловых систем", "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Недопустимый механизм или класс авторизации", @@ -60,6 +62,7 @@ "Enable Path Style" : "Использовать стиль пути", "Legacy (v2) authentication" : "Устаревшая (v2) проверка подлинности", "Enable multipart copy" : "Включить составное копирование", + "SSE-C encryption key" : "Ключ шифрования SSE-C", "WebDAV" : "WebDAV", "URL" : "URL", "Remote subfolder" : "Подкаталог на другом сервере", @@ -101,6 +104,9 @@ "Unable to update this external storage config. {statusMessage}" : "Не удалось обновить эту конфигурацию внешних хранилищ. {statusMessage}", "New configuration successfully saved" : "Новая конфигурация успешно сохранена", "Enter missing credentials" : "Ввод пропущенных учётных данных", + "Credentials successfully set" : "Учётные данные успешно заданы", + "Error while setting credentials: {error}" : "Ошибка при установке учётных данных: {error}", + "Checking storage …" : "Проверка хранилища …", "There was an error with this external storage." : "Произошла ошибка с этим внешним хранилищем.", "We were unable to check the external storage {basename}" : "Нам не удалось проверить внешнее хранилище {basename}", "Examine this faulty external storage configuration" : "Проверьте эту конфигурацию внешнего хранилища, она содержит ошибки", @@ -136,6 +142,8 @@ "Saved" : "Сохранено", "Saving …" : "Сохранение ...", "Save" : "Сохранить", + "Failed to save global credentials" : "Не удалось сохранить глобальные учётные данные", + "Failed to save global credentials: {message}" : "Не удалось сохранить глобальные учётные данные: {message}", "No external storage configured or you don't have the permission to configure them" : "Нет настроенного внешнего хранилища или у вас нет прав доступа для их настройки", "Open documentation" : "Открыть документацию", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow people to mount their own external storage services." : "Внешнее хранилище позволяет подключать внешние службы и устройства хранения в качестве дополнительных устройств хранения данных Nextcloud. Вы также можете разрешить людям подключать свои собственные внешние службы хранения данных.", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index f17488f7154..78246635d01 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -91,13 +91,13 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack nesne depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Lütfen desteği kurması için BT yöneticiniz ile görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Lütfen desteği kurması için BT yöneticiniz ile görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkin değil. %s bağlanamaz. Kurulumu için lütfen BT yöneticiniz ile görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da etkin değil. %s bağlanamaz. Kurulumu için lütfen BT yöneticiniz ile görüşün.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticiniz ile görüşün.", "External storage" : "Dış depolama", "External storage support" : "Dış depolama desteği", "Adds basic external storage support" : "Temel dış depolama desteği ekler", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, kullanıma almak istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, etkinleştirmek istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", "Confirm" : "Onayla", "Storage credentials" : "Depolama alanı kimlik doğrulama bilgileri", "To access the storage, you need to provide the authentication credentials." : "Depolama alanına erişebilmek için kimlik doğrulama bilgilerini vermeniz gerekir.", @@ -137,7 +137,7 @@ OC.L10N.register( "Disconnect" : "Bağlantıyı kes", "Unknown backend: {backendName}" : "Bilinmeyen arka uç: {backendName}", "Admin defined" : "Yönetici ayarlamış", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi kullanımdan kaldırıldı. Durumu denetlemek için tıklayın", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi devre dışı bırakıldı. Durumu denetlemek için tıklayın", "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", "Delete storage?" : "Depolama silinsin mi?", "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 20f805c4ea3..01cd0b36417 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -89,13 +89,13 @@ "OpenStack Object Storage" : "OpenStack nesne depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Lütfen desteği kurması için BT yöneticiniz ile görüşün.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da kullanıma alınmamış. %s bağlanamaz. Lütfen desteği kurması için BT yöneticiniz ile görüşün.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkin değil. %s bağlanamaz. Kurulumu için lütfen BT yöneticiniz ile görüşün.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kurulmamış ya da etkin değil. %s bağlanamaz. Kurulumu için lütfen BT yöneticiniz ile görüşün.", "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" kurulmamış. %2$s\" bağlanamaz. Lütfen kurulum için BT yöneticiniz ile görüşün.", "External storage" : "Dış depolama", "External storage support" : "Dış depolama desteği", "Adds basic external storage support" : "Temel dış depolama desteği ekler", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, kullanıma almak istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administration can choose which types of storage to enable and can mount these storage locations for an account, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows people to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the administration with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Bu uygulama yöneticilerin FTP sunucular, S3 ya da SWIFT nesne mağazaları, diğer Nextcloud sunucuları ve WebDAV sunucuları gibi çeşitli dış depolama alanı hizmeti sağlayıcıları ile bağlantı kurmasını sağlar. Yöneticiler, etkinleştirmek istedikleri depolama alanı türünü seçebilir ve bu depolama alanı konumlarını belirli bir hesap, bir grup ya da tüm sistem için ekleyebilir. Kullanıcılar bağlanan depolama alanını kök Nextcloud klasörü altında yeni bir klasör olarak görebilir ve diğer Nextcloud klasörleri gibi erişebilir. Dış depolama alanı, bu konumlarda depolanan dosyaların kişiler tarafından paylaşılmasını da sağlar. Bu durumda alıcıların dış dosyaya erişebileceğinden emin olmak için yapılan dosya erişimi isteklerinde, dosya sahibinin kimlik doğrulama bilgileri kullanılır.\n\nDış depolama alanı yapılandırması görsel arayüzden ya da komut satırından yapılabilir. Komut satırı seçeneğinde, yöneticiler için toplu dış depolama alanı bağlama ve bağlama noktası öncelikleri gibi esnek yapılandırma seçenekleri bulunur. Ayrıntılı bilgi almak için dış depolama alanı görsel arayüzü belgeleri ile dış depolama alanı yapılandırma dosyası belgelerine bakabilirsiniz.", "Confirm" : "Onayla", "Storage credentials" : "Depolama alanı kimlik doğrulama bilgileri", "To access the storage, you need to provide the authentication credentials." : "Depolama alanına erişebilmek için kimlik doğrulama bilgilerini vermeniz gerekir.", @@ -135,7 +135,7 @@ "Disconnect" : "Bağlantıyı kes", "Unknown backend: {backendName}" : "Bilinmeyen arka uç: {backendName}", "Admin defined" : "Yönetici ayarlamış", - "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi kullanımdan kaldırıldı. Durumu denetlemek için tıklayın", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Çok sayıda depolama yapılandırılmış olduğundan otomatik durum denetimi devre dışı bırakıldı. Durumu denetlemek için tıklayın", "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Bu dış depolama biriminin bağlantısını kesmek istediğinize emin misiniz? Bu işlem, depolamayı Nextcloud üzerinden kaldırırarak, şu anda bağlı olan ve eşitlenen herhangi bir istemcide bu dosya ve klasörlerin silinmesine yol açar. Ancak dış depolama üzerindeki hiçbir dosya ve klasör silinmez.", "Delete storage?" : "Depolama silinsin mi?", "Click to recheck the configuration" : "Yapılandırmayı yeniden denetlemek için tıklayın", diff --git a/apps/files_external/lib/Command/Scan.php b/apps/files_external/lib/Command/Scan.php index 4f29dae1ce0..75d98878baa 100644 --- a/apps/files_external/lib/Command/Scan.php +++ b/apps/files_external/lib/Command/Scan.php @@ -54,6 +54,11 @@ class Scan extends StorageAuthBase { InputOption::VALUE_OPTIONAL, 'The path in the storage to scan', '' + )->addOption( + 'unscanned', + '', + InputOption::VALUE_NONE, + 'only scan files which are marked as not fully scanned' ); parent::configure(); } @@ -84,7 +89,15 @@ class Scan extends StorageAuthBase { }); try { - $scanner->scan($path); + if ($input->getOption('unscanned')) { + if ($path !== '') { + $output->writeln('<error>--unscanned is mutually exclusive with --path</error>'); + return 1; + } + $scanner->backgroundScan(); + } else { + $scanner->scan($path); + } } catch (LockedException $e) { if (is_string($e->getReadablePath()) && str_starts_with($e->getReadablePath(), 'scanner::')) { if ($e->getReadablePath() === 'scanner::') { diff --git a/apps/files_external/tests/Auth/AuthMechanismTest.php b/apps/files_external/tests/Auth/AuthMechanismTest.php index 682d2e1326f..d6279ea4f1f 100644 --- a/apps/files_external/tests/Auth/AuthMechanismTest.php +++ b/apps/files_external/tests/Auth/AuthMechanismTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -13,7 +15,7 @@ use OCA\Files_External\Lib\StorageConfig; class AuthMechanismTest extends \Test\TestCase { public function testJsonSerialization(): void { $mechanism = $this->getMockBuilder(AuthMechanism::class) - ->setMethods(['jsonSerializeDefinition']) + ->onlyMethods(['jsonSerializeDefinition']) ->getMock(); $mechanism->expects($this->once()) ->method('jsonSerializeDefinition') @@ -26,7 +28,7 @@ class AuthMechanismTest extends \Test\TestCase { $this->assertEquals('scheme', $json['scheme']); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, 'scheme', true], [false, 'scheme', false], @@ -38,9 +40,9 @@ class AuthMechanismTest extends \Test\TestCase { /** * @dataProvider validateStorageProvider */ - public function testValidateStorage($expectedSuccess, $scheme, $definitionSuccess): void { + public function testValidateStorage(bool $expectedSuccess, string $scheme, bool $definitionSuccess): void { $mechanism = $this->getMockBuilder(AuthMechanism::class) - ->setMethods(['validateStorageDefinition']) + ->onlyMethods(['validateStorageDefinition']) ->getMock(); $mechanism->expects($this->atMost(1)) ->method('validateStorageDefinition') @@ -48,16 +50,12 @@ class AuthMechanismTest extends \Test\TestCase { $mechanism->setScheme($scheme); - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + $backend = $this->createMock(Backend::class); $backend->expects($this->once()) ->method('getAuthSchemes') ->willReturn(['scheme' => true, 'foobar' => true]); - $storageConfig = $this->getMockBuilder(StorageConfig::class) - ->disableOriginalConstructor() - ->getMock(); + $storageConfig = $this->createMock(StorageConfig::class); $storageConfig->expects($this->once()) ->method('getBackend') ->willReturn($backend); diff --git a/apps/files_external/tests/Auth/Password/GlobalAuth.php b/apps/files_external/tests/Auth/Password/GlobalAuthTest.php index 998db198b53..02f15cb76c4 100644 --- a/apps/files_external/tests/Auth/Password/GlobalAuth.php +++ b/apps/files_external/tests/Auth/Password/GlobalAuthTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,26 +10,16 @@ namespace OCA\Files_External\Tests\Auth\Password; use OCA\Files_External\Lib\Auth\Password\GlobalAuth; use OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException; -use OCA\Files_external\Lib\StorageConfig; +use OCA\Files_External\Lib\StorageConfig; use OCP\IL10N; use OCP\Security\ICredentialsManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class GlobalAuthTest extends TestCase { - /** - * @var IL10N|\PHPUnit\Framework\MockObject\MockObject - */ - private $l10n; - - /** - * @var ICredentialsManager|\PHPUnit\Framework\MockObject\MockObject - */ - private $credentialsManager; - - /** - * @var GlobalAuth - */ - private $instance; + private IL10N&MockObject $l10n; + private ICredentialsManager&MockObject $credentialsManager; + private GlobalAuth $instance; protected function setUp(): void { parent::setUp(); @@ -37,7 +29,7 @@ class GlobalAuthTest extends TestCase { } private function getStorageConfig($type, $config = []) { - /** @var \OCA\Files_External\Lib\StorageConfig|\PHPUnit\Framework\MockObject\MockObject $storageConfig */ + /** @var \OCA\Files_External\Lib\StorageConfig&MockObject $storageConfig */ $storageConfig = $this->createMock(StorageConfig::class); $storageConfig->expects($this->any()) ->method('getType') diff --git a/apps/files_external/tests/Backend/BackendTest.php b/apps/files_external/tests/Backend/BackendTest.php index 26aa5ebe6af..1e158654595 100644 --- a/apps/files_external/tests/Backend/BackendTest.php +++ b/apps/files_external/tests/Backend/BackendTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -12,7 +14,7 @@ use OCA\Files_External\Lib\StorageConfig; class BackendTest extends \Test\TestCase { public function testJsonSerialization(): void { $backend = $this->getMockBuilder(Backend::class) - ->setMethods(['jsonSerializeDefinition']) + ->onlyMethods(['jsonSerializeDefinition']) ->getMock(); $backend->expects($this->once()) ->method('jsonSerializeDefinition') @@ -32,7 +34,7 @@ class BackendTest extends \Test\TestCase { $this->assertContains('barauth', array_keys($json['authSchemes'])); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, true], [false, false], @@ -42,9 +44,9 @@ class BackendTest extends \Test\TestCase { /** * @dataProvider validateStorageProvider */ - public function testValidateStorage($expectedSuccess, $definitionSuccess): void { + public function testValidateStorage(bool $expectedSuccess, bool $definitionSuccess): void { $backend = $this->getMockBuilder(Backend::class) - ->setMethods(['validateStorageDefinition']) + ->onlyMethods(['validateStorageDefinition']) ->getMock(); $backend->expects($this->atMost(1)) ->method('validateStorageDefinition') diff --git a/apps/files_external/tests/Backend/LegacyBackendTest.php b/apps/files_external/tests/Backend/LegacyBackendTest.php index cea46c1a0cd..147965e2499 100644 --- a/apps/files_external/tests/Backend/LegacyBackendTest.php +++ b/apps/files_external/tests/Backend/LegacyBackendTest.php @@ -6,6 +6,7 @@ */ namespace OCA\Files_External\Tests\Backend; +use OCA\Files_External\Lib\Auth\Builtin; use OCA\Files_External\Lib\Backend\LegacyBackend; use OCA\Files_External\Lib\DefinitionParameter; use OCA\Files_External\Lib\MissingDependency; @@ -15,18 +16,16 @@ class LegacyBackendTest extends \Test\TestCase { /** * @return MissingDependency[] */ - public static function checkDependencies() { + public static function checkDependencies(): array { return [ (new MissingDependency('abc'))->setMessage('foobar') ]; } public function testConstructor(): void { - $auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin') - ->disableOriginalConstructor() - ->getMock(); + $auth = $this->createMock(Builtin::class); - $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest'; + $class = self::class; $definition = [ 'configuration' => [ 'textfield' => 'Text field', @@ -43,7 +42,7 @@ class LegacyBackendTest extends \Test\TestCase { $backend = new LegacyBackend($class, $definition, $auth); - $this->assertEquals('\OCA\Files_External\Tests\Backend\LegacyBackendTest', $backend->getStorageClass()); + $this->assertEquals(self::class, $backend->getStorageClass()); $this->assertEquals('Backend text', $backend->getText()); $this->assertEquals(123, $backend->getPriority()); $this->assertContains('foo/bar.js', $backend->getCustomJs()); @@ -74,11 +73,9 @@ class LegacyBackendTest extends \Test\TestCase { } public function testNoDependencies(): void { - $auth = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\Builtin') - ->disableOriginalConstructor() - ->getMock(); + $auth = $this->createMock(Builtin::class); - $class = '\OCA\Files_External\Tests\Backend\LegacyBackendTest'; + $class = self::class; $definition = [ 'configuration' => [ ], diff --git a/apps/files_external/tests/Command/ApplicableTest.php b/apps/files_external/tests/Command/ApplicableTest.php index 8854e4ad485..59db18a42de 100644 --- a/apps/files_external/tests/Command/ApplicableTest.php +++ b/apps/files_external/tests/Command/ApplicableTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -9,12 +11,13 @@ namespace OCA\Files_External\Tests\Command; use OCA\Files_External\Command\Applicable; use OCP\IGroupManager; use OCP\IUserManager; +use PHPUnit\Framework\MockObject\MockObject; -class ApplicableTest extends CommandTest { - private function getInstance($storageService) { - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */ +class ApplicableTest extends CommandTestCase { + private function getInstance($storageService): Applicable { + /** @var IUserManager&MockObject $userManager */ $userManager = $this->createMock(IUserManager::class); - /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject $groupManager */ + /** @var IGroupManager&MockObject $groupManager */ $groupManager = $this->createMock(IGroupManager::class); $userManager->expects($this->any()) diff --git a/apps/files_external/tests/Command/CommandTest.php b/apps/files_external/tests/Command/CommandTestCase.php index ed991fd784d..47985b687cd 100644 --- a/apps/files_external/tests/Command/CommandTest.php +++ b/apps/files_external/tests/Command/CommandTestCase.php @@ -9,21 +9,20 @@ namespace OCA\Files_External\Tests\Command; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\Input; use Symfony\Component\Console\Output\BufferedOutput; use Test\TestCase; -abstract class CommandTest extends TestCase { +abstract class CommandTestCase extends TestCase { /** * @param StorageConfig[] $mounts - * @return GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject + * @return GlobalStoragesService&MockObject */ protected function getGlobalStorageService(array $mounts = []) { - $mock = $this->getMockBuilder('OCA\Files_External\Service\GlobalStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $mock = $this->createMock(GlobalStoragesService::class); $this->bindMounts($mock, $mounts); @@ -31,10 +30,10 @@ abstract class CommandTest extends TestCase { } /** - * @param \PHPUnit\Framework\MockObject\MockObject $mock + * @param MockObject $mock * @param StorageConfig[] $mounts */ - protected function bindMounts(\PHPUnit\Framework\MockObject\MockObject $mock, array $mounts) { + protected function bindMounts(MockObject $mock, array $mounts) { $mock->expects($this->any()) ->method('getStorage') ->willReturnCallback(function ($id) use ($mounts) { @@ -70,7 +69,7 @@ abstract class CommandTest extends TestCase { return $mount; } - protected function getInput(Command $command, array $arguments = [], array $options = []) { + protected function getInput(Command $command, array $arguments = [], array $options = []): ArrayInput { $input = new ArrayInput([]); $input->bind($command->getDefinition()); foreach ($arguments as $key => $value) { @@ -82,7 +81,7 @@ abstract class CommandTest extends TestCase { return $input; } - protected function executeCommand(Command $command, Input $input) { + protected function executeCommand(Command $command, Input $input): string { $output = new BufferedOutput(); $this->invokePrivate($command, 'execute', [$input, $output]); return $output->fetch(); diff --git a/apps/files_external/tests/Command/ListCommandTest.php b/apps/files_external/tests/Command/ListCommandTest.php index bd4430b4116..5b84e500e3f 100644 --- a/apps/files_external/tests/Command/ListCommandTest.php +++ b/apps/files_external/tests/Command/ListCommandTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -16,24 +18,20 @@ use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Service\UserStoragesService; use OCP\Authentication\LoginCredentials\IStore; use OCP\IL10N; -use OCP\ISession; use OCP\IUserManager; use OCP\IUserSession; -use OCP\Security\ICrypto; +use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\Console\Output\BufferedOutput; -class ListCommandTest extends CommandTest { - /** - * @return ListCommand|\PHPUnit\Framework\MockObject\MockObject - */ - private function getInstance() { - /** @var GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject $globalService */ +class ListCommandTest extends CommandTestCase { + private function getInstance(): ListCommand { + /** @var GlobalStoragesService&MockObject $globalService */ $globalService = $this->createMock(GlobalStoragesService::class); - /** @var UserStoragesService|\PHPUnit\Framework\MockObject\MockObject $userService */ + /** @var UserStoragesService&MockObject $userService */ $userService = $this->createMock(UserStoragesService::class); - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject $userManager */ + /** @var IUserManager&MockObject $userManager */ $userManager = $this->createMock(IUserManager::class); - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); return new ListCommand($globalService, $userService, $userSession, $userManager); @@ -41,8 +39,6 @@ class ListCommandTest extends CommandTest { public function testListAuthIdentifier(): void { $l10n = $this->createMock(IL10N::class); - $session = $this->createMock(ISession::class); - $crypto = $this->createMock(ICrypto::class); $instance = $this->getInstance(); $mount1 = new StorageConfig(); $mount1->setAuthMechanism(new Password($l10n)); diff --git a/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php b/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php index b3c7db9306f..b40e9461287 100644 --- a/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php +++ b/apps/files_external/tests/Config/UserPlaceholderHandlerTest.php @@ -1,9 +1,11 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\files_external\tests\Config; +namespace OCA\Files_External\Tests\Config; use OCA\Files_External\Config\UserPlaceholderHandler; use OCP\IRequest; @@ -12,25 +14,15 @@ use OCP\IUserManager; use OCP\IUserSession; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; +use PHPUnit\Framework\MockObject\MockObject; class UserPlaceholderHandlerTest extends \Test\TestCase { - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject */ - protected $user; - - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - protected $session; - - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - private $shareManager; - - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ - private $request; - - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */ - private $userManager; - - /** @var UserPlaceholderHandler */ - protected $handler; + protected IUser&MockObject $user; + protected IUserSession&MockObject $session; + protected IManager&MockObject $shareManager; + protected IRequest&MockObject $request; + protected IUserManager&MockObject $userManager; + protected UserPlaceholderHandler $handler; protected function setUp(): void { parent::setUp(); @@ -47,13 +39,13 @@ class UserPlaceholderHandlerTest extends \Test\TestCase { $this->handler = new UserPlaceholderHandler($this->session, $this->shareManager, $this->request, $this->userManager); } - protected function setUser() { + protected function setUser(): void { $this->session->expects($this->any()) ->method('getUser') ->willReturn($this->user); } - public function optionProvider() { + public static function optionProvider(): array { return [ ['/foo/bar/$user/foobar', '/foo/bar/alice/foobar'], [['/foo/bar/$user/foobar'], ['/foo/bar/alice/foobar']], @@ -64,7 +56,7 @@ class UserPlaceholderHandlerTest extends \Test\TestCase { /** * @dataProvider optionProvider */ - public function testHandle($option, $expected): void { + public function testHandle(string|array $option, string|array $expected): void { $this->setUser(); $this->assertSame($expected, $this->handler->handle($option)); } @@ -72,7 +64,7 @@ class UserPlaceholderHandlerTest extends \Test\TestCase { /** * @dataProvider optionProvider */ - public function testHandleNoUser($option): void { + public function testHandleNoUser(string|array $option): void { $this->shareManager->expects($this->once()) ->method('getShareByToken') ->willThrowException(new ShareNotFound()); diff --git a/apps/files_external/tests/Controller/AjaxControllerTest.php b/apps/files_external/tests/Controller/AjaxControllerTest.php index 005e6e9714c..b1ea7a2b1b1 100644 --- a/apps/files_external/tests/Controller/AjaxControllerTest.php +++ b/apps/files_external/tests/Controller/AjaxControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -14,32 +16,22 @@ use OCP\IL10N; use OCP\IRequest; use OCP\IUser; use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AjaxControllerTest extends TestCase { - /** @var IRequest */ - private $request; - /** @var RSA */ - private $rsa; - /** @var GlobalAuth */ - private $globalAuth; - /** @var IUserSession */ - private $userSession; - /** @var IGroupManager */ - private $groupManager; - /** @var AjaxController */ - private $ajaxController; - /** @var IL10N */ - private $l10n; + private IRequest&MockObject $request; + private RSA&MockObject $rsa; + private GlobalAuth&MockObject $globalAuth; + private IUserSession&MockObject $userSession; + private IGroupManager&MockObject $groupManager; + private IL10N&MockObject $l10n; + private AjaxController $ajaxController; protected function setUp(): void { $this->request = $this->createMock(IRequest::class); - $this->rsa = $this->getMockBuilder('\\OCA\\Files_External\\Lib\\Auth\\PublicKey\\RSA') - ->disableOriginalConstructor() - ->getMock(); - $this->globalAuth = $this->getMockBuilder('\\OCA\\Files_External\\Lib\\Auth\\Password\GlobalAuth') - ->disableOriginalConstructor() - ->getMock(); + $this->rsa = $this->createMock(RSA::class); + $this->globalAuth = $this->createMock(GlobalAuth::class); $this->userSession = $this->createMock(IUserSession::class); $this->groupManager = $this->createMock(IGroupManager::class); $this->l10n = $this->createMock(IL10N::class); diff --git a/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php b/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php index 4c318951d1b..2edc3ea3efc 100644 --- a/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php +++ b/apps/files_external/tests/Controller/GlobalStoragesControllerTest.php @@ -9,6 +9,7 @@ namespace OCA\Files_External\Tests\Controller; use OC\User\User; use OCA\Files_External\Controller\GlobalStoragesController; use OCA\Files_External\Service\BackendService; +use OCA\Files_External\Service\GlobalStoragesService; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IGroupManager; @@ -17,13 +18,11 @@ use OCP\IRequest; use OCP\IUserSession; use Psr\Log\LoggerInterface; -class GlobalStoragesControllerTest extends StoragesControllerTest { +class GlobalStoragesControllerTest extends StoragesControllerTestCase { protected function setUp(): void { parent::setUp(); - $this->service = $this->getMockBuilder('\OCA\Files_External\Service\GlobalStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $this->service = $this->createMock(GlobalStoragesService::class); $this->service->method('getVisibilityType') ->willReturn(BackendService::VISIBILITY_ADMIN); @@ -31,7 +30,7 @@ class GlobalStoragesControllerTest extends StoragesControllerTest { $this->controller = $this->createController(true); } - private function createController($allowCreateLocal = true) { + private function createController(bool $allowCreateLocal = true): GlobalStoragesController { $session = $this->createMock(IUserSession::class); $session->method('getUser') ->willReturn(new User('test', null, $this->createMock(IEventDispatcher::class))); diff --git a/apps/files_external/tests/Controller/StoragesControllerTest.php b/apps/files_external/tests/Controller/StoragesControllerTestCase.php index 0d604ff2d47..bb29904ab0d 100644 --- a/apps/files_external/tests/Controller/StoragesControllerTest.php +++ b/apps/files_external/tests/Controller/StoragesControllerTestCase.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -7,10 +9,12 @@ namespace OCA\Files_External\Tests\Controller; use OCA\Files_External\Controller\GlobalStoragesController; +use OCA\Files_External\Controller\UserStoragesController; use OCA\Files_External\Lib\Auth\AuthMechanism; +use OCA\Files_External\Lib\Auth\NullMechanism; use OCA\Files_External\Lib\Backend\Backend; +use OCA\Files_External\Lib\Backend\SMB; use OCA\Files_External\Lib\StorageConfig; - use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; @@ -18,33 +22,25 @@ use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use PHPUnit\Framework\MockObject\MockObject; -abstract class StoragesControllerTest extends \Test\TestCase { - - /** - * @var GlobalStoragesController - */ - protected $controller; - - /** - * @var GlobalStoragesService|UserStoragesService|MockObject - */ - protected $service; +abstract class StoragesControllerTestCase extends \Test\TestCase { + protected GlobalStoragesController|UserStoragesController $controller; + protected GlobalStoragesService|UserStoragesService|MockObject $service; protected function setUp(): void { + parent::setUp(); MountConfig::$skipTest = true; } protected function tearDown(): void { MountConfig::$skipTest = false; + parent::tearDown(); } /** - * @return \OCA\Files_External\Lib\Backend\Backend|MockObject + * @return \OCA\Files_External\Lib\Backend\Backend&MockObject */ - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getBackendMock($class = SMB::class, $storageClass = \OCA\Files_External\Lib\Storage\SMB::class) { + $backend = $this->createMock(Backend::class); $backend->method('getStorageClass') ->willReturn($storageClass); $backend->method('getIdentifier') @@ -57,10 +53,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { /** * @return AuthMechanism|MockObject */ - protected function getAuthMechMock($scheme = 'null', $class = '\OCA\Files_External\Lib\Auth\NullMechanism') { - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getAuthMechMock($scheme = 'null', $class = NullMechanism::class) { + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getScheme') ->willReturn($scheme); $authMech->method('getIdentifier') @@ -98,8 +92,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -130,7 +124,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', 'local', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -170,8 +164,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -184,7 +178,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals($storageConfig->jsonSerialize(), $data); } - public function mountPointNamesProvider() { + public static function mountPointNamesProvider(): array { return [ [''], ['/'], @@ -212,8 +206,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( $mountPoint, - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -226,8 +220,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 1, $mountPoint, - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -250,7 +244,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', '\OC\Files\Storage\InvalidStorage', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -264,7 +258,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { 1, 'mount', '\OC\Files\Storage\InvalidStorage', - '\OCA\Files_External\Lib\Auth\NullMechanism', + NullMechanism::class, [], [], [], @@ -303,8 +297,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->update( 255, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], @@ -354,7 +348,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { $this->assertEquals($expected, $response->getData()); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, true, true], [false, true, false], @@ -366,7 +360,7 @@ abstract class StoragesControllerTest extends \Test\TestCase { /** * @dataProvider validateStorageProvider */ - public function testValidateStorage($backendValidate, $authMechValidate, $expectSuccess): void { + public function testValidateStorage(bool $backendValidate, bool $authMechValidate, bool $expectSuccess): void { $backend = $this->getBackendMock(); $backend->method('validateStorage') ->willReturn($backendValidate); @@ -401,8 +395,8 @@ abstract class StoragesControllerTest extends \Test\TestCase { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', - '\OCA\Files_External\Lib\Auth\NullMechanism', + \OCA\Files_External\Lib\Storage\SMB::class, + NullMechanism::class, [], [], [], diff --git a/apps/files_external/tests/Controller/UserStoragesControllerTest.php b/apps/files_external/tests/Controller/UserStoragesControllerTest.php index c15ded48ea7..3e8d89ec060 100644 --- a/apps/files_external/tests/Controller/UserStoragesControllerTest.php +++ b/apps/files_external/tests/Controller/UserStoragesControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,8 +10,10 @@ namespace OCA\Files_External\Tests\Controller; use OC\User\User; use OCA\Files_External\Controller\UserStoragesController; +use OCA\Files_External\Lib\Storage\SMB; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Service\BackendService; +use OCA\Files_External\Service\UserStoragesService; use OCP\AppFramework\Http; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; @@ -19,18 +23,16 @@ use OCP\IRequest; use OCP\IUserSession; use Psr\Log\LoggerInterface; -class UserStoragesControllerTest extends StoragesControllerTest { +class UserStoragesControllerTest extends StoragesControllerTestCase { /** * @var array */ - private $oldAllowedBackends; + private array $oldAllowedBackends; protected function setUp(): void { parent::setUp(); - $this->service = $this->getMockBuilder('\OCA\Files_External\Service\UserStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $this->service = $this->createMock(UserStoragesService::class); $this->service->method('getVisibilityType') ->willReturn(BackendService::VISIBILITY_PERSONAL); @@ -38,7 +40,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $this->controller = $this->createController(true); } - private function createController($allowCreateLocal = true) { + private function createController(bool $allowCreateLocal = true) { $session = $this->createMock(IUserSession::class); $session->method('getUser') ->willReturn(new User('test', null, $this->createMock(IEventDispatcher::class))); @@ -88,7 +90,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->create( 'mount', - '\OCA\Files_External\Lib\Storage\SMB', + SMB::class, '\Auth\Mechanism', [], [], @@ -102,7 +104,7 @@ class UserStoragesControllerTest extends StoragesControllerTest { $response = $this->controller->update( 1, 'mount', - '\OCA\Files_External\Lib\Storage\SMB', + SMB::class, '\Auth\Mechanism', [], [], diff --git a/apps/files_external/tests/DefinitionParameterTest.php b/apps/files_external/tests/DefinitionParameterTest.php index 3fc65eaf897..f39ba90c871 100644 --- a/apps/files_external/tests/DefinitionParameterTest.php +++ b/apps/files_external/tests/DefinitionParameterTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -48,7 +50,7 @@ class DefinitionParameterTest extends \Test\TestCase { ], $param->jsonSerialize()); } - public function validateValueProvider() { + public static function validateValueProvider(): array { return [ [Param::VALUE_TEXT, Param::FLAG_NONE, 'abc', true], [Param::VALUE_TEXT, Param::FLAG_NONE, '', false], diff --git a/apps/files_external/tests/FrontendDefinitionTraitTest.php b/apps/files_external/tests/FrontendDefinitionTraitTest.php index bc5d88ff3f0..a01b772bded 100644 --- a/apps/files_external/tests/FrontendDefinitionTraitTest.php +++ b/apps/files_external/tests/FrontendDefinitionTraitTest.php @@ -16,7 +16,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->getMock(); $param->method('getName')->willReturn('foo'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(\OCA\Files_External\Lib\FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameters([$param]); $trait->addCustomJs('foo/bar.js'); @@ -32,7 +32,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $this->assertArrayHasKey('foo', $configuration); } - public function validateStorageProvider() { + public static function validateStorageProvider(): array { return [ [true, ['foo' => true, 'bar' => true, 'baz' => true]], [false, ['foo' => true, 'bar' => false]] @@ -42,7 +42,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { /** * @dataProvider validateStorageProvider */ - public function testValidateStorage($expectedSuccess, $params): void { + public function testValidateStorage(bool $expectedSuccess, array $params): void { $backendParams = []; foreach ($params as $name => $valid) { $param = $this->getMockBuilder(DefinitionParameter::class) @@ -67,7 +67,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { $storageConfig->expects($this->any()) ->method('setBackendOption'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(\OCA\Files_External\Lib\FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameters($backendParams); @@ -98,7 +98,7 @@ class FrontendDefinitionTraitTest extends \Test\TestCase { ->method('setBackendOption') ->with('param', 'foobar'); - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); + $trait = $this->getMockForTrait(\OCA\Files_External\Lib\FrontendDefinitionTrait::class); $trait->setText('test'); $trait->addParameter($param); diff --git a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php index 5fcfe1dd1e6..b6a351d44c0 100644 --- a/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php +++ b/apps/files_external/tests/LegacyDependencyCheckPolyfillTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -13,7 +15,7 @@ class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { /** * @return MissingDependency[] */ - public static function checkDependencies() { + public static function checkDependencies(): array { return [ (new MissingDependency('dependency'))->setMessage('missing dependency'), (new MissingDependency('program'))->setMessage('cannot find program'), @@ -21,10 +23,10 @@ class LegacyDependencyCheckPolyfillTest extends \Test\TestCase { } public function testCheckDependencies(): void { - $trait = $this->getMockForTrait('\OCA\Files_External\Lib\LegacyDependencyCheckPolyfill'); + $trait = $this->getMockForTrait(\OCA\Files_External\Lib\LegacyDependencyCheckPolyfill::class); $trait->expects($this->once()) ->method('getStorageClass') - ->willReturn('\OCA\Files_External\Tests\LegacyDependencyCheckPolyfillTest'); + ->willReturn(self::class); $dependencies = $trait->checkDependencies(); $this->assertCount(2, $dependencies); diff --git a/apps/files_external/tests/Listener/StorePasswordListenerTest.php b/apps/files_external/tests/Listener/StorePasswordListenerTest.php index ec278f84331..04635b7dafd 100644 --- a/apps/files_external/tests/Listener/StorePasswordListenerTest.php +++ b/apps/files_external/tests/Listener/StorePasswordListenerTest.php @@ -22,15 +22,12 @@ use Test\TestCase; * @group DB */ class StorePasswordListenerTest extends TestCase { - /** @var MockObject|IUser */ - protected $mockedUser; + protected IUser&MockObject $mockedUser; protected function setUp(): void { parent::setUp(); $this->mockedUser = $this->createMock(IUser::class); - $this->mockedUser - ->expects($this->any()) - ->method('getUID') + $this->mockedUser->method('getUID') ->willReturn('test'); } diff --git a/apps/files_external/tests/OwnCloudFunctionsTest.php b/apps/files_external/tests/OwnCloudFunctionsTest.php index 3488195d3e8..2890cad3ac1 100644 --- a/apps/files_external/tests/OwnCloudFunctionsTest.php +++ b/apps/files_external/tests/OwnCloudFunctionsTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -16,7 +18,7 @@ use OCA\Files_External\Lib\Storage\OwnCloud; * @package OCA\Files_External\Tests */ class OwnCloudFunctionsTest extends \Test\TestCase { - public function configUrlProvider() { + public static function configUrlProvider(): array { return [ [ [ @@ -88,7 +90,7 @@ class OwnCloudFunctionsTest extends \Test\TestCase { /** * @dataProvider configUrlProvider */ - public function testConfig($config, $expectedUri): void { + public function testConfig(array $config, string $expectedUri): void { $config['user'] = 'someuser'; $config['password'] = 'somepassword'; $instance = new OwnCloud($config); diff --git a/apps/files_external/tests/PersonalMountTest.php b/apps/files_external/tests/PersonalMountTest.php index b268d3b5142..618048c3335 100644 --- a/apps/files_external/tests/PersonalMountTest.php +++ b/apps/files_external/tests/PersonalMountTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,6 +10,7 @@ namespace OCA\Files_External\Tests; use OC\Files\Mount\Manager; use OC\Files\SetupManagerFactory; +use OC\Files\Storage\Storage; use OCA\Files_External\Lib\PersonalMount; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\Service\UserStoragesService; @@ -17,13 +20,9 @@ class PersonalMountTest extends TestCase { public function testFindByStorageId(): void { $storageConfig = $this->createMock(StorageConfig::class); /** @var UserStoragesService $storageService */ - $storageService = $this->getMockBuilder('\OCA\Files_External\Service\UserStoragesService') - ->disableOriginalConstructor() - ->getMock(); + $storageService = $this->createMock(UserStoragesService::class); - $storage = $this->getMockBuilder('\OC\Files\Storage\Storage') - ->disableOriginalConstructor() - ->getMock(); + $storage = $this->createMock(Storage::class); $storage->expects($this->any()) ->method('getId') diff --git a/apps/files_external/tests/Service/BackendServiceTest.php b/apps/files_external/tests/Service/BackendServiceTest.php index c3a77d81b67..1feefbc2b25 100644 --- a/apps/files_external/tests/Service/BackendServiceTest.php +++ b/apps/files_external/tests/Service/BackendServiceTest.php @@ -13,25 +13,20 @@ use OCA\Files_External\Lib\Config\IAuthMechanismProvider; use OCA\Files_External\Lib\Config\IBackendProvider; use OCA\Files_External\Service\BackendService; use OCP\IAppConfig; +use PHPUnit\Framework\MockObject\MockObject; class BackendServiceTest extends \Test\TestCase { - - /** @var IAppConfig|\PHPUnit\Framework\MockObject\MockObject */ - protected $appConfig; + protected IAppConfig&MockObject $appConfig; protected function setUp(): void { $this->appConfig = $this->createMock(IAppConfig::class); } /** - * @param string $class - * - * @return \OCA\Files_External\Lib\Backend\Backend|\PHPUnit\Framework\MockObject\MockObject + * @return \OCA\Files_External\Lib\Backend\Backend&MockObject */ - protected function getBackendMock($class) { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getBackendMock(string $class) { + $backend = $this->createMock(Backend::class); $backend->method('getIdentifier')->willReturn('identifier:' . $class); $backend->method('getIdentifierAliases')->willReturn(['identifier:' . $class]); return $backend; @@ -40,12 +35,10 @@ class BackendServiceTest extends \Test\TestCase { /** * @param string $class * - * @return AuthMechanism|\PHPUnit\Framework\MockObject\MockObject + * @return AuthMechanism&MockObject */ protected function getAuthMechanismMock($class) { - $backend = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + $backend = $this->createMock(AuthMechanism::class); $backend->method('getIdentifier')->willReturn('identifier:' . $class); $backend->method('getIdentifierAliases')->willReturn(['identifier:' . $class]); return $backend; @@ -56,10 +49,8 @@ class BackendServiceTest extends \Test\TestCase { $backend = $this->getBackendMock('\Foo\Bar'); - /** @var \OCA\Files_External\Lib\Backend\Backend|\PHPUnit\Framework\MockObject\MockObject $backendAlias */ - $backendAlias = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + /** @var \OCA\Files_External\Lib\Backend\Backend&MockObject $backendAlias */ + $backendAlias = $this->createMock(Backend::class); $backendAlias->method('getIdentifierAliases') ->willReturn(['identifier_real', 'identifier_alias']); $backendAlias->method('getIdentifier') @@ -85,7 +76,7 @@ class BackendServiceTest extends \Test\TestCase { $backend1 = $this->getBackendMock('\Foo\Bar'); $backend2 = $this->getBackendMock('\Bar\Foo'); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $providerMock */ + /** @var IBackendProvider&MockObject $providerMock */ $providerMock = $this->createMock(IBackendProvider::class); $providerMock->expects($this->once()) ->method('getBackends') @@ -104,7 +95,7 @@ class BackendServiceTest extends \Test\TestCase { $backend1 = $this->getAuthMechanismMock('\Foo\Bar'); $backend2 = $this->getAuthMechanismMock('\Bar\Foo'); - /** @var IAuthMechanismProvider|\PHPUnit\Framework\MockObject\MockObject $providerMock */ + /** @var IAuthMechanismProvider&MockObject $providerMock */ $providerMock = $this->createMock(IAuthMechanismProvider::class); $providerMock->expects($this->once()) ->method('getAuthMechanisms') @@ -125,13 +116,13 @@ class BackendServiceTest extends \Test\TestCase { $backend2 = $this->getBackendMock('\Dead\Beef'); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $provider1Mock */ + /** @var IBackendProvider&MockObject $provider1Mock */ $provider1Mock = $this->createMock(IBackendProvider::class); $provider1Mock->expects($this->once()) ->method('getBackends') ->willReturn([$backend1a, $backend1b]); $service->registerBackendProvider($provider1Mock); - /** @var IBackendProvider|\PHPUnit\Framework\MockObject\MockObject $provider2Mock */ + /** @var IBackendProvider&MockObject $provider2Mock */ $provider2Mock = $this->createMock(IBackendProvider::class); $provider2Mock->expects($this->once()) ->method('getBackends') @@ -202,7 +193,7 @@ class BackendServiceTest extends \Test\TestCase { $this->assertArrayNotHasKey('identifier:\Backend\NotAvailable', $availableBackends); } - public function invalidConfigPlaceholderProvider() { + public static function invalidConfigPlaceholderProvider(): array { return [ [['@user']], [['$user']], diff --git a/apps/files_external/tests/Service/DBConfigServiceTest.php b/apps/files_external/tests/Service/DBConfigServiceTest.php index 51051d6c9f2..85d8b70fda7 100644 --- a/apps/files_external/tests/Service/DBConfigServiceTest.php +++ b/apps/files_external/tests/Service/DBConfigServiceTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -16,17 +18,10 @@ use Test\TestCase; * @group DB */ class DBConfigServiceTest extends TestCase { - /** - * @var DBConfigService - */ - private $dbConfig; - - /** - * @var IDBConnection - */ - private $connection; + private IDBConnection $connection; + private DBConfigService $dbConfig; - private $mounts = []; + private array $mounts = []; protected function setUp(): void { parent::setUp(); @@ -39,9 +34,10 @@ class DBConfigServiceTest extends TestCase { $this->dbConfig->removeMount($mount); } $this->mounts = []; + parent::tearDown(); } - private function addMount($mountPoint, $storageBackend, $authBackend, $priority, $type) { + private function addMount(string $mountPoint, string $storageBackend, string $authBackend, int $priority, int $type) { $id = $this->dbConfig->addMount($mountPoint, $storageBackend, $authBackend, $priority, $type); $this->mounts[] = $id; return $id; @@ -74,7 +70,7 @@ class DBConfigServiceTest extends TestCase { $this->dbConfig->addApplicable($id, DBConfigService::APPLICABLE_TYPE_GLOBAL, null); $mount = $this->dbConfig->getMountById($id); - $this->assertEquals([ + $this->assertEqualsCanonicalizing([ ['type' => DBConfigService::APPLICABLE_TYPE_USER, 'value' => 'test', 'mount_id' => $id], ['type' => DBConfigService::APPLICABLE_TYPE_GROUP, 'value' => 'bar', 'mount_id' => $id], ['type' => DBConfigService::APPLICABLE_TYPE_GLOBAL, 'value' => null, 'mount_id' => $id] diff --git a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php index b4907f7f00f..47be54a02d4 100644 --- a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -14,7 +16,7 @@ use OCA\Files_External\Service\GlobalStoragesService; /** * @group DB */ -class GlobalStoragesServiceTest extends StoragesServiceTest { +class GlobalStoragesServiceTest extends StoragesServiceTestCase { protected function setUp(): void { parent::setUp(); $this->service = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache, $this->eventDispatcher); @@ -44,7 +46,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { ]); } - public function storageDataProvider() { + public static function storageDataProvider(): array { return [ // all users [ @@ -166,13 +168,13 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { $this->assertEquals($updatedStorage->getMountPoint(), $newStorage->getMountPoint()); $this->assertEquals($updatedStorage->getBackendOptions()['password'], $newStorage->getBackendOptions()['password']); - $this->assertEquals($updatedStorage->getApplicableUsers(), $newStorage->getApplicableUsers()); + $this->assertEqualsCanonicalizing($updatedStorage->getApplicableUsers(), $newStorage->getApplicableUsers()); $this->assertEquals($updatedStorage->getApplicableGroups(), $newStorage->getApplicableGroups()); $this->assertEquals($updatedStorage->getPriority(), $newStorage->getPriority()); $this->assertEquals(0, $newStorage->getStatus()); } - public function hooksAddStorageDataProvider() { + public static function hooksAddStorageDataProvider(): array { return [ // applicable all [ @@ -301,7 +303,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { } } - public function hooksUpdateStorageDataProvider() { + public static function hooksUpdateStorageDataProvider(): array { return [ [ // nothing to multiple users and groups @@ -421,11 +423,12 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { * @dataProvider hooksUpdateStorageDataProvider */ public function testHooksUpdateStorage( - $sourceApplicableUsers, - $sourceApplicableGroups, - $updatedApplicableUsers, - $updatedApplicableGroups, - $expectedCalls): void { + array $sourceApplicableUsers, + array $sourceApplicableGroups, + array $updatedApplicableUsers, + array $updatedApplicableGroups, + array $expectedCalls, + ): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers($sourceApplicableUsers); $storage->setApplicableGroups($sourceApplicableGroups); @@ -532,7 +535,7 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { } } - public function hooksDeleteStorageDataProvider() { + public static function hooksDeleteStorageDataProvider(): array { return [ [ ['user1', 'user2'], @@ -580,9 +583,10 @@ class GlobalStoragesServiceTest extends StoragesServiceTest { * @dataProvider hooksDeleteStorageDataProvider */ public function testHooksDeleteStorage( - $sourceApplicableUsers, - $sourceApplicableGroups, - $expectedCalls): void { + array $sourceApplicableUsers, + array $sourceApplicableGroups, + array $expectedCalls, + ): void { $storage = $this->makeTestStorageData(); $storage->setApplicableUsers($sourceApplicableUsers); $storage->setApplicableGroups($sourceApplicableGroups); diff --git a/apps/files_external/tests/Service/StoragesServiceTest.php b/apps/files_external/tests/Service/StoragesServiceTestCase.php index 8d24b98d6af..a5cffd45ec2 100644 --- a/apps/files_external/tests/Service/StoragesServiceTest.php +++ b/apps/files_external/tests/Service/StoragesServiceTestCase.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -10,9 +12,10 @@ use OC\Files\Cache\Storage; use OC\Files\Filesystem; use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Auth\InvalidAuth; +use OCA\Files_External\Lib\Auth\NullMechanism; use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\Backend\InvalidBackend; - +use OCA\Files_External\Lib\Backend\SMB; use OCA\Files_External\Lib\StorageConfig; use OCA\Files_External\MountConfig; use OCA\Files_External\NotFoundException; @@ -31,9 +34,10 @@ use OCP\IUser; use OCP\Security\ICrypto; use OCP\Server; use OCP\Util; +use PHPUnit\Framework\MockObject\MockObject; class CleaningDBConfig extends DBConfigService { - private $mountIds = []; + private array $mountIds = []; public function addMount($mountPoint, $storageBackend, $authBackend, $priority, $type) { $id = parent::addMount($mountPoint, $storageBackend, $authBackend, $priority, $type); // TODO: Change the autogenerated stub @@ -51,41 +55,14 @@ class CleaningDBConfig extends DBConfigService { /** * @group DB */ -abstract class StoragesServiceTest extends \Test\TestCase { - /** - * @var StoragesService - */ - protected $service; - - /** @var BackendService */ - protected $backendService; - - /** - * Data directory - * - * @var string - */ - protected $dataDir; - - /** @var CleaningDBConfig */ - protected $dbConfig; - - /** - * Hook calls - * - * @var array - */ - protected static $hookCalls; - - /** - * @var \PHPUnit\Framework\MockObject\MockObject|IUserMountCache - */ - protected $mountCache; - - /** - * @var \PHPUnit\Framework\MockObject\MockObject|IEventDispatcher - */ - protected IEventDispatcher $eventDispatcher; +abstract class StoragesServiceTestCase extends \Test\TestCase { + protected StoragesService $service; + protected BackendService $backendService; + protected string $dataDir; + protected CleaningDBConfig $dbConfig; + protected static array $hookCalls; + protected IUserMountCache&MockObject $mountCache; + protected IEventDispatcher&MockObject $eventDispatcher; protected function setUp(): void { parent::setUp(); @@ -102,10 +79,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->eventDispatcher = $this->createMock(IEventDispatcher::class); // prepare BackendService mock - $this->backendService = - $this->getMockBuilder('\OCA\Files_External\Service\BackendService') - ->disableOriginalConstructor() - ->getMock(); + $this->backendService = $this->createMock(BackendService::class); $authMechanisms = [ 'identifier:\Auth\Mechanism' => $this->getAuthMechMock('null', '\Auth\Mechanism'), @@ -172,12 +146,11 @@ abstract class StoragesServiceTest extends \Test\TestCase { if ($this->dbConfig) { $this->dbConfig->clean(); } + parent::tearDown(); } - protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OCA\Files_External\Lib\Storage\SMB') { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getBackendMock($class = SMB::class, $storageClass = \OCA\Files_External\Lib\Storage\SMB::class) { + $backend = $this->createMock(Backend::class); $backend->method('getStorageClass') ->willReturn($storageClass); $backend->method('getIdentifier') @@ -185,10 +158,8 @@ abstract class StoragesServiceTest extends \Test\TestCase { return $backend; } - protected function getAuthMechMock($scheme = 'null', $class = '\OCA\Files_External\Lib\Auth\NullMechanism') { - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + protected function getAuthMechMock($scheme = 'null', $class = NullMechanism::class) { + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getScheme') ->willReturn($scheme); $authMech->method('getIdentifier') @@ -199,12 +170,8 @@ abstract class StoragesServiceTest extends \Test\TestCase { /** * Creates a StorageConfig instance based on array data - * - * @param array $data - * - * @return StorageConfig storage config instance */ - protected function makeStorageConfig($data) { + protected function makeStorageConfig(array $data): StorageConfig { $storage = new StorageConfig(); if (isset($data['id'])) { $storage->setId($data['id']); @@ -259,7 +226,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->ActualNonExistingStorageTest(); } - public function deleteStorageDataProvider() { + public static function deleteStorageDataProvider(): array { return [ // regular case, can properly delete the oc_storages entry [ @@ -286,7 +253,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { /** * @dataProvider deleteStorageDataProvider */ - public function testDeleteStorage($backendOptions, $rustyStorageId): void { + public function testDeleteStorage(array $backendOptions, string $rustyStorageId): void { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\DAV'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); $storage = new StorageConfig(255); @@ -463,14 +430,14 @@ abstract class StoragesServiceTest extends \Test\TestCase { $this->assertEmpty($this->service->getStorages()); } - public static function createHookCallback($params) { + public static function createHookCallback($params): void { self::$hookCalls[] = [ 'signal' => Filesystem::signal_create_mount, 'params' => $params ]; } - public static function deleteHookCallback($params) { + public static function deleteHookCallback($params): void { self::$hookCalls[] = [ 'signal' => Filesystem::signal_delete_mount, 'params' => $params diff --git a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php index e3c5cd486e9..1ec4e56bd9e 100644 --- a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php @@ -16,6 +16,7 @@ use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; use OCP\Server; +use PHPUnit\Framework\MockObject\MockObject; use Test\Traits\UserTrait; /** @@ -24,20 +25,9 @@ use Test\Traits\UserTrait; class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { use UserTrait; - /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject groupManager */ - protected $groupManager; - - /** - * @var StoragesService - */ - protected $globalStoragesService; - - /** - * @var UserGlobalStoragesService - */ - protected $service; - - protected $user; + protected IGroupManager&MockObject $groupManager; + protected StoragesService $globalStoragesService; + protected User $user; public const USER_ID = 'test_user'; public const GROUP_ID = 'test_group'; @@ -49,7 +39,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { $this->globalStoragesService = $this->service; $this->user = new User(self::USER_ID, null, Server::get(IEventDispatcher::class)); - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); $userSession ->expects($this->any()) @@ -87,7 +77,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { ); } - public function applicableStorageProvider() { + public static function applicableStorageProvider(): array { return [ [[], [], true], @@ -211,7 +201,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { $this->actualDeletedUnexistingStorageTest(); } - public function getUniqueStoragesProvider() { + public static function getUniqueStoragesProvider(): array { return [ // 'all' vs group [100, [], [], 100, [], [self::GROUP_ID], 2], diff --git a/apps/files_external/tests/Service/UserStoragesServiceTest.php b/apps/files_external/tests/Service/UserStoragesServiceTest.php index a7b9f200417..53d7f5960e8 100644 --- a/apps/files_external/tests/Service/UserStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserStoragesServiceTest.php @@ -17,22 +17,19 @@ use OCA\Files_External\Service\UserStoragesService; use OCP\IUserManager; use OCP\IUserSession; use OCP\Server; +use PHPUnit\Framework\MockObject\MockObject; use Test\Traits\UserTrait; /** * @group DB */ -class UserStoragesServiceTest extends StoragesServiceTest { +class UserStoragesServiceTest extends StoragesServiceTestCase { use UserTrait; - private $user; + protected \OC\User\User $user; - private $userId; - - /** - * @var StoragesService - */ - protected $globalStoragesService; + protected string $userId; + protected StoragesService $globalStoragesService; protected function setUp(): void { parent::setUp(); @@ -43,7 +40,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { $this->createUser($this->userId, $this->userId); $this->user = Server::get(IUserManager::class)->get($this->userId); - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject $userSession */ + /** @var IUserSession&MockObject $userSession */ $userSession = $this->createMock(IUserSession::class); $userSession ->expects($this->any()) diff --git a/apps/files_external/tests/Settings/AdminTest.php b/apps/files_external/tests/Settings/AdminTest.php index aceb8d2e915..fd4a1949760 100644 --- a/apps/files_external/tests/Settings/AdminTest.php +++ b/apps/files_external/tests/Settings/AdminTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -12,19 +14,15 @@ use OCA\Files_External\Service\GlobalStoragesService; use OCA\Files_External\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; use OCP\Encryption\IManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AdminTest extends TestCase { - /** @var Admin */ - private $admin; - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ - private $encryptionManager; - /** @var GlobalStoragesService|\PHPUnit\Framework\MockObject\MockObject */ - private $globalStoragesService; - /** @var BackendService|\PHPUnit\Framework\MockObject\MockObject */ - private $backendService; - /** @var GlobalAuth|\PHPUnit\Framework\MockObject\MockObject */ - private $globalAuth; + private IManager&MockObject $encryptionManager; + private GlobalStoragesService&MockObject $globalStoragesService; + private BackendService&MockObject $backendService; + private GlobalAuth&MockObject $globalAuth; + private Admin $admin; protected function setUp(): void { parent::setUp(); diff --git a/apps/files_external/tests/Settings/SectionTest.php b/apps/files_external/tests/Settings/SectionTest.php index 9154106ff8a..c64849ff7ba 100644 --- a/apps/files_external/tests/Settings/SectionTest.php +++ b/apps/files_external/tests/Settings/SectionTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -8,20 +10,18 @@ namespace OCA\Files_External\Tests\Settings; use OCA\Files_External\Settings\Section; use OCP\IL10N; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SectionTest extends TestCase { - /** @var IL10N */ - private $l; - /** @var IURLGenerator */ - private $urlGenerator; - /** @var Section */ - private $section; + private IL10N&MockObject $l; + private IURLGenerator&MockObject $urlGenerator; + private Section $section; protected function setUp(): void { parent::setUp(); - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->disableOriginalConstructor()->getMock(); - $this->l = $this->getMockBuilder(IL10N::class)->disableOriginalConstructor()->getMock(); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->l = $this->createMock(IL10N::class); $this->section = new Section( $this->urlGenerator, diff --git a/apps/files_external/tests/Storage/Amazons3MultiPartTest.php b/apps/files_external/tests/Storage/Amazons3MultiPartTest.php index 1ac18406d24..aa3925899f3 100644 --- a/apps/files_external/tests/Storage/Amazons3MultiPartTest.php +++ b/apps/files_external/tests/Storage/Amazons3MultiPartTest.php @@ -1,9 +1,11 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ -namespace OCA\files_external\tests\Storage; +namespace OCA\Files_External\Tests\Storage; use OCA\Files_External\Lib\Storage\AmazonS3; @@ -11,6 +13,7 @@ use OCA\Files_External\Lib\Storage\AmazonS3; * Class Amazons3Test * * @group DB + * @group S3 * * @package OCA\Files_External\Tests\Storage */ @@ -23,7 +26,7 @@ class Amazons3MultiPartTest extends \Test\Files\Storage\Storage { parent::setUp(); $this->config = include('files_external/tests/config.amazons3.php'); - if (! is_array($this->config) or ! $this->config['run']) { + if (!is_array($this->config) || !$this->config['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->instance = new AmazonS3($this->config + [ @@ -43,8 +46,4 @@ class Amazons3MultiPartTest extends \Test\Files\Storage\Storage { public function testStat(): void { $this->markTestSkipped('S3 doesn\'t update the parents folder mtime'); } - - public function testHashInFileName(): void { - $this->markTestSkipped('Localstack has a bug with hashes in filename'); - } } diff --git a/apps/files_external/tests/Storage/Amazons3Test.php b/apps/files_external/tests/Storage/Amazons3Test.php index fd7fd9225c9..d02dec0230c 100644 --- a/apps/files_external/tests/Storage/Amazons3Test.php +++ b/apps/files_external/tests/Storage/Amazons3Test.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -12,11 +14,12 @@ use OCA\Files_External\Lib\Storage\AmazonS3; * Class Amazons3Test * * @group DB + * @group S3 * * @package OCA\Files_External\Tests\Storage */ class Amazons3Test extends \Test\Files\Storage\Storage { - private $config; + protected $config; /** @var AmazonS3 */ protected $instance; @@ -24,7 +27,7 @@ class Amazons3Test extends \Test\Files\Storage\Storage { parent::setUp(); $this->config = include('files_external/tests/config.amazons3.php'); - if (! is_array($this->config) or ! $this->config['run']) { + if (!is_array($this->config) || !$this->config['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); } $this->instance = new AmazonS3($this->config); @@ -41,8 +44,4 @@ class Amazons3Test extends \Test\Files\Storage\Storage { public function testStat(): void { $this->markTestSkipped('S3 doesn\'t update the parents folder mtime'); } - - public function testHashInFileName(): void { - $this->markTestSkipped('Localstack has a bug with hashes in filename'); - } } diff --git a/apps/files_external/tests/Storage/FtpTest.php b/apps/files_external/tests/Storage/FtpTest.php index 81b92e0fae9..095a5236049 100644 --- a/apps/files_external/tests/Storage/FtpTest.php +++ b/apps/files_external/tests/Storage/FtpTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. diff --git a/apps/files_external/tests/Storage/OwncloudTest.php b/apps/files_external/tests/Storage/OwncloudTest.php index 28041a665f8..ab6cd443dba 100644 --- a/apps/files_external/tests/Storage/OwncloudTest.php +++ b/apps/files_external/tests/Storage/OwncloudTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. diff --git a/apps/files_external/tests/Storage/SFTP_KeyTest.php b/apps/files_external/tests/Storage/SFTP_KeyTest.php index 9be3cb7d3e8..17e2087f91b 100644 --- a/apps/files_external/tests/Storage/SFTP_KeyTest.php +++ b/apps/files_external/tests/Storage/SFTP_KeyTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -40,7 +42,7 @@ class SFTP_KeyTest extends \Test\Files\Storage\Storage { parent::tearDown(); } - + public function testInvalidAddressShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); @@ -52,24 +54,24 @@ class SFTP_KeyTest extends \Test\Files\Storage\Storage { $this->assertTrue($this->instance->assertHostAddressValid('localhost')); } - + public function testNegativePortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); $this->instance->assertPortNumberValid('-1'); } - + public function testNonNumericalPortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); $this->instance->assertPortNumberValid('a'); } - + public function testHighPortNumberShouldThrowException(): void { $this->expectException(\InvalidArgumentException::class); - + $this->instance->assertPortNumberValid('65536'); } diff --git a/apps/files_external/tests/Storage/SftpTest.php b/apps/files_external/tests/Storage/SftpTest.php index cc29486f426..082f0d7c502 100644 --- a/apps/files_external/tests/Storage/SftpTest.php +++ b/apps/files_external/tests/Storage/SftpTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -52,7 +54,7 @@ class SftpTest extends \Test\Files\Storage\Storage { $this->assertEquals($expectedStorageId, $instance->getId()); } - public function configProvider() { + public static function configProvider(): array { return [ [ // no root path diff --git a/apps/files_external/tests/Storage/SmbTest.php b/apps/files_external/tests/Storage/SmbTest.php index 51737d05dc6..afcb5c1034f 100644 --- a/apps/files_external/tests/Storage/SmbTest.php +++ b/apps/files_external/tests/Storage/SmbTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. diff --git a/apps/files_external/tests/Storage/SwiftTest.php b/apps/files_external/tests/Storage/SwiftTest.php index c21c8c6f506..17037e76ee3 100644 --- a/apps/files_external/tests/Storage/SwiftTest.php +++ b/apps/files_external/tests/Storage/SwiftTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. diff --git a/apps/files_external/tests/Storage/VersionedAmazonS3Test.php b/apps/files_external/tests/Storage/VersionedAmazonS3Test.php index 4d9d1e32067..9d413620292 100644 --- a/apps/files_external/tests/Storage/VersionedAmazonS3Test.php +++ b/apps/files_external/tests/Storage/VersionedAmazonS3Test.php @@ -10,6 +10,7 @@ namespace OCA\Files_External\Tests\Storage; /** * @group DB + * @group S3 */ class VersionedAmazonS3Test extends Amazons3Test { protected function setUp(): void { @@ -25,4 +26,12 @@ class VersionedAmazonS3Test extends Amazons3Test { $this->markTestSkipped("s3 backend doesn't seem to support versioning"); } } + + public function testCopyOverWriteDirectory(): void { + if (isset($this->config['minio'])) { + $this->markTestSkipped('MinIO has a bug with batch deletion on versioned storages, see https://github.com/minio/minio/issues/21366'); + } + + parent::testCopyOverWriteDirectory(); + } } diff --git a/apps/files_external/tests/Storage/WebdavTest.php b/apps/files_external/tests/Storage/WebdavTest.php index f1d3415e91e..a8de178effd 100644 --- a/apps/files_external/tests/Storage/WebdavTest.php +++ b/apps/files_external/tests/Storage/WebdavTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. diff --git a/apps/files_external/tests/StorageConfigTest.php b/apps/files_external/tests/StorageConfigTest.php index b67d69a3ce7..b3024cb228c 100644 --- a/apps/files_external/tests/StorageConfigTest.php +++ b/apps/files_external/tests/StorageConfigTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -13,12 +15,8 @@ use OCA\Files_External\Lib\StorageConfig; class StorageConfigTest extends \Test\TestCase { public function testJsonSerialization(): void { - $backend = $this->getMockBuilder(Backend::class) - ->disableOriginalConstructor() - ->getMock(); - $parameter = $this->getMockBuilder(DefinitionParameter::class) - ->disableOriginalConstructor() - ->getMock(); + $backend = $this->createMock(Backend::class); + $parameter = $this->createMock(DefinitionParameter::class); $parameter ->expects($this->once()) ->method('getType') @@ -30,9 +28,7 @@ class StorageConfigTest extends \Test\TestCase { $backend->method('getIdentifier') ->willReturn('storage::identifier'); - $authMech = $this->getMockBuilder(AuthMechanism::class) - ->disableOriginalConstructor() - ->getMock(); + $authMech = $this->createMock(AuthMechanism::class); $authMech->method('getIdentifier') ->willReturn('auth::identifier'); diff --git a/apps/files_external/tests/appSpec.js b/apps/files_external/tests/appSpec.js deleted file mode 100644 index 4d150cd36bb..00000000000 --- a/apps/files_external/tests/appSpec.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2014 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ -import $ from 'jquery' - -describe('OCA.Files_External.App tests', function() { - const App = OCA.Files_External.App - let fileList - - beforeEach(function() { - $('#testArea').append( - '<div id="app-navigation">' - + '<ul><li data-id="files"><a>Files</a></li>' - + '<li data-id="sharingin"><a></a></li>' - + '<li data-id="sharingout"><a></a></li>' - + '</ul></div>' - + '<div id="app-content">' - + '<div id="app-content-files" class="hidden">' - + '</div>' - + '<div id="app-content-extstoragemounts" class="hidden">' - + '</div>' - + '</div>' - + '</div>', - ) - fileList = App.initList($('#app-content-extstoragemounts')) - }) - afterEach(function() { - App.fileList = null - fileList.destroy() - fileList = null - }) - - describe('initialization', function() { - it('inits external mounts list on show', function() { - expect(App.fileList).toBeDefined() - }) - }) - describe('file actions', function() { - it('provides default file actions', function() { - const fileActions = fileList.fileActions - - expect(fileActions.actions.all).toBeDefined() - expect(fileActions.actions.all.Delete).toBeDefined() - expect(fileActions.actions.all.Rename).toBeDefined() - expect(fileActions.actions.all.Download).toBeDefined() - - expect(fileActions.defaults.dir).toEqual('Open') - }) - it('redirects to files app when opening a directory', function() { - const oldList = OCA.Files.App.fileList - // dummy new list to make sure it exists - OCA.Files.App.fileList = new OCA.Files.FileList($('<table><thead></thead><tbody></tbody></table>')) - - const setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView') - // create dummy table so we can click the dom - const $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>' - $('#app-content-extstoragemounts').append($table) - - App._inFileList = null - fileList = App.initList($('#app-content-extstoragemounts')) - - fileList.setFiles([{ - name: 'testdir', - type: 'dir', - path: '/somewhere/inside/subdir', - counterParts: ['user2'], - shareOwner: 'user2', - }]) - - fileList.findFileEl('testdir').find('td a.name').click() - - expect(OCA.Files.App.fileList.getCurrentDirectory()).toEqual('/somewhere/inside/subdir/testdir') - - expect(setActiveViewStub.calledOnce).toEqual(true) - expect(setActiveViewStub.calledWith('files')).toEqual(true) - - setActiveViewStub.restore() - - // restore old list - OCA.Files.App.fileList = oldList - }) - }) -}) diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js deleted file mode 100644 index fa6de978c81..00000000000 --- a/apps/files_external/tests/js/mountsfilelistSpec.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files_External.FileList tests', function() { - var testFiles, alertStub, notificationStub, fileList; - - beforeEach(function() { - alertStub = sinon.stub(OC.dialogs, 'alert'); - notificationStub = sinon.stub(OC.Notification, 'show'); - - // init parameters and test table elements - $('#testArea').append( - '<div id="app-content">' + - // init horrible parameters - '<input type="hidden" id="permissions" value="31"></input>' + - // dummy controls - '<div class="files-controls">' + - ' <div class="actions creatable"></div>' + - ' <div class="notCreatable"></div>' + - '</div>' + - // dummy table - // TODO: at some point this will be rendered by the fileList class itself! - '<table class="files-filestable">' + - '<thead><tr>' + - '<th class="hidden column-name">' + - ' <div id="column-name-container">' + - ' <a class="name sort columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - ' </div>' + - '</th>' + - '<th id="headerBackend" class="hidden column-backend">' + - ' <a class="backend sort columntitle" data-sort="backend"><span>Storage type</span><span class="sort-indicator"></span></a>' + - '</th>' + - '<th id="headerScope" class="hidden column-scope column-last">' + - ' <a class="scope sort columntitle" data-sort="scope"><span>Scope</span><span class="sort-indicator"></span></a>' + - '</th>' + - '</tr></thead>' + - '<tbody class="files-fileList"></tbody>' + - '<tfoot></tfoot>' + - '</table>' + - '<div class="emptyfilelist emptycontent">Empty content message</div>' + - '</div>' - ); - }); - afterEach(function() { - testFiles = undefined; - fileList.destroy(); - fileList = undefined; - - notificationStub.restore(); - alertStub.restore(); - }); - - describe('loading file list for external storage', function() { - var ocsResponse; - var reloading; - - beforeEach(function() { - fileList = new OCA.Files_External.FileList( - $('#app-content') - ); - - reloading = fileList.reload(); - - /* jshint camelcase: false */ - ocsResponse = { - ocs: { - meta: { - status: 'ok', - statuscode: 100, - message: null - }, - data: [{ - name: 'smb mount', - path: '/mount points', - type: 'dir', - backend: 'SMB', - scope: 'personal', - permissions: OC.PERMISSION_READ | OC.PERMISSION_DELETE - }, { - name: 'sftp mount', - path: '/another mount points', - type: 'dir', - backend: 'SFTP', - scope: 'system', - permissions: OC.PERMISSION_READ - }] - } - }; - }); - it('render storage list', function(done) { - var request; - var $rows; - var $tr; - - expect(fakeServer.requests.length).toEqual(1); - request = fakeServer.requests[0]; - expect(request.url).toEqual( - OC.linkToOCS('apps/files_external/api/v1') + 'mounts?format=json' - ); - - fakeServer.requests[0].respond( - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(ocsResponse) - ); - - return reloading.then(function() { - $rows = fileList.$el.find('tbody tr'); - expect($rows.length).toEqual(2); - - $tr = $rows.eq(0); - expect($tr.attr('data-id')).not.toBeDefined(); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('sftp mount'); - expect($tr.attr('data-path')).toEqual('/another mount points'); - expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('1'); // read only - expect($tr.find('a.name').attr('href')).toEqual( - OC.getRootPath() + - '/index.php/apps/files' + - '?dir=/another%20mount%20points/sftp%20mount' - ); - expect($tr.find('.nametext').text().trim()).toEqual('sftp mount'); - expect($tr.find('.column-scope > span').text().trim()).toEqual('System'); - expect($tr.find('.column-backend').text().trim()).toEqual('SFTP'); - - $tr = $rows.eq(1); - expect($tr.attr('data-id')).not.toBeDefined(); - expect($tr.attr('data-type')).toEqual('dir'); - expect($tr.attr('data-file')).toEqual('smb mount'); - expect($tr.attr('data-path')).toEqual('/mount points'); - expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('9'); // read and delete - expect($tr.find('a.name').attr('href')).toEqual( - OC.getRootPath() + - '/index.php/apps/files' + - '?dir=/mount%20points/smb%20mount' - ); - expect($tr.find('.nametext').text().trim()).toEqual('smb mount'); - expect($tr.find('.column-scope > span').text().trim()).toEqual('Personal'); - expect($tr.find('.column-backend').text().trim()).toEqual('SMB'); - }).then(done, done); - }); - }); -}); diff --git a/apps/files_external/tests/js/settingsSpec.js b/apps/files_external/tests/js/settingsSpec.js deleted file mode 100644 index f79191151d1..00000000000 --- a/apps/files_external/tests/js/settingsSpec.js +++ /dev/null @@ -1,447 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2015-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Files_External.Settings tests', function() { - var clock; - var select2Stub; - var select2ApplicableUsers; - - beforeEach(function() { - clock = sinon.useFakeTimers(); - select2ApplicableUsers = []; - select2Stub = sinon.stub($.fn, 'select2').callsFake(function(args) { - if (args === 'val') { - return select2ApplicableUsers; - } - return { - on: function() { return this; } - }; - }); - - // view still requires an existing DOM table - $('#testArea').append( - '<table id="externalStorage" data-admin="true">' + - '<thead></thead>' + - '<tbody>' + - '<tr id="addMountPoint" data-id="">' + - '<td class="status"></td>' + - '<td class="mountPoint"><input type="text" name="mountPoint"/></td>' + - '<td class="backend">' + - '<select class="selectBackend">' + - '<option disable selected>Add storage</option>' + - '<option value="\\OC\\TestBackend">Test Backend</option>' + - '<option value="\\OC\\AnotherTestBackend">Another Test Backend</option>' + - '<option value="\\OC\\InputsTestBackend">Inputs test backend</option>' + - '</select>' + - '</td>' + - '<td class="authentication"></td>' + - '<td class="configuration"></td>' + - '<td class="applicable">' + - '<input type="checkbox" class="applicableToAllUsers">' + - '<input type="hidden" class="applicableUsers">' + - '</td>' + - '<td class="mountOptionsToggle">'+ - '<div class="icon-more" title="Advanced settings" deluminate_imagetype="unknown"></div>'+ - '<input type="hidden" class="mountOptions"/>'+ - '</td>'+ - '<td class="save">'+ - '<div class="icon-checkmark" title="Save" deluminate_imagetype="unknown"></div>'+ - '</td>'+ - '</tr>' + - '</tbody>' + - '</table>' - ); - // these are usually appended into the data attribute - // within the DOM by the server template - $('#externalStorage .selectBackend:first').data('configurations', { - '\\OC\\TestBackend': { - 'identifier': '\\OC\\TestBackend', - 'name': 'Test Backend', - 'configuration': { - 'field1': { - 'value': 'Display Name 1' - }, - 'field2': { - 'value': 'Display Name 2', - 'flags': 1 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 11 - }, - '\\OC\\AnotherTestBackend': { - 'identifier': '\\OC\\AnotherTestBackend', - 'name': 'Another Test Backend', - 'configuration': { - 'field1': { - 'value': 'Display Name 1' - }, - 'field2': { - 'value': 'Display Name 2', - 'flags': 1 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 12 - }, - '\\OC\\InputsTestBackend': { - 'identifier': '\\OC\\InputsTestBackend', - 'name': 'Inputs test backend', - 'configuration': { - 'field_text': { - 'value': 'Text field' - }, - 'field_password': { - 'value': ',Password field', - 'type': 2 - }, - 'field_bool': { - 'value': 'Boolean field', - 'type': 1 - }, - 'field_hidden': { - 'value': 'Hidden field', - 'type': 3 - }, - 'field_text_optional': { - 'value': 'Text field optional', - 'flags': 1 - }, - 'field_password_optional': { - 'value': 'Password field optional', - 'flags': 1, - 'type': 2 - } - }, - 'authSchemes': { - 'builtin': true, - }, - 'priority': 13 - } - } - ); - - $('#externalStorage #addMountPoint .authentication:first').data('mechanisms', { - 'mechanism1': { - 'identifier': 'mechanism1', - 'name': 'Mechanism 1', - 'configuration': { - }, - 'scheme': 'builtin', - 'visibility': 3 - }, - }); - - }); - afterEach(function() { - select2Stub.restore(); - clock.restore(); - }); - - describe('storage configuration', function() { - var view; - - function selectBackend(backendName) { - view.$el.find('.selectBackend:first').val(backendName).trigger('change'); - view.$el.find('.applicableToAllUsers').prop('checked', true).trigger('change'); - } - - beforeEach(function() { - var $el = $('#externalStorage'); - view = new OCA.Files_External.Settings.MountConfigListView($el, {encryptionEnabled: false}); - }); - afterEach(function() { - view = null; - }); - describe('selecting backend', function() { - it('populates the row and creates a new empty one', function() { - selectBackend('\\OC\\TestBackend'); - var $firstRow = view.$el.find('tr:first'); - expect($firstRow.find('.backend').text()).toEqual('Test Backend'); - expect($firstRow.find('.selectBackend').length).toEqual(0); - - // TODO: check "remove" button visibility - - // the suggested mount point name - expect($firstRow.find('[name=mountPoint]').val()).toEqual('TestBackend'); - - // TODO: check that the options have been created - - // TODO: check select2 call on the ".applicableUsers" element - - var $emptyRow = $firstRow.next('tr'); - expect($emptyRow.length).toEqual(1); - expect($emptyRow.find('.selectBackend').length).toEqual(1); - expect($emptyRow.find('.applicable select').length).toEqual(0); - - // TODO: check "remove" button visibility - }); - it('shows row even if selection row is hidden', function() { - selectBackend('\\OC\\TestBackend'); - view.$el.find('tr#addMountPoint').hide(); - expect(view.$el.find('tr:first').is(':visible')).toBe(true); - expect(view.$el.find('tr#addMountPoint').is(':visible')).toBe(false); - }); - // TODO: test with personal mounts (no applicable fields) - // TODO: test suggested mount point logic - }); - describe('saving storages', function() { - var $tr; - - beforeEach(function() { - selectBackend('\\OC\\TestBackend'); - $tr = view.$el.find('tr:first'); - }); - it('saves storage after clicking the save button', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - var $mountOptionsField = $tr.find('input.mountOptions'); - expect($mountOptionsField.length).toEqual(1); - $mountOptionsField.val(JSON.stringify({previews:true})); - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(1); - var request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.getRootPath() + '/index.php/apps/files_external/globalstorages'); - expect(JSON.parse(request.requestBody)).toEqual({ - backend: '\\OC\\TestBackend', - authMechanism: 'mechanism1', - backendOptions: { - 'field1': 'test', - 'field2': '' - }, - mountPoint: 'TestBackend', - priority: 11, - applicableUsers: [], - applicableGroups: [], - mountOptions: { - 'previews': true - }, - testOnly: true - }); - - // TODO: respond and check data-id - }); - it('saves storage with applicable users', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - select2ApplicableUsers = ['user1', 'user2', 'group1(group)', 'group2(group)']; - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(1); - var request = fakeServer.requests[0]; - expect(request.url).toEqual(OC.getRootPath() + '/index.php/apps/files_external/globalstorages'); - expect(JSON.parse(request.requestBody)).toEqual({ - backend: '\\OC\\TestBackend', - authMechanism: 'mechanism1', - backendOptions: { - 'field1': 'test', - 'field2': '' - }, - mountPoint: 'TestBackend', - priority: 11, - applicableUsers: ['user1', 'user2'], - applicableGroups: ['group1', 'group2'], - mountOptions: { - encrypt: true, - previews: true, - enable_sharing: false, - filesystem_check_changes: 1, - encoding_compatibility: false, - readonly: false, - }, - testOnly: true - }); - - // TODO: respond and check data-id - }); - it('does not saves storage without applicable users and unchecked all users checkbox', function() { - var $field1 = $tr.find('input[data-parameter=field1]'); - expect($field1.length).toEqual(1); - $field1.val('test'); - $field1.trigger(new $.Event('keyup', {keyCode: 97})); - - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - - var $saveButton = $tr.find('td.save .icon-checkmark'); - $saveButton.click(); - - expect(fakeServer.requests.length).toEqual(0); - }); - - it('saves storage after closing mount options popovermenu', function() { - $tr.find('.mountOptionsToggle .icon-more').click(); - $tr.find('[name=previews]').trigger(new $.Event('keyup', {keyCode: 97})); - $tr.find('input[data-parameter=field1]').val('test'); - - // does not save inside the popovermenu - expect(fakeServer.requests.length).toEqual(0); - - $('body').mouseup(); - - // but after closing the popovermenu - expect(fakeServer.requests.length).toEqual(1); - }); - // TODO: status indicator - }); - describe('validate storage configuration', function() { - var $tr; - - beforeEach(function() { - selectBackend('\\OC\\InputsTestBackend'); - $tr = view.$el.find('tr:first'); - }); - - it('lists missing fields in storage errors', function() { - $tr.find('.applicableToAllUsers').prop('checked', false).trigger('change'); - var storage = view.getStorageConfig($tr); - - expect(storage.errors).toEqual({ - backendOptions: ['field_text', 'field_password'], - requiredApplicable: true, - }); - }); - - it('does not list applicable when all users checkbox is ticked', function() { - var storage = view.getStorageConfig($tr); - - expect(storage.errors).toEqual({ - backendOptions: ['field_text', 'field_password'] - }); - }); - - it('highlights missing non-optional fields', function() { - _.each([ - 'field_text', - 'field_password' - ], function(param) { - expect($tr.find('input[data-parameter='+param+']').hasClass('warning-input')).toBe(true); - }); - _.each([ - 'field_bool', - 'field_hidden', - 'field_text_optional', - 'field_password_optional' - ], function(param) { - expect($tr.find('input[data-parameter='+param+']').hasClass('warning-input')).toBe(false); - }); - }); - - it('validates correct storage', function() { - $tr.find('[name=mountPoint]').val('mountpoint'); - - $tr.find('input[data-parameter=field_text]').val('foo'); - $tr.find('input[data-parameter=field_password]').val('bar'); - $tr.find('input[data-parameter=field_text_optional]').val('foobar'); - // don't set field_password_optional - $tr.find('input[data-parameter=field_hidden]').val('baz'); - - var storage = view.getStorageConfig($tr); - - expect(storage.validate()).toBe(true); - }); - - it('checks missing mount point', function() { - $tr.find('[name=mountPoint]').val(''); - - $tr.find('input[data-parameter=field_text]').val('foo'); - $tr.find('input[data-parameter=field_password]').val('bar'); - - var storage = view.getStorageConfig($tr); - - expect(storage.validate()).toBe(false); - }); - }); - describe('update storage', function() { - // TODO - }); - describe('delete storage', function() { - // TODO - }); - describe('recheck storages', function() { - // TODO - }); - describe('mount options popovermenu', function() { - var $tr; - var $td; - - beforeEach(function() { - selectBackend('\\OC\\TestBackend'); - $tr = view.$el.find('tr:first'); - $td = $tr.find('.mountOptionsToggle'); - }); - - it('shows popovermenu when clicking on toggle button, hides when clicking outside', function() { - $td.find('.icon-more').click(); - - expect($td.find('.popovermenu.open').length).toEqual(1); - - $('body').mouseup(); - - expect($td.find('.popovermenu.open').length).toEqual(0); - }); - - it('doesnt show the encryption option when encryption is disabled', function () { - view._encryptionEnabled = false; - $td.find('.icon-more').click(); - - expect($td.find('.popovermenu [name=encrypt]:visible').length).toEqual(0); - - $('body').mouseup(); - - expect($td.find('.popovermenu.open').length).toEqual(0); - }); - - it('reads config from mountOptions field', function() { - $tr.find('input.mountOptions').val(JSON.stringify({previews:false})); - - $td.find('.icon-more').click(); - expect($td.find('.popovermenu [name=previews]').prop('checked')).toEqual(false); - $('body').mouseup(); - - $tr.find('input.mountOptions').val(JSON.stringify({previews:true})); - $td.find('.icon-more').click(); - expect($td.find('.popovermenu [name=previews]').prop('checked')).toEqual(true); - }); - - it('writes config into mountOptions field', function() { - $td.find('.icon-more').click(); - // defaults to true - var $field = $td.find('.popovermenu [name=previews]'); - expect($field.prop('checked')).toEqual(true); - $td.find('.popovermenu [name=filesystem_check_changes]').val(0); - $('body').mouseup(); - - expect(JSON.parse($tr.find('input.mountOptions').val())).toEqual({ - encrypt: true, - previews: true, - enable_sharing: false, - filesystem_check_changes: 0, - encoding_compatibility: false, - readonly: false - }); - }); - }); - }); - describe('allow user mounts section', function() { - // TODO: test allowUserMounting section - }); -}); |