diff --git a/.travis.yml b/.travis.yml index 8f8fd7b95c47..91a0fb9effad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -103,6 +103,12 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="other" PLATFORM="Windows 10" TEST_DAV=0 @@ -159,6 +165,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="firefox" BROWSER_VERSION="47.0" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 env: DB=pgsql TC=litmus-v1 - php: 5.6 @@ -229,6 +242,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="chrome" BROWSER_VERSION="latest-1" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="MicrosoftEdge" BROWSER_VERSION="latest" BEHAT_SUITE="other" PLATFORM="Windows 10" TEST_DAV=0 @@ -285,6 +305,13 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="MicrosoftEdge" BROWSER_VERSION="latest" BEHAT_SUITE="upload" PLATFORM="Windows 10" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true - php: 5.6 if: type = cron env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="other" PLATFORM="Windows 7" TEST_DAV=0 @@ -341,4 +368,11 @@ matrix: apt: *common_apt hosts: *common_hosts sauce_connect: true + - php: 5.6 + if: type = cron + env: DB=pgsql TC=selenium BROWSER="internet explorer" BROWSER_VERSION="11.0" BEHAT_SUITE="upload" PLATFORM="Windows 7" TEST_DAV=0 + addons: + apt: *common_apt + hosts: *common_hosts + sauce_connect: true fast_finish: true diff --git a/tests/TestHelpers/WebDavHelper.php b/tests/TestHelpers/WebDavHelper.php index dca845adeebb..e78918e62efe 100644 --- a/tests/TestHelpers/WebDavHelper.php +++ b/tests/TestHelpers/WebDavHelper.php @@ -103,6 +103,9 @@ public static function makeDavRequest( ) { $baseUrl = self::sanitizeUrl($baseUrl, true); $davPath = self::getDavPath($user, $davPathVersionToUse, $type); + //replace # and ? in the path, Guzzle will not encode them + $path = str_replace("#", "%23", $path); + $path = str_replace("?", "%3F", $path); $fullUrl = self::sanitizeUrl($baseUrl . $davPath . $path); $client = new GClient(); @@ -116,7 +119,7 @@ public static function makeDavRequest( $options['config'] = [ 'curl' => [ CURLOPT_INTERFACE => $sourceIpAddress ]]; } - + $request = $client->createRequest($method, $fullUrl, $options); if (!is_null($headers)) { foreach ($headers as $key => $value) { diff --git a/tests/travis/start_ui_tests.sh b/tests/travis/start_ui_tests.sh index 78f565666e16..ec5a4689951e 100755 --- a/tests/travis/start_ui_tests.sh +++ b/tests/travis/start_ui_tests.sh @@ -195,7 +195,8 @@ EXTRA_CAPABILITIES=$EXTRA_CAPABILITIES'"maxDuration":"3600"' #Set up personalized skeleton PREVIOUS_SKELETON_DIR=$($OCC --no-warnings config:system:get skeletondirectory) -$OCC config:system:set skeletondirectory --value="$(pwd)/tests/ui/skeleton" >/dev/null +export SKELETON_DIR=$(pwd)/tests/ui/skeleton +$OCC config:system:set skeletondirectory --value="$SKELETON_DIR" >/dev/null TEST_LOG_FILE=$(mktemp) @@ -204,6 +205,7 @@ export BEHAT_PARAMS='{"extensions" : {"Behat\\MinkExtension" : {"browser_name": export IPV4_URL export IPV6_URL export REMOTE_FED_BASE_URL +export FILES_FOR_UPLOAD="$(pwd)/tests/ui/filesForUpload/" lib/composer/bin/behat -c $BEHAT_YML $BEHAT_SUITE_OPTION $BEHAT_TAG_OPTION $BEHAT_TAGS $BEHAT_FEATURE -v 2>&1 | tee -a $TEST_LOG_FILE diff --git a/tests/ui/config/behat.yml b/tests/ui/config/behat.yml index 6a443fd77615..573b34ca5868 100644 --- a/tests/ui/config/behat.yml +++ b/tests/ui/config/behat.yml @@ -74,6 +74,16 @@ default: - FilesContext: - SharingContext: + upload: + paths: + - %paths.base%/../features/upload + context: *common_suite_context + contexts: + - FeatureContext: + - LoginContext: + - UsersContext: + - FilesContext: + restrictSharing: paths: - %paths.base%/../features/restrictSharing diff --git a/tests/ui/features/bootstrap/FeatureContext.php b/tests/ui/features/bootstrap/FeatureContext.php index e7f2328a0df1..98346d8e792e 100644 --- a/tests/ui/features/bootstrap/FeatureContext.php +++ b/tests/ui/features/bootstrap/FeatureContext.php @@ -43,7 +43,8 @@ class FeatureContext extends RawMinkContext implements Context { private $owncloudPage; private $loginPage; private $oldCSRFSetting = null; - + private $currentUser = null; + /** * * @var Page\OwncloudPage @@ -101,6 +102,21 @@ class FeatureContext extends RawMinkContext implements Context { ] ]; + /** + * @return string + */ + public function getCurrentUser() { + return $this->currentUser; + } + + /** + * @param string $currentUser + * @return void + */ + public function setCurrentUser($currentUser) { + $this->currentUser = $currentUser; + } + /** * FeatureContext constructor. * diff --git a/tests/ui/features/bootstrap/FilesContext.php b/tests/ui/features/bootstrap/FilesContext.php index edaef512f78f..dc3c24703a0f 100644 --- a/tests/ui/features/bootstrap/FilesContext.php +++ b/tests/ui/features/bootstrap/FilesContext.php @@ -28,6 +28,8 @@ use SensioLabs\Behat\PageObjectExtension\PageObject\Exception\ElementNotFoundException; use Page\TrashbinPage; use Page\OwncloudPage; +use Page\FilesPageElement\ConflictDialog; +use TestHelpers\DownloadHelper; require_once 'bootstrap.php'; @@ -38,7 +40,11 @@ class FilesContext extends RawMinkContext implements Context { private $filesPage; private $trashbinPage; - + /** + * + * @var ConflictDialog + */ + private $conflictDialog; /** * Table of all files and folders that should have been deleted, stored so * that other steps can use the list to check if the deletion happened correctly @@ -57,23 +63,36 @@ class FilesContext extends RawMinkContext implements Context { */ private $movedElementsTable = null; + /** + * variable to remember in which folder we are currently working + * + * @var string + */ + private $currentFolder = ""; + /** * * @var FeatureContext */ private $featureContext; - + private $uploadConflictDialogTitle = "file conflict"; + /** * FilesContext constructor. * * @param FilesPage $filesPage * @param TrashbinPage $trashbinPage + * @param ConflictDialog $conflictDialog + * @return void */ public function __construct( - FilesPage $filesPage, TrashbinPage $trashbinPage + FilesPage $filesPage, + TrashbinPage $trashbinPage, + ConflictDialog $conflictDialog ) { $this->trashbinPage = $trashbinPage; $this->filesPage = $filesPage; + $this->conflictDialog = $conflictDialog; } /** @@ -333,6 +352,51 @@ public function iBatchMoveTheseFilesIntoTheFolder( $this->movedElementsTable = $files; } + /** + * @When I upload the file :name + * @param string $name + * @return void + */ + public function iUploadTheFile($name) { + $this->filesPage->uploadFile($this->getSession(), $name); + } + + /** + * @When /^I choose to keep the (new|existing) files$/ + * @param string $choice + */ + public function choiceInUploadConflict($choice) { + $dialogs = $this->filesPage->getOcDialogs(); + foreach ($dialogs as $dialog) { + $isConflictDialog = strstr( + $dialog->getTitle(), $this->uploadConflictDialogTitle + ); + if ($isConflictDialog !== false) { + $this->conflictDialog->setElement($dialog->getOwnElement()); + break; + } + } + if ($choice === "new") { + $this->conflictDialog->keepNewFiles(); + } elseif ($choice === "existing") { + $this->conflictDialog->keepExistingFiles(); + } else { + throw new Exception("the choice can only be 'new' or 'existing'"); + } + + } + + /** + * @When I click the :label button + * @return void + */ + public function iClickTheButton($label) { + $dialogs = $this->filesPage->getOcDialogs(); + $dialog = end($dialogs); + $this->conflictDialog->setElement($dialog->getOwnElement()); + $this->conflictDialog->clickButton($this->getSession(), $label); + } + /** * @Then /^the (?:deleted|moved) elements should (not|)\s?be listed$/ * @param string $shouldOrNot @@ -411,33 +475,42 @@ public function iMarkTheseFilesForBatchAction(TableNode $files) { } /** - * @When /^I open the (trashbin|)\s?(?:file|folder) ((?:'[^']*')|(?:"[^"]*"))$/ + * @When /^I open the (trashbin|)\s?(file|folder) ((?:'[^']*')|(?:"[^"]*"))$/ * @param string $typeOfFilesPage + * @param string $fileOrFolder * @param string $name enclosed in single or double quotes * @return void */ - public function iOpenTheFolderNamed($typeOfFilesPage, $name) { + public function iOpenTheFolderNamed($typeOfFilesPage, $fileOrFolder, $name) { // The capturing groups of the regex include the quotes at each // end of the captured string, so trim them. - $this->iOpenTheFolder($typeOfFilesPage, trim($name, $name[0])); + $this->iOpenTheFolder($typeOfFilesPage, $fileOrFolder, trim($name, $name[0])); } /** * @param string $typeOfFilesPage + * @param string $fileOrFolder * @param string|array $name * @return void */ - public function iOpenTheFolder($typeOfFilesPage, $name) { + public function iOpenTheFolder($typeOfFilesPage, $fileOrFolder, $name) { if ($typeOfFilesPage === "trashbin") { $this->iAmOnTheTrashbinPage(); } - + if ($fileOrFolder === "folder") { + if (is_array($name)) { + $this->currentFolder .= "/" . implode($name); + } else { + $this->currentFolder .= "/" . $name; + } + } $pageObject = $this->getCurrentPageObject(); $pageObject->waitTillPageIsLoaded($this->getSession()); $pageObject->openFile($name, $this->getSession()); $pageObject->waitTillPageIsLoaded($this->getSession()); } - + + /** * @Then /^the (?:file|folder) ((?:'[^']*')|(?:"[^"]*")) should (not|)\s?be listed\s?(?:in the |)(trashbin|)\s?(?:folder ((?:'[^']*')|(?:"[^"]*")))?$/ * @param string $name enclosed in single or double quotes @@ -475,16 +548,13 @@ public function checkIfFileFolderIsListed( ) { $should = ($shouldOrNot !== "not"); $message = null; - if ($typeOfFilesPage === "trashbin") { $this->iAmOnTheTrashbinPage(); } - $pageObject = $this->getCurrentPageObject(); $pageObject->waitTillPageIsLoaded($this->getSession()); - if ($folder !== "") { - $this->iOpenTheFolder($typeOfFilesPage, $folder); + $this->iOpenTheFolder($typeOfFilesPage, "folder", $folder); } try { @@ -494,14 +564,12 @@ public function checkIfFileFolderIsListed( $message = $e->getMessage(); $fileRowElement = null; } - if ($should) { PHPUnit_Framework_Assert::assertNotNull($fileRowElement); } else { if (is_array($name)) { $name = implode($name); } - PHPUnit_Framework_Assert::assertContains( "could not find file with the name '" . $name . "'", $message @@ -518,7 +586,7 @@ public function checkIfFileFolderIsListed( public function theMovedElementsShouldBeListedInTheFolder( $shouldOrNot, $folderName ) { - $this->iOpenTheFolder("", $folderName); + $this->iOpenTheFolder("", "folder", $folderName); $this->filesPage->waitTillPageIsLoaded($this->getSession()); $this->theDeletedMovedElementsShouldBeListed($shouldOrNot); } @@ -539,7 +607,7 @@ public function theFollowingFileFolderShouldBeListedInTheFollowingFolder( $folderNameParts[] = $namePartsRow['folder-name-parts']; $toBeListedTableArray[] = [$namePartsRow['item-name-parts']]; } - $this->iOpenTheFolder("", $folderNameParts); + $this->iOpenTheFolder("", "folder",$folderNameParts); $this->filesPage->waitTillPageIsLoaded($this->getSession()); $toBeListedTable = new TableNode($toBeListedTableArray); @@ -638,6 +706,58 @@ public function theFilesactionmenuShouldBeCompletelyVisibleAfterClickingOnIt() { } } + /** + * @Then /^the content of ((?:'[^']*')|(?:"[^"]*")) should be the same as the local ((?:'[^']*')|(?:"[^"]*"))$/ + * @param string $remoteFile enclosed in single or double quotes + * @param string $localFile enclosed in single or double quotes + * @return void + */ + public function theContentOfShouldBeTheSameAsTheLocal($remoteFile, $localFile) { + // The capturing group of the regex always includes the quotes at each + // end of the captured string, so trim them. + $remoteFile = $this->currentFolder . "/" . trim($remoteFile, $remoteFile[0]); + $localFile = getenv("FILES_FOR_UPLOAD") . "/" . trim($localFile, $localFile[0]); + $this->assertContentOfRemoteAndLocalFileIsSame($remoteFile, $localFile); + } + + /** + * @Then /^the content of ((?:'[^']*')|(?:"[^"]*")) should not have changed$/ + * @param string $fileName + * @return void + */ + public function theContentOfShouldNotHaveChanged($fileName) { + // The capturing group of the regex always includes the quotes at each + // end of the captured string, so trim them. + $fileName = trim($fileName, $fileName[0]); + $remoteFile = $this->currentFolder . "/" . $fileName; + $localFile = getenv("SKELETON_DIR") . "/" . $fileName; + $this->assertContentOfRemoteAndLocalFileIsSame($remoteFile, $localFile); + } + + /** + * Asserts that the content of a remote and a local file is the same + * uses the current user to download the remote file + * + * @param string $remoteFile + * @param string $localFile + * @return void + */ + private function assertContentOfRemoteAndLocalFileIsSame( + $remoteFile, $localFile + ) { + $username = $this->featureContext->getCurrentUser(); + $result = DownloadHelper::download( + $this->getMinkParameter("base_url"), + $username, + $this->featureContext->getUserPassword($username), + $remoteFile + ); + + PHPUnit_Framework_Assert::assertSame( + file_get_contents($localFile), $result->getBody()->getContents() + ); + } + /** * @BeforeScenario * This will run before EVERY scenario. diff --git a/tests/ui/features/bootstrap/LoginContext.php b/tests/ui/features/bootstrap/LoginContext.php index d7bc9210961e..3e4e63318f2c 100644 --- a/tests/ui/features/bootstrap/LoginContext.php +++ b/tests/ui/features/bootstrap/LoginContext.php @@ -36,6 +36,10 @@ class LoginContext extends RawMinkContext implements Context { private $loginPage; private $filesPage; private $expectedPage; + /** + * + * @var FeatureContext + */ private $featureContext; /** @@ -64,6 +68,7 @@ public function iAmOnTheLoginPage() { public function iLoginWithUsernameAndPassword($username, $password) { $this->filesPage = $this->loginPage->loginAs($username, $password); $this->filesPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** @@ -113,6 +118,7 @@ public function iLoginWithUsernameAndPasswordAfterRedirectFromThePage( str_replace(' ', '', ucwords($page)) . 'Page' ); $this->expectedPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** @@ -120,11 +126,13 @@ public function iLoginWithUsernameAndPasswordAfterRedirectFromThePage( * @return void */ public function iLoginAsARegularUserWithACorrectPassword() { + $username = $this->featureContext->getRegularUserName(); $this->filesPage = $this->loginPage->loginAs( - $this->featureContext->getRegularUserName(), + $username, $this->featureContext->getRegularUserPassword() ); $this->filesPage->waitTillPageIsLoaded($this->getSession()); + $this->featureContext->setCurrentUser($username); } /** diff --git a/tests/ui/features/files/deleteFilesFolders.feature b/tests/ui/features/files/deleteFilesFolders.feature index 3bc156f25581..f3503009be49 100644 --- a/tests/ui/features/files/deleteFilesFolders.feature +++ b/tests/ui/features/files/deleteFilesFolders.feature @@ -15,7 +15,7 @@ So that I can keep my filing system clean and tidy | simple-folder | | lorem.txt | | strängé नेपाली folder | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | Then the deleted elements should not be listed And the deleted elements should not be listed after a page reload diff --git a/tests/ui/features/lib/FilesPage.php b/tests/ui/features/lib/FilesPage.php index 622e3cea4536..06f5c017544b 100644 --- a/tests/ui/features/lib/FilesPage.php +++ b/tests/ui/features/lib/FilesPage.php @@ -43,7 +43,7 @@ class FilesPage extends FilesPageBasic { protected $newFileFolderButtonXpath = './/*[@id="controls"]//a[@class="button new"]'; protected $newFolderButtonXpath = './/div[contains(@class, "newFileMenu")]//a[@data-templatename="New folder"]'; protected $newFolderNameInputLabel = 'New folder'; - + protected $fileUploadInputId = "file_upload_start"; private $strForNormalFileName = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; /** @@ -134,6 +134,25 @@ public function createFolder($name = null) { return $name; } + /** + * + * @param Session $session + * @param string $name + * @return void + */ + public function uploadFile(Session $session, $name) { + $uploadField = $this->findById($this->fileUploadInputId); + if (is_null($uploadField)) { + throw new ElementNotFoundException( + __METHOD__ . + " id $this->fileUploadInputId " . + "could not find file upload input field" + ); + } + $uploadField->attachFile(getenv("FILES_FOR_UPLOAD") . $name); + $this->waitForAjaxCallsToStartAndFinish($session); + } + /** * opens the sharing dialog for a given file/folder name * returns the SharingDialog Object diff --git a/tests/ui/features/lib/FilesPageElement/ConflictDialog.php b/tests/ui/features/lib/FilesPageElement/ConflictDialog.php new file mode 100644 index 000000000000..44dbb661599d --- /dev/null +++ b/tests/ui/features/lib/FilesPageElement/ConflictDialog.php @@ -0,0 +1,67 @@ + + * @copyright 2017 Artur Neumann artur@jankaritech.com + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, + * as published by the Free Software Foundation; + * either version 3 of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * + */ + +namespace Page\FilesPageElement; + +use Behat\Mink\Exception\ElementNotFoundException; +use Page\OwncloudPageElement\OCDialog; + +class ConflictDialog extends OCDialog { + private $keepNewFilesCheckXpath = "//label[@for='checkbox-allnewfiles']"; + private $keepExistingFilesCheckXpath = "//label[@for='checkbox-allexistingfiles']"; + + /** + * takes the xpath and selects the option with that xpath + * + * @param string $xpath + * @throws ElementNotFoundException + * @return void + */ + private function keepFiles($xpath) { + $checkBox = $this->dialogElement->find("xpath", $xpath); + if ($checkBox === null) { + throw new ElementNotFoundException( + __METHOD__ . + " xpath $xpath " . + "could not find checkbox/label" + ); + } + $checkBox->click(); + } + + /** + * @throws ElementNotFoundException + * @return void + */ + public function keepExistingFiles() { + $this->keepFiles($this->keepExistingFilesCheckXpath); + } + + /** + * @throws ElementNotFoundException + * @return void + */ + public function keepNewFiles() { + $this->keepFiles($this->keepNewFilesCheckXpath); + } +} \ No newline at end of file diff --git a/tests/ui/features/lib/OwncloudPageElement/OCDialog.php b/tests/ui/features/lib/OwncloudPageElement/OCDialog.php index 83fe19e20290..895581b29197 100644 --- a/tests/ui/features/lib/OwncloudPageElement/OCDialog.php +++ b/tests/ui/features/lib/OwncloudPageElement/OCDialog.php @@ -40,6 +40,7 @@ class OCDialog extends OwncloudPage { protected $dialogElement; protected $titleClassXpath = ".//*[@class='oc-dialog-title']"; protected $contentClassXpath = ".//*[@class='oc-dialog-content']"; + protected $buttonByLabelXpath = "//button[.='%s']"; /** * the accept button, regardless of the label * @@ -60,6 +61,14 @@ public function setElement(NodeElement $dialogElement) { $this->dialogElement = $dialogElement; } + /** + * returns the Element that was set by setElement() + * + * @return \Behat\Mink\Element\NodeElement + */ + public function getOwnElement() { + return $this->dialogElement; + } /** * * @throws ElementNotFoundException @@ -115,5 +124,27 @@ public function accept(Session $session) { $primaryButton->click(); $this->waitForOutstandingAjaxCalls($session); } + + /** + * clicks the button with the given label + * + * @param Session $session + * @param string $label + * @return void + */ + public function clickButton(Session $session, $label) { + $button = $this->dialogElement->find( + "xpath", sprintf($this->buttonByLabelXpath, $label) + ); + if (is_null($button)) { + throw new ElementNotFoundException( + __METHOD__ . + " xpath " . sprintf($this->buttonByLabelXpath, $label) . + " could not find button with the given label" + ); + } + $button->click(); + $this->waitForOutstandingAjaxCalls($session); + } } \ No newline at end of file diff --git a/tests/ui/features/moveFilesFolders/moveFiles.feature b/tests/ui/features/moveFilesFolders/moveFiles.feature index d86f2a7ed0e4..65082d61bc48 100644 --- a/tests/ui/features/moveFilesFolders/moveFiles.feature +++ b/tests/ui/features/moveFilesFolders/moveFiles.feature @@ -19,21 +19,25 @@ So that I can organise my data structure Then the file "data.tar.gz" should not be listed But the file "data.tar.gz" should be listed in the folder "strängé नेपाली folder empty" When I am on the files page - And I move the file "strängé filename (duplicate #2).txt" into the folder "strängé नेपाली folder empty" - Then the file "strängé filename (duplicate #2).txt" should not be listed - But the file "strängé filename (duplicate #2).txt" should be listed in the folder "strängé नेपाली folder empty" + And I move the file "strängé filename (duplicate #2 &).txt" into the folder "strängé नेपाली folder empty" + Then the file "strängé filename (duplicate #2 &).txt" should not be listed + But the file "strängé filename (duplicate #2 &).txt" should be listed in the folder "strängé नेपाली folder empty" @skipOnFIREFOX47+ Scenario: move a file into a folder where a file with the same name already exists When I move the file "data.zip" into the folder "simple-folder" And I move the file "data.zip" into the folder "strängé नेपाली folder" - And I move the file "strängé filename (duplicate #2).txt" into the folder "strängé नेपाली folder" Then notifications should be displayed with the text |Could not move "data.zip", target exists| |Could not move "data.zip", target exists| - |Could not move "strängé filename (duplicate #2).txt", target exists| And the file "data.zip" should be listed - And the file "strängé filename (duplicate #2).txt" should be listed + + @skip @issue-29556 + Scenario: move a file into a folder where a file with the same name already exists + When I move the file "strängé filename (duplicate #2 &).txt" into the folder "strängé नेपाली folder" + Then notifications should be displayed with the text + |Could not move "strängé filename (duplicate #2 &).txt", target exists| + And the file "strängé filename (duplicate #2 &).txt" should be listed @skipOnFIREFOX47+ Scenario: Move multiple files at once diff --git a/tests/ui/features/renameFiles/renameFiles.feature b/tests/ui/features/renameFiles/renameFiles.feature index 6695086e7ec7..3e3eb20709df 100644 --- a/tests/ui/features/renameFiles/renameFiles.feature +++ b/tests/ui/features/renameFiles/renameFiles.feature @@ -27,7 +27,7 @@ So that I can organise my data structure Then the file should be listed Examples: |from_name |to_name | - |"strängé filename (duplicate #2).txt"|"strängé filename (duplicate #3).txt"| + |"strängé filename (duplicate #2 &).txt"|"strängé filename (duplicate #3).txt"| |"'single'quotes.txt" |"single-quotes.txt" | Scenario: Rename a file using special characters and check its existence after page reload diff --git a/tests/ui/features/sharing/shareByPublicLink.feature b/tests/ui/features/sharing/shareByPublicLink.feature index 6e2a15e9e807..cadf65fdc30d 100644 --- a/tests/ui/features/sharing/shareByPublicLink.feature +++ b/tests/ui/features/sharing/shareByPublicLink.feature @@ -28,7 +28,7 @@ So that public sharing is limited according to organization policy | name | | simple-empty-folder | | lorem.txt | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | | zzzz-must-be-last-file-in-folder.txt | Then the deleted elements should not be listed And the deleted elements should not be listed after a page reload diff --git a/tests/ui/features/trashbin/trashbinFilesFolders.feature b/tests/ui/features/trashbin/trashbinFilesFolders.feature index c5211e015712..9a473a886c9b 100644 --- a/tests/ui/features/trashbin/trashbinFilesFolders.feature +++ b/tests/ui/features/trashbin/trashbinFilesFolders.feature @@ -15,7 +15,7 @@ Feature: files and folders exist in the trashbin after being deleted | simple-folder | | lorem.txt | | strängé नेपाली folder | - | strängé filename (duplicate #2).txt | + | strängé filename (duplicate #2 &).txt | Then the deleted elements should be listed in the trashbin And the file "lorem.txt" should be listed in the trashbin folder "simple-folder" diff --git a/tests/ui/features/upload/upload.feature b/tests/ui/features/upload/upload.feature new file mode 100644 index 000000000000..9efb99b431e9 --- /dev/null +++ b/tests/ui/features/upload/upload.feature @@ -0,0 +1,49 @@ +@insulated +Feature: File Upload + +As a user +I would like to be able to upload files via the WebUI +So that I can store files in ownCloud + + Background: + Given these users exist: + |username|password|displayname|email | + |user1 |1234 |User One |u1@oc.com.np| + And I am on the login page + And I login with username "user1" and password "1234" + + Scenario: simple upload of a file that does not exist before + When I upload the file "new-lorem.txt" + Then the file "new-lorem.txt" should be listed + And the content of "new-lorem.txt" should be the same as the local "new-lorem.txt" + + Scenario: upload a new file into a sub folder + When I open the folder "simple-folder" + And I upload the file "new-lorem.txt" + Then the file "new-lorem.txt" should be listed + And the content of "new-lorem.txt" should be the same as the local "new-lorem.txt" + + Scenario: overwrite an existing file + When I upload the file "lorem.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should be the same as the local "lorem.txt" + But the file "lorem (2).txt" should not be listed + + Scenario: keep new and existing file + When I upload the file "lorem.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should not have changed + And the file "lorem (2).txt" should be listed + And the content of "lorem (2).txt" should be the same as the local "lorem.txt" + + Scenario: cancel conflict dialog + When I upload the file "lorem.txt" + And I click the "Cancel" button + Then the file "lorem.txt" should be listed + And the content of "lorem.txt" should not have changed + And the file "lorem (2).txt" should not be listed \ No newline at end of file diff --git a/tests/ui/features/upload/uploadEdgecases.feature b/tests/ui/features/upload/uploadEdgecases.feature new file mode 100644 index 000000000000..86b274499596 --- /dev/null +++ b/tests/ui/features/upload/uploadEdgecases.feature @@ -0,0 +1,90 @@ +@insulated +Feature: File Upload + +As a QA engineer +I would like to test uploads of all kind of funny filenames via the WebUI + +These tests are written in a way that multiple file names are tested in one scenario +that is not academically correct but saves a lot of time + + Background: + Given these users exist: + |username|password|displayname|email | + |user1 |1234 |User One |u1@oc.com.np| + And I am on the login page + And I login with username "user1" and password "1234" + + Scenario: simple upload of a file that does not exist before + When I upload the file "new-'single'quotes.txt" + Then the file "new-'single'quotes.txt" should be listed + And the content of "new-'single'quotes.txt" should be the same as the local "new-'single'quotes.txt" + When I upload the file "new-strängé filename (duplicate #2 &).txt" + Then the file "new-strängé filename (duplicate #2 &).txt" should be listed + And the content of "new-strängé filename (duplicate #2 &).txt" should be the same as the local "new-strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Then the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be listed + And the content of "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be the same as the local "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + + Scenario Outline: upload a new file into a sub folder + When I open the folder + When I upload the file "0" + Then the file "0" should be listed + And the content of "0" should be the same as the local "0" + When I upload the file "new-'single'quotes.txt" + Then the file "new-'single'quotes.txt" should be listed + And the content of "new-'single'quotes.txt" should be the same as the local "new-'single'quotes.txt" + When I upload the file "new-strängé filename (duplicate #2 &).txt" + Then the file "new-strängé filename (duplicate #2 &).txt" should be listed + And the content of "new-strängé filename (duplicate #2 &).txt" should be the same as the local "new-strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Then the file "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be listed + And the content of "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" should be the same as the local "zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt" + Examples: + | folder-to-upload-to | + | "0" | + | "'single'quotes" | + | "strängé नेपाली folder" | + + Scenario: overwrite an existing file + When I upload the file "'single'quotes.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "'single'quotes.txt" should be listed + And the content of "'single'quotes.txt" should be the same as the local "'single'quotes.txt" + When I upload the file "strängé filename (duplicate #2 &).txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "strängé filename (duplicate #2 &).txt" should be listed + And the content of "strängé filename (duplicate #2 &).txt" should be the same as the local "strängé filename (duplicate #2 &).txt" + When I upload the file "zzzz-must-be-last-file-in-folder.txt" + And I choose to keep the new files + And I click the "Continue" button + Then the file "zzzz-must-be-last-file-in-folder.txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder.txt" should be the same as the local "zzzz-must-be-last-file-in-folder.txt" + + Scenario: keep new and existing file + When I upload the file "'single'quotes.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "'single'quotes.txt" should be listed + And the content of "'single'quotes.txt" should not have changed + And the file "'single'quotes (2).txt" should be listed + And the content of "'single'quotes (2).txt" should be the same as the local "'single'quotes.txt" + When I upload the file "strängé filename (duplicate #2 &).txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "strängé filename (duplicate #2 &).txt" should be listed + And the content of "strängé filename (duplicate #2 &).txt" should not have changed + And the file "strängé filename (duplicate #2 &) (2).txt" should be listed + And the content of "strängé filename (duplicate #2 &) (2).txt" should be the same as the local "strängé filename (duplicate #2 &).txt" + + When I upload the file "zzzz-must-be-last-file-in-folder.txt" + And I choose to keep the new files + And I choose to keep the existing files + And I click the "Continue" button + Then the file "zzzz-must-be-last-file-in-folder.txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder.txt" should not have changed + And the file "zzzz-must-be-last-file-in-folder (2).txt" should be listed + And the content of "zzzz-must-be-last-file-in-folder (2).txt" should be the same as the local "zzzz-must-be-last-file-in-folder.txt" \ No newline at end of file diff --git a/tests/ui/filesForUpload/'single'quotes.txt b/tests/ui/filesForUpload/'single'quotes.txt new file mode 100644 index 000000000000..96abcb4f020b --- /dev/null +++ b/tests/ui/filesForUpload/'single'quotes.txt @@ -0,0 +1,9 @@ +a file with a single quote i its name + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/0 b/tests/ui/filesForUpload/0 new file mode 100644 index 000000000000..81f2343500b3 --- /dev/null +++ b/tests/ui/filesForUpload/0 @@ -0,0 +1,9 @@ +a file called "0" + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/data.tar.gz b/tests/ui/filesForUpload/data.tar.gz new file mode 100644 index 000000000000..05c74a335f04 Binary files /dev/null and b/tests/ui/filesForUpload/data.tar.gz differ diff --git a/tests/ui/filesForUpload/data.zip b/tests/ui/filesForUpload/data.zip new file mode 100644 index 000000000000..d79780eada8f Binary files /dev/null and b/tests/ui/filesForUpload/data.zip differ diff --git a/tests/ui/filesForUpload/lorem-big.txt b/tests/ui/filesForUpload/lorem-big.txt new file mode 100644 index 000000000000..7c3df7df5150 --- /dev/null +++ b/tests/ui/filesForUpload/lorem-big.txt @@ -0,0 +1,93 @@ +a big lorem file + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/lorem.txt b/tests/ui/filesForUpload/lorem.txt new file mode 100644 index 000000000000..9d3b7a654c16 --- /dev/null +++ b/tests/ui/filesForUpload/lorem.txt @@ -0,0 +1,7 @@ +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-'single'quotes.txt b/tests/ui/filesForUpload/new-'single'quotes.txt new file mode 100644 index 000000000000..603f2187aaea --- /dev/null +++ b/tests/ui/filesForUpload/new-'single'quotes.txt @@ -0,0 +1,9 @@ +a file with a single quote i its name, but different to the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-data.tar.gz b/tests/ui/filesForUpload/new-data.tar.gz new file mode 100644 index 000000000000..05c74a335f04 Binary files /dev/null and b/tests/ui/filesForUpload/new-data.tar.gz differ diff --git a/tests/ui/filesForUpload/new-data.zip b/tests/ui/filesForUpload/new-data.zip new file mode 100644 index 000000000000..d79780eada8f Binary files /dev/null and b/tests/ui/filesForUpload/new-data.zip differ diff --git a/tests/ui/filesForUpload/new-lorem-big.txt b/tests/ui/filesForUpload/new-lorem-big.txt new file mode 100644 index 000000000000..2c1c631e0308 --- /dev/null +++ b/tests/ui/filesForUpload/new-lorem-big.txt @@ -0,0 +1,93 @@ +a big lorem file but different to the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/new-lorem.txt b/tests/ui/filesForUpload/new-lorem.txt new file mode 100644 index 000000000000..b935db537dd6 --- /dev/null +++ b/tests/ui/filesForUpload/new-lorem.txt @@ -0,0 +1,9 @@ +lorem file that is different from the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git "a/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" "b/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" new file mode 100644 index 000000000000..ac6c70ca53fe --- /dev/null +++ "b/tests/ui/filesForUpload/new-str\303\244ng\303\251 filename (duplicate #2 &).txt" @@ -0,0 +1,9 @@ +a file with funny characters in the file name but different from the original one + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git "a/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" "b/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" new file mode 100644 index 000000000000..a771bf79ea6d --- /dev/null +++ "b/tests/ui/filesForUpload/str\303\244ng\303\251 filename (duplicate #2 &).txt" @@ -0,0 +1,9 @@ +a file with funny characters in the file name + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt b/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt new file mode 100644 index 000000000000..dcc19d17f8a8 --- /dev/null +++ b/tests/ui/filesForUpload/zzzz-must-be-last-file-in-folder.txt @@ -0,0 +1,11 @@ +This must be the last skeleton file in this folder, when sorted alphabetically. +Tests for performing actions on the last file in the folder try to find and use +this file name. + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt b/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt new file mode 100644 index 000000000000..1db21f1fb9be --- /dev/null +++ b/tests/ui/filesForUpload/zzzz-zzzz-will-be-at-the-end-of-the-folder-when-uploaded.txt @@ -0,0 +1,11 @@ +This file has a name so it would be the last after the upload, when sorted alphabetically. +Tests for performing actions on the last file in the folder try to find and use +this file name. + +Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, +totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae +dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, +sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est +qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora +incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum +exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? \ No newline at end of file diff --git a/tests/ui/skeleton/0/for-git-commit b/tests/ui/skeleton/0/for-git-commit new file mode 100644 index 000000000000..86459fd55043 --- /dev/null +++ b/tests/ui/skeleton/0/for-git-commit @@ -0,0 +1 @@ +this file is only here because git does not allow to commit empty folders \ No newline at end of file diff --git "a/tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/folder with space/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/simple-folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/str\303\244ng\303\251 filename (duplicate #2 &).txt" diff --git "a/tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2).txt" "b/tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2 &).txt" similarity index 100% rename from "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2).txt" rename to "tests/ui/skeleton/str\303\244ng\303\251 \340\244\250\340\245\207\340\244\252\340\244\276\340\244\262\340\245\200 folder/str\303\244ng\303\251 filename (duplicate #2 &).txt"