added test scenario for searching inside particular folder only
This commit is contained in:
@@ -147,3 +147,24 @@ Feature: full text search
|
|||||||
| old |
|
| old |
|
||||||
| new |
|
| new |
|
||||||
| spaces |
|
| 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 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 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 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 $user
|
||||||
* @param string $pattern
|
* @param string $pattern
|
||||||
* @param string|null $limit
|
* @param string|null $limit
|
||||||
|
* @param string|null $scope
|
||||||
* @param TableNode|null $properties
|
* @param TableNode|null $properties
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function userSearchesUsingWebDavAPI(
|
public function userSearchesUsingWebDavAPI(
|
||||||
string $user,
|
string $user,
|
||||||
string $pattern,
|
string $pattern,
|
||||||
?string $limit = null,
|
?string $limit = null,
|
||||||
|
?string $scope = null,
|
||||||
TableNode $properties = null
|
TableNode $properties = null
|
||||||
):void {
|
):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.
|
// 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
|
$body
|
||||||
= "<?xml version='1.0' encoding='utf-8' ?>\n" .
|
= "<?xml version='1.0' encoding='utf-8' ?>\n" .
|
||||||
" <oc:search-files xmlns:a='DAV:' xmlns:oc='http://owncloud.org/ns' >\n" .
|
" <oc:search-files xmlns:a='DAV:' xmlns:oc='http://owncloud.org/ns' >\n" .
|
||||||
" <oc:search>\n" .
|
" <oc:search>\n";
|
||||||
" <oc:pattern>$pattern</oc:pattern>\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) {
|
if ($limit !== null) {
|
||||||
$body .= " <oc:limit>$limit</oc:limit>\n";
|
$body .= " <oc:limit>$limit</oc:limit>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user