-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: add file conversion integration tests
Signed-off-by: skjnldsv <[email protected]>
- Loading branch information
Showing
7 changed files
with
189 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
SPDX-FileCopyrightText: 2019 CHUTTERSNAP <https://unsplash.com/@chuttersnap> <https://unsplash.com/photos/blue-clouds-under-white-sky-9AqIdzEc9pY>" | ||
SPDX-License-Identifier: LicenseRef-Unsplash |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
build/integration/features/bootstrap/ConversionsContext.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
<?php | ||
/** | ||
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors | ||
* SPDX-FileCopyrightText: 2016 ownCloud, Inc. | ||
* SPDX-License-Identifier: AGPL-3.0-or-later | ||
*/ | ||
require __DIR__ . '/../../vendor/autoload.php'; | ||
|
||
use Behat\Behat\Context\Context; | ||
use Behat\Behat\Context\SnippetAcceptingContext; | ||
use Behat\Gherkin\Node\TableNode; | ||
|
||
class ConversionsContext implements Context, SnippetAcceptingContext { | ||
use AppConfiguration; | ||
use BasicStructure; | ||
use WebDav; | ||
|
||
/** @BeforeScenario */ | ||
public function setUpScenario() { | ||
$this->asAn('admin'); | ||
$this->setStatusTestingApp(true); | ||
} | ||
|
||
/** @AfterScenario */ | ||
public function tearDownScenario() { | ||
$this->asAn('admin'); | ||
$this->setStatusTestingApp(false); | ||
} | ||
|
||
protected function resetAppConfigs() { | ||
} | ||
|
||
/** | ||
* @When /^user "([^"]*)" converts file "([^"]*)" to "([^"]*)"$/ | ||
*/ | ||
public function userConvertsTheSavedFileId(string $user, string $path, string $mime) { | ||
$this->userConvertsTheSavedFileIdTo($user, $path, $mime, null); | ||
} | ||
|
||
/** | ||
* @When /^user "([^"]*)" converts file "([^"]*)" to "([^"]*)" and saves it to "([^"]*)"$/ | ||
*/ | ||
public function userConvertsTheSavedFileIdTo(string $user, string $path, string $mime, ?string $destination) { | ||
try { | ||
$fileId = $this->getFileIdForPath($user, $path); | ||
} catch (Exception $e) { | ||
// return a fake value to keep going and be able to test the error | ||
$fileId = 0; | ||
} | ||
|
||
$data = [['fileId', $fileId], ['targetMimeType', $mime]]; | ||
if ($destination !== null) { | ||
$data[] = ['destination', $destination]; | ||
} | ||
|
||
$this->asAn($user); | ||
$this->sendingToWith('post', '/apps/files/api/v1/convert', new TableNode($data)); | ||
} | ||
} |
101 changes: 101 additions & 0 deletions
101
build/integration/file_conversions/file_conversions.feature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors | ||
# SPDX-License-Identifier: AGPL-3.0-only | ||
|
||
Feature: conversions | ||
Background: | ||
Given using api version "2" | ||
Given using new dav path | ||
Given user "user0" exists | ||
|
||
Scenario: Converting a file works | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
Then as "user0" the file "/image.jpg" exists | ||
When user "user0" converts file "/image.jpg" to "image/png" | ||
Then the HTTP status code should be "201" | ||
Then the OCS status code should be "201" | ||
Then as "user0" the file "/image.png" exists | ||
|
||
Scenario: Converting a file to a given path works | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
And User "user0" created a folder "/folder" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the folder "/folder" exists | ||
When user "user0" converts file "/image.jpg" to "image/png" and saves it to "/folder/image.png" | ||
Then the HTTP status code should be "201" | ||
Then the OCS status code should be "201" | ||
Then as "user0" the file "/folder/image.png" exists | ||
Then as "user0" the file "/image.png" does not exist | ||
|
||
Scenario: Converting a file path with overwrite | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
And user "user0" uploads file "data/green-square-256.png" to "/image.png" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the file "/image.png" exists | ||
When user "user0" converts file "/image.jpg" to "image/png" | ||
Then the HTTP status code should be "201" | ||
Then the OCS status code should be "201" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the file "/image.png" exists | ||
Then as "user0" the file "/image (2).png" exists | ||
|
||
Scenario: Converting a file path with overwrite to a given path | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
And User "user0" created a folder "/folder" | ||
And user "user0" uploads file "data/green-square-256.png" to "/folder/image.png" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the folder "/folder" exists | ||
Then as "user0" the file "/folder/image.png" exists | ||
When user "user0" converts file "/image.jpg" to "image/png" and saves it to "/folder/image.png" | ||
Then the HTTP status code should be "201" | ||
Then the OCS status code should be "201" | ||
Then as "user0" the file "/folder/image.png" exists | ||
Then as "user0" the file "/folder/image (2).png" exists | ||
Then as "user0" the file "/image.png" does not exist | ||
Then as "user0" the file "/image.jpg" exists | ||
|
||
Scenario: Converting a file which does not exist fails | ||
When user "user0" converts file "/image.jpg" to "image/png" | ||
Then the HTTP status code should be "404" | ||
Then the OCS status code should be "404" | ||
Then as "user0" the file "/image.jpg" does not exist | ||
Then as "user0" the file "/image.png" does not exist | ||
|
||
Scenario: Converting a file to an invalid destination path fails | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
When user "user0" converts file "/image.jpg" to "image/png" and saves it to "/folder/image.png" | ||
Then the HTTP status code should be "404" | ||
Then the OCS status code should be "404" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the file "/folder/image.png" does not exist | ||
|
||
Scenario: Converting a file to an invalid format fails | ||
Given user "user0" uploads file "data/clouds.jpg" to "/image.jpg" | ||
When user "user0" converts file "/image.jpg" to "image/invalid" | ||
Then the HTTP status code should be "500" | ||
Then the OCS status code should be "999" | ||
Then as "user0" the file "/image.jpg" exists | ||
Then as "user0" the file "/image.png" does not exist | ||
|
||
Scenario: Forbid conversion to a destination without create permission | ||
Given user "user1" exists | ||
# Share the folder with user1 | ||
Given User "user0" created a folder "/folder" | ||
Then As an "user0" | ||
When creating a share with | ||
| path | folder | | ||
| shareWith | user1 | | ||
| shareType | 0 | | ||
| permissions | 1 | | ||
Then the OCS status code should be "200" | ||
And the HTTP status code should be "200" | ||
# Create the folder, upload the image | ||
Then As an "user1" | ||
Given user "user1" accepts last share | ||
Given as "user1" the folder "/folder" exists | ||
Given user "user1" uploads file "data/clouds.jpg" to "/image.jpg" | ||
Then as "user1" the file "/image.jpg" exists | ||
# Try to convert the image to a folder where user1 has no create permission | ||
When user "user1" converts file "/image.jpg" to "image/png" and saves it to "/folder/folder.png" | ||
Then the OCS status code should be "403" | ||
And the HTTP status code should be "403" | ||
Then as "user1" the file "/folder/folder.png" does not exist |