Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2336066
ci: add initial acceptance test workflow
phil-davis May 19, 2026
826c059
ci: add some API acceptance test suites
phil-davis May 19, 2026
4a80fca
ci: run only one test suite for now
phil-davis May 19, 2026
aebe7dd
ci: find out why no priv for /var/www/html
phil-davis May 19, 2026
cca7c19
ci: temp reduce php unit workflows
phil-davis May 19, 2026
8aabaa1
ci: adjust /var/www permissions
phil-davis May 19, 2026
4ebfe2e
ci: adjust server install
phil-davis May 19, 2026
97a8b7c
ci: run apiFederationToRoot1 suite
phil-davis May 19, 2026
8e62db1
fix: avoid trying to access array offset on false
phil-davis May 20, 2026
a865089
fix: handle passing null to normalizeUrl
phil-davis May 20, 2026
4f2ab33
ci: copy all files including hidden files
phil-davis May 20, 2026
4c9991a
fix: support federation between systems in subdirectories
phil-davis May 20, 2026
cef22a9
test(deps): bump behat-related minor version dependencies
phil-davis May 20, 2026
db48fc0
test(deps): pin symfony/yaml to 7.4.11
phil-davis May 20, 2026
87d897c
test: remove unneeded colons from behat.yml
phil-davis May 20, 2026
7a261a1
test: convert behat YML config to behat.php
phil-davis May 20, 2026
45f26a5
test: fix PHP code style of behat.php
phil-davis May 20, 2026
28a7d8c
test(deps): revert pin symfony/yaml to 7.4.11
phil-davis May 21, 2026
c70da16
ci: run webUIComments test suite in CI
phil-davis May 21, 2026
4b44d2e
test: install all PHP extensions
phil-davis May 21, 2026
b510cd6
ci: add more API acceptance test suites
phil-davis May 21, 2026
8454df4
ci: add all API acceptance test suites
phil-davis May 21, 2026
14f4b6d
test: fix reference to server root
phil-davis May 25, 2026
ae482e5
test: fix
phil-davis May 25, 2026
a64c581
ci: shorten acceptance test workflow names
phil-davis May 25, 2026
a5b8951
ci: install ImageMagick for Previews tests
phil-davis May 25, 2026
2067b0a
test: update preview test fixture
phil-davis May 25, 2026
f2b9c17
ci: refactor server and federated folder
phil-davis May 25, 2026
6792536
ci: add some CLI acceptance tests
phil-davis May 25, 2026
a5ae643
ci: provide email server for cliProvisioning
phil-davis May 25, 2026
0743d64
ci: explicitly specify utf8mb4 for database
phil-davis May 25, 2026
33cd994
ci: enable UFT-8 Unicode characters for acceptance tests
phil-davis May 25, 2026
f584c86
ci: examine locale
phil-davis May 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
526 changes: 526 additions & 0 deletions .github/workflows/acceptance.yml

Large diffs are not rendered by default.

115 changes: 115 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,118 @@ jobs:
uses: ./.github/workflows/php-unit.yml
with:
php-versions: '["8.3"]'

acceptance-api:
name: API Tests
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
test-suites: "[
'apiAuth',
'apiAuthOcs',
'apiAuthWebDav',
'apiCapabilities',
'apiComments',
'apiFavorites',
'apiMain',
'apiProvisioning-v1',
'apiProvisioning-v2',
'apiProvisioningGroups-v1',
'apiProvisioningGroups-v2',
'apiShareCreateSpecialToRoot1',
'apiShareCreateSpecialToRoot2',
'apiShareCreateSpecialToShares1',
'apiShareCreateSpecialToShares2',
'apiSharees',
'apiShareManagementBasicToRoot',
'apiShareManagementBasicToShares',
'apiShareManagementToRoot',
'apiShareManagementToShares',
'apiShareOperationsToRoot1',
'apiShareOperationsToRoot2',
'apiShareOperationsToShares1',
'apiShareOperationsToShares2',
'apiSharePublicLink1',
'apiSharePublicLink2',
'apiSharePublicLink3',
'apiShareReshareToRoot1',
'apiShareReshareToRoot2',
'apiShareReshareToRoot3',
'apiShareReshareToShares1',
'apiShareReshareToShares2',
'apiShareReshareToShares3',
'apiShareUpdateToRoot',
'apiShareUpdateToShares',
'apiTags',
'apiTranslation',
'apiTrashbin',
'apiTrashbinRestore',
'apiVersions',
'apiWebdavDelete',
'apiWebdavEtagPropagation1',
'apiWebdavEtagPropagation2',
'apiWebdavLocks',
'apiWebdavLocks2',
'apiWebdavLocks3',
'apiWebdavLocksUnlock',
'apiWebdavMove1',
'apiWebdavMove2',
'apiWebdavOperations',
'apiWebdavProperties1',
'apiWebdavProperties2',
'apiWebdavUpload1',
'apiWebdavUpload2',
'apiWebdavUploadTUS']"

