Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9812aab
ci: add initial acceptance test workflow
phil-davis May 19, 2026
b778914
ci: add some API acceptance test suites
phil-davis May 19, 2026
848efba
ci: run only one test suite for now
phil-davis May 19, 2026
7cfec76
ci: find out why no priv for /var/www/html
phil-davis May 19, 2026
dde4f53
ci: temp reduce php unit workflows
phil-davis May 19, 2026
ff179f0
ci: adjust /var/www permissions
phil-davis May 19, 2026
4e1a69b
ci: adjust server install
phil-davis May 19, 2026
0f53df8
ci: run apiFederationToRoot1 suite
phil-davis May 19, 2026
87cfd22
fix: avoid trying to access array offset on false
phil-davis May 20, 2026
35b094b
fix: handle passing null to normalizeUrl
phil-davis May 20, 2026
a1fe5f8
ci: copy all files including hidden files
phil-davis May 20, 2026
c6876c0
fix: support federation between systems in subdirectories
phil-davis May 20, 2026
f396da3
test(deps): bump behat-related minor version dependencies
phil-davis May 20, 2026
2a68f13
test(deps): pin symfony/yaml to 7.4.11
phil-davis May 20, 2026
2922075
test: remove unneeded colons from behat.yml
phil-davis May 20, 2026
fb3838e
test: convert behat YML config to behat.php
phil-davis May 20, 2026
162cee8
test: fix PHP code style of behat.php
phil-davis May 20, 2026
4f7a789
test(deps): revert pin symfony/yaml to 7.4.11
phil-davis May 21, 2026
18c9446
ci: run webUIComments test suite in CI
phil-davis May 21, 2026
ca26723
test: install all PHP extensions
phil-davis May 21, 2026
10a4b5a
ci: add more API acceptance test suites
phil-davis May 21, 2026
d8e9307
ci: add all API acceptance test suites
phil-davis May 21, 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
519 changes: 519 additions & 0 deletions .github/workflows/acceptance.yml

Large diffs are not rendered by default.

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

acceptance-api:
name: API Acceptance 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',
'apiSharingNotificationsToRoot',
'apiSharingNotificationsToShares',
'apiTags',
'apiTranslation',
'apiTrashbin',
'apiTrashbinRestore',
'apiVersions',
'apiWebdavDelete',
'apiWebdavEtagPropagation1',
'apiWebdavEtagPropagation2',
'apiWebdavLocks',
'apiWebdavLocks2',
'apiWebdavLocks3',
'apiWebdavLocksUnlock',
'apiWebdavMove1',
'apiWebdavMove2',
'apiWebdavOperations',
'apiWebdavPreviews',
'apiWebdavProperties1',
'apiWebdavProperties2',
'apiWebdavUpload1',
'apiWebdavUpload2',
'apiWebdavUploadTUS']"

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

acceptance-webui:
name: WebUI Acceptance Tests
uses: ./.github/workflows/acceptance.yml
with:
do-webui-tests: true
server-folder: 'server'
test-suites: "['webUIComments']"
9 changes: 0 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 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