mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-30 17:00:57 -06:00
Merge pull request #6949 from owncloud/search-inside-current-folder
[tests-only][full-ci] added test scenario for searching inside current folder in personal space
This commit is contained in:
@@ -147,3 +147,24 @@ Feature: full text search
|
||||
| old |
|
||||
| new |
|
||||
| spaces |
|
||||
|
||||
|
||||
Scenario Outline: search files inside the folder
|
||||
Given using <dav-path-version> DAV path
|
||||
And user "Alice" has uploaded file with content "hello world inside root" to "file1.txt"
|
||||
And user "Alice" has created folder "/Folder"
|
||||
And user "Alice" has uploaded file with content "hello world inside folder" to "/Folder/file2.txt"
|
||||
And user "Alice" has created folder "/Folder/SubFolder"
|
||||
And user "Alice" has uploaded file with content "hello world inside sub-folder" to "/Folder/SubFolder/file3.txt"
|
||||
When user "Alice" searches for "file" inside folder "/Folder" using the WebDAV API
|
||||
Then the HTTP status code should be "207"
|
||||
And the search result of user "Alice" should contain only these entries:
|
||||
| file2.txt |
|
||||
| file3.txt |
|
||||
But the search result of user "Alice" should not contain these entries:
|
||||
| file1.txt |
|
||||
Examples:
|
||||
| dav-path-version |
|
||||
| old |
|
||||
| new |
|
||||
| spaces |
|
||||
|
||||
@@ -39,18 +39,21 @@ class SearchContext implements Context {
|
||||
* @When user :user searches for :pattern and limits the results to :limit items using the WebDAV API
|
||||
* @When user :user searches for :pattern using the WebDAV API requesting these properties:
|
||||
* @When user :user searches for :pattern and limits the results to :limit items using the WebDAV API requesting these properties:
|
||||
* @When user :user searches for :pattern inside folder :scope using the WebDAV API
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $pattern
|
||||
* @param string|null $limit
|
||||
* @param string|null $scope
|
||||
* @param TableNode|null $properties
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function userSearchesUsingWebDavAPI(
|
||||
string $user,
|
||||
string $pattern,
|
||||
?string $limit = null,
|
||||
string $user,
|
||||
string $pattern,
|
||||
?string $limit = null,
|
||||
?string $scope = null,
|
||||
TableNode $properties = null
|
||||
):void {
|
||||
// Because indexing of newly uploaded files or directories with ocis is decoupled and occurs asynchronously, a short wait is necessary before searching files or folders.
|
||||
@@ -62,8 +65,17 @@ class SearchContext implements Context {
|
||||
$body
|
||||
= "<?xml version='1.0' encoding='utf-8' ?>\n" .
|
||||
" <oc:search-files xmlns:a='DAV:' xmlns:oc='http://owncloud.org/ns' >\n" .
|
||||
" <oc:search>\n" .
|
||||
" <oc:pattern>$pattern</oc:pattern>\n";
|
||||
" <oc:search>\n";
|
||||
if ($scope !== null) {
|
||||
$scope = \trim($scope, "/");
|
||||
if ($this->featureContext->getDavPathVersion() === 3) {
|
||||
$rootPath = $this->featureContext->getPersonalSpaceIdForUser($user);
|
||||
} else {
|
||||
$rootPath = $this->featureContext->getUserIdByUserName($user);
|
||||
}
|
||||
$pattern .= " scope:$rootPath/$scope";
|
||||
}
|
||||
$body .= "<oc:pattern>$pattern</oc:pattern>\n";
|
||||
if ($limit !== null) {
|
||||
$body .= " <oc:limit>$limit</oc:limit>\n";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user