acceptance-api-notifications:
name: API Tests Notifications
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
additional-app: 'notifications'
test-suites: "['apiSharingNotificationsToRoot', 'apiSharingNotificationsToShares']"

acceptance-api-previews:
name: API Tests Previews
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
additional-packages: 'imagemagick'
server-folder: 'server'
test-suites: "['apiWebdavPreviews']"

acceptance-api-federation:
name: API Tests Federation
uses: ./.github/workflows/acceptance.yml
with:
do-api-tests: true
server-folder: 'server'
federated-folder: 'federated'
test-suites: "['apiFederationToRoot1', 'apiFederationToRoot2', 'apiFederationToShares1', 'apiFederationToShares2']"

acceptance-cli:
name: CLI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-cli-tests: true
server-folder: 'server'
test-suites: "['cliMain', 'cliTrashbin']"

acceptance-cli-email:
name: CLI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-cli-tests: true
use-email-server: true
server-folder: 'server'
test-suites: "['cliProvisioning']"

acceptance-webui:
name: WebUI Tests
uses: ./.github/workflows/acceptance.yml
with:
do-webui-tests: true
server-folder: 'server'
test-suites: "['webUIComments']"
11 changes: 2 additions & 9 deletions .github/workflows/php-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,6 @@ jobs:
matrix:
php: ${{ fromJSON(inputs.php-versions) }}
database: [sqlite]
include:
- php: "8.3"
database: "mysql:8.0"
- php: "8.3"
database: "mariadb:10.6"
- php: "8.3"
database: "mariadb:10.11"
- php: "8.3"
database: "postgres:10.21"

services:
mysql:
Expand All @@ -42,6 +33,8 @@ jobs:
--health-interval=10s
--health-timeout=5s
--health-retries=3
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
ports:
- 3306:3306
postgres:
Expand Down
3 changes: 3 additions & 0 deletions apps/federation/lib/DbHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,9 @@ protected function hash($url) {
* @return string
*/
protected function normalizeUrl($url) {
if ($url === null) {
$url = '';
}
$normalized = $url;

if (\strpos($url, 'https://') === 0) {
Expand Down
8 changes: 8 additions & 0 deletions apps/files_sharing/lib/External/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -573,20 +573,28 @@ protected function testUrl(IClientService $clientService, string $remote, bool $
public function testRemoteUrl(IClientService $clientService, string $remote) {
$parsed_host = parse_url($remote, PHP_URL_HOST);
$parsed_port = parse_url($remote, PHP_URL_PORT);
$parsed_path = parse_url($remote, PHP_URL_PATH);
if (\is_string($parsed_host)) {
$remote = $parsed_host;
if ($parsed_port !== null) {
$remote .= ':' . $parsed_port;
}
if ($parsed_path !== null) {
$remote .= $parsed_path;
}
} else {
$string_to_parse = 'http://' . $remote;
$parsed_host = parse_url($string_to_parse, PHP_URL_HOST);
$parsed_port = parse_url($string_to_parse, PHP_URL_PORT);
$parsed_path = parse_url($string_to_parse, PHP_URL_PATH);
if (\is_string($parsed_host)) {
$remote = $parsed_host;
if ($parsed_port !== null) {
$remote .= ':' . $parsed_port;
}
if ($parsed_path !== null) {
$remote .= $parsed_path;
}
}
}
try {
Expand Down
2 changes: 1 addition & 1 deletion lib/private/Files/Storage/Wrapper/Encryption.php
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ public function fopen($path, $mode) {
if (!empty($encryptionModuleId)) {
$encryptionModule = $this->encryptionManager->getEncryptionModule($encryptionModuleId);
$shouldEncrypt = true;
} elseif (empty($encryptionModuleId) && $info['encrypted'] === true) {
} elseif ($info !== false && $info->isEncrypted()) {
// we come from a old installation. No header and/or no module defined
// but the file is encrypted. In this case we need to use the
// OC_DEFAULT_MODULE to read the file
Expand Down
Loading
Loading