[test-only] ApiTest. search by date (#7310)

* add search test

* comment out failed test

* deleted cases

* Delete tests/ban.txt
This commit is contained in:
Viktor Scharf
2023-09-21 17:17:28 +02:00
committed by GitHub
parent 8f262c1dff
commit c62d19cf32
5 changed files with 99 additions and 3 deletions
+2
View File
@@ -207,6 +207,8 @@ default:
- OCSContext:
- TrashbinContext:
- TagContext:
- SpacesTUSContext:
- TUSContext:
apiReshare:
paths:
@@ -0,0 +1,64 @@
Feature: date search
As a user
I want to do search resources by date
Background:
Given user "Alice" has been created with default attributes and without skeleton files
Scenario Outline: search resources using different dav path
Given using <dav-path-version> DAV path
And user "Alice" has created folder "uploadFolder"
When user "Alice" searches for 'Mtime:"today"' using the WebDAV API
And the search result of user "Alice" should contain these entries:
| /uploadFolder |
Examples:
| dav-path-version |
| old |
| new |
| spaces |
Scenario Outline: search resources using different search patterns (KQL feature) in the personal space
Given user "Alice" uploads a file "filesForUpload/textfile.txt" to "/today.txt" with mtime "today" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/yesterday.txt" with mtime "yesterday" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/lastWeek.txt" with mtime "lastWeek" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/lastMonth.txt" with mtime "lastMonth" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/lastYear.txt" with mtime "lastYear" via TUS inside of the space "Personal" using the WebDAV API
And using spaces DAV path
When user "Alice" searches for '<pattern>' using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Alice" should contain these entries:
| <search-result-1> |
| <search-result-2> |
But the search result of user "Alice" should not contain these entries:
| <search-result-3> |
| <search-result-4> |
Examples:
| pattern | search-result-1 | search-result-2 | search-result-3 | search-result-4 |
| Mtime:today | /today.txt | | /yesterday.txt | /lastWeek.txt |
| Mtime:yesterday | /yesterday.txt | | /today.txt | |
| Mtime:"this week" | /today.txt | | /lastWeek.txt | /lastMont.txt |
| Mtime:"this month" | /today.txt | | /lastMont.txt | |
| Mtime:"last month" | /lastMonth.txt | | /today.txt | |
| Mtime:"this year" | /today.txt | | /lastYear.txt | |
| Mtime:"last year" | /lastYear.txt | | /today.txt | |
| Mtime>=$today | /today.txt | | /yesterday.txt | |
| Mtime>$yesterday | /today.txt | | | |
| Mtime>=$yesterday | /today.txt | /yesterday.txt | | |
# Mtime<$today. "<" has to be escaped
| Mtime&lt;$today | /yesterday.txt | /lastYear.txt | /today.txt | |
Scenario: search resources using different search patterns (KQL feature) in the shares folder
Given user "Brian" has been created with default attributes and without skeleton files
And using spaces DAV path
And user "Alice" has created folder "sharedFolder"
And user "Alice" uploads a file "filesForUpload/textfile.txt" to "/sharedFolder/yesterday.txt" with mtime "yesterday" via TUS inside of the space "Personal" using the WebDAV API
And user "Alice" has shared folder "/sharedFolder" with user "Brian"
And user "Brian" has accepted share "/sharedFolder" offered by user "Alice"
When user "Brian" searches for "Mtime:yesterday" using the WebDAV API
Then the HTTP status code should be "207"
And the search result of user "Brian" should contain these entries:
| sharedFolder/yesterday.txt |
But the search result of user "Alice" should not contain these entries:
| sharedFolder |
@@ -266,12 +266,10 @@ Feature: tag search
| tag:(mathe klass10) | 2 | /exercises | /answers |
| tag:klass10 AND tag:chemi | 1 | /answers | |
| tag:chemi OR tag:physik | 2 | /exercises | /answers |
# why we need use quotes? it'll be fixed in future. Actual: search result gives all user content
#| (tag:klass10) NOT tag:physik | 2 | /answers | verification work |
| (tag:klass10) NOT tag:physik | 2 | /answers | verification work |
| (tag:(mathe klass10)) NOT tag:chemi | 1 | /exercises | |
| (tag:mathe OR tag:klass10) NOT tag:physik | 2 | /answers | /verification work |
| tag:mathe NOT name:exercises | 1 | /answers | |
| tag:mathe AND NOT name:exercises | 1 | /answers | |
# The third finding is the personal space itself
| NOT tag:mathe | 3 | /verification work | /withoutTagFolder |
@@ -64,6 +64,19 @@ class SearchContext implements Context {
$user = $this->featureContext->getActualUsername($user);
$baseUrl = $this->featureContext->getBaseUrl();
$password = $this->featureContext->getPasswordForUser($user);
if (str_contains($pattern, '$')) {
$date = explode("$", $pattern);
switch ($date[1]) {
case "today":
$pattern = $date[0] . date('Y-m-d', strtotime('today'));
break;
case "yesterday":
$pattern = $date[0] . date('Y-m-d', strtotime('yesterday'));
break;
default:
throw new Exception("cannot convert the date");
}
}
$body
= "<?xml version='1.0' encoding='utf-8' ?>\n" .
" <oc:search-files xmlns:a='DAV:' xmlns:oc='http://owncloud.org/ns' >\n" .
@@ -195,6 +195,25 @@ class SpacesTUSContext implements Context {
string $mtime,
string $spaceName
): void {
switch ($mtime) {
case "today":
$mtime = date('Y-m-d', strtotime('today'));
break;
case "yesterday":
$mtime = date('Y-m-d', strtotime('yesterday'));
break;
case "lastWeek":
$mtime = date('Y-m-d', strtotime('-7 days'));
break;
case "lastMonth":
$mtime = date('Y-m' . '-01', strtotime('-1 month'));
break;
case "lastYear":
$mtime = date('Y-m' . '-01', strtotime('-1 year'));
break;
default:
$mtime;
}
$this->spacesContext->setSpaceIDByName($user, $spaceName);
$this->tusContext->userUploadsFileWithContentToWithMtimeUsingTUS($user, $source, $destination, $mtime);
}