Skip to content

Commit 0c1ece0

Browse files
committed
favorites tests
1 parent 5f7599a commit 0c1ece0

File tree

12 files changed

+786
-531
lines changed

12 files changed

+786
-531
lines changed

tests/acceptance/TestHelpers/GraphHelper.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2445,4 +2445,58 @@ public static function getAllUsers(
24452445
self::getRequestHeaders()
24462446
);
24472447
}
2448+
2449+
/**
2450+
* @param string $baseUrl
2451+
* @param string $xRequestId
2452+
* @param string $user
2453+
* @param string $password
2454+
* @param string $fileId
2455+
*
2456+
* @return ResponseInterface
2457+
* @throws GuzzleException
2458+
*/
2459+
public static function markFavorite(
2460+
string $baseUrl,
2461+
string $xRequestId,
2462+
string $user,
2463+
string $password,
2464+
string $fileId
2465+
): ResponseInterface {
2466+
$url = self::getFullUrl($baseUrl, "me/drive/items/$fileId/follow");
2467+
return HttpRequestHelper::post(
2468+
$url,
2469+
$xRequestId,
2470+
$user,
2471+
$password,
2472+
self::getRequestHeaders()
2473+
);
2474+
}
2475+
2476+
/**
2477+
* @param string $baseUrl
2478+
* @param string $xRequestId
2479+
* @param string $user
2480+
* @param string $password
2481+
* @param string $fileId
2482+
*
2483+
* @return ResponseInterface
2484+
* @throws GuzzleException
2485+
*/
2486+
public static function unmarkFavorite(
2487+
string $baseUrl,
2488+
string $xRequestId,
2489+
string $user,
2490+
string $password,
2491+
string $fileId
2492+
): ResponseInterface {
2493+
$url = self::getFullUrl($baseUrl, "me/drive/following/$fileId");
2494+
return HttpRequestHelper::delete(
2495+
$url,
2496+
$xRequestId,
2497+
$user,
2498+
$password,
2499+
self::getRequestHeaders()
2500+
);
2501+
}
24482502
}

tests/acceptance/bootstrap/FavoritesContext.php

Lines changed: 0 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
use Behat\Behat\Context\Context;
2222
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
2323
use Behat\Gherkin\Node\TableNode;
24-
use Psr\Http\Message\ResponseInterface;
2524
use TestHelpers\WebDavHelper;
2625
use TestHelpers\BehatHelper;
2726

@@ -34,73 +33,6 @@ class FavoritesContext implements Context {
3433
private FeatureContext $featureContext;
3534
private WebDavPropertiesContext $webDavPropertiesContext;
3635

37-
/**
38-
* @param string$user
39-
* @param string $path
40-
* @param string|null $spaceId
41-
*
42-
* @return ResponseInterface
43-
*/
44-
public function userFavoritesElement(string $user, string $path, ?string $spaceId = null): ResponseInterface {
45-
return $this->changeFavStateOfAnElement(
46-
$user,
47-
$path,
48-
1,
49-
$spaceId
50-
);
51-
}
52-
53-
/**
54-
* @When user :user favorites element :path using the WebDAV API
55-
*
56-
* @param string $user
57-
* @param string $path
58-
*
59-
* @return void
60-
*/
61-
public function userFavoritesElementUsingWebDavApi(string $user, string $path): void {
62-
$this->featureContext->setResponse($this->userFavoritesElement($user, $path));
63-
}
64-
65-
/**
66-
* @Given user :user has favorited element :path
67-
*
68-
* @param string $user
69-
* @param string $path
70-
*
71-
* @return void
72-
*/
73-
public function userHasFavoritedElementUsingWebDavApi(string $user, string $path): void {
74-
$this->featureContext->theHTTPStatusCodeShouldBe(207, '', $this->userFavoritesElement($user, $path));
75-
}
76-
77-
/**
78-
* @param string $user
79-
* @param string $path
80-
*
81-
* @return ResponseInterface
82-
*/
83-
public function userUnfavoritesElement(string $user, string $path): ResponseInterface {
84-
return $this->changeFavStateOfAnElement(
85-
$user,
86-
$path,
87-
0,
88-
null,
89-
);
90-
}
91-
92-
/**
93-
* @When user :user unfavorites element :path using the WebDAV API
94-
*
95-
* @param string $user
96-
* @param string $path
97-
*
98-
* @return void
99-
*/
100-
public function userUnfavoritesElementUsingWebDavApi(string $user, string $path): void {
101-
$this->featureContext->setResponse($this->userUnfavoritesElement($user, $path));
102-
}
103-
10436
/**
10537
* @Then /^user "([^"]*)" should (not|)\s?have the following favorited items$/
10638
*
@@ -203,38 +135,6 @@ public function asUserFileShouldNotBeFavorited(string $user, string $path): void
203135
$this->asUserFileOrFolderShouldBeFavorited($user, $path, 0);
204136
}
205137

206-
/**
207-
* Set the elements of a proppatch
208-
*
209-
* @param string $user
210-
* @param string $path
211-
* @param int|null $favOrUnfav 1 = favorite, 0 = unfavorite
212-
* @param string|null $spaceId
213-
*
214-
* @return ResponseInterface
215-
*/
216-
public function changeFavStateOfAnElement(
217-
string $user,
218-
string $path,
219-
?int $favOrUnfav,
220-
?string $spaceId,
221-
): ResponseInterface {
222-
$renamedUser = $this->featureContext->getActualUsername($user);
223-
return WebDavHelper::proppatch(
224-
$this->featureContext->getBaseUrl(),
225-
$renamedUser,
226-
$this->featureContext->getPasswordForUser($user),
227-
$path,
228-
'favorite',
229-
(string)$favOrUnfav,
230-
$this->featureContext->getStepLineRef(),
231-
"oc='http://owncloud.org/ns'",
232-
$this->featureContext->getDavPathVersion(),
233-
'files',
234-
$spaceId
235-
);
236-
}
237-
238138
/**
239139
* This will run before EVERY scenario.
240140
* It will set the properties for this object.

tests/acceptance/bootstrap/GraphContext.php

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3207,4 +3207,133 @@ public function theUserGetsAllUsersUsingTheGraphApi(?string $user = null): void
32073207

32083208
$this->featureContext->setResponse($response);
32093209
}
3210+
3211+
/**
3212+
* @param string $user
3213+
* @param string $itemId
3214+
*
3215+
* @return ResponseInterface
3216+
*/
3217+
public function markFavorite(string $user, string $itemId): ResponseInterface {
3218+
$response = GraphHelper::markFavorite(
3219+
$this->featureContext->getBaseUrl(),
3220+
$this->featureContext->getStepLineRef(),
3221+
$user,
3222+
$this->featureContext->getPasswordForUser($user),
3223+
$itemId
3224+
);
3225+
3226+
$this->featureContext->setResponse($response);
3227+
return $response;
3228+
}
3229+
3230+
/**
3231+
* @param string $user
3232+
* @param string $itemId
3233+
*
3234+
* @return ResponseInterface
3235+
*/
3236+
public function unmarkFavorite(string $user, string $itemId): ResponseInterface {
3237+
$response = GraphHelper::unmarkFavorite(
3238+
$this->featureContext->getBaseUrl(),
3239+
$this->featureContext->getStepLineRef(),
3240+
$user,
3241+
$this->featureContext->getPasswordForUser($user),
3242+
$itemId
3243+
);
3244+
$this->featureContext->setResponse($response);
3245+
return $response;
3246+
}
3247+
3248+
/**
3249+
* @When user :user marks :item :itemName as favorite from space :spaceName using the Graph API
3250+
*
3251+
* @param string $user
3252+
* @param string $item (file|folder)
3253+
* @param string $itemName
3254+
* @param string $spaceName
3255+
*
3256+
* @return void
3257+
*/
3258+
public function userMarksItemFromSpaceAsFavoriteUsingTheGraphApi(
3259+
string $user,
3260+
string $item,
3261+
string $itemName,
3262+
string $spaceName
3263+
): void {
3264+
$itemId = ($item === 'file')
3265+
? $this->spacesContext->getFileId($user, $spaceName, $itemName)
3266+
: $this->spacesContext->getResourceId($user, $spaceName, $itemName);
3267+
$this->markFavorite($user, $itemId);
3268+
}
3269+
3270+
/**
3271+
* @When user :user unmarks :item :itemName as favorite from space :spaceName using the Graph API
3272+
*
3273+
* @param string $user
3274+
* @param string $item (file|folder)
3275+
* @param string $itemName
3276+
* @param string $spaceName
3277+
*
3278+
* @return void
3279+
*/
3280+
public function userUnmarksItemFromSpaceAsFavoriteUsingTheGraphApi(
3281+
string $user,
3282+
string $item,
3283+
string $itemName,
3284+
string $spaceName
3285+
): void {
3286+
$itemId = ($item === 'file')
3287+
? $this->spacesContext->getFileId($user, $spaceName, $itemName)
3288+
: $this->spacesContext->getResourceId($user, $spaceName, $itemName);
3289+
$this->unmarkFavorite($user, $itemId);
3290+
}
3291+
3292+
/**
3293+
* @Given user :user has marked :item :itemName as favorite from space :spaceName
3294+
*
3295+
* @param string $user
3296+
* @param string $item (folder|file)
3297+
* @param string $itemName
3298+
* @param string $spaceName
3299+
*
3300+
* @return void
3301+
*/
3302+
public function userHasMarkedItemFromSpaceAsFavoriteUsingTheGraphApi(
3303+
string $user,
3304+
string $item,
3305+
string $itemName,
3306+
string $spaceName
3307+
): void {
3308+
$itemId = ($item === 'file')
3309+
? $this->spacesContext->getFileId($user, $spaceName, $itemName)
3310+
: $this->spacesContext->getResourceId($user, $spaceName, $itemName);
3311+
3312+
$response = $this->markFavorite($user, $itemId);
3313+
$this->featureContext->theHTTPStatusCodeShouldBe(201, '', $response);
3314+
}
3315+
3316+
/**
3317+
* @Given user :user has unmarked :item :itemName as favorite from space :spaceName
3318+
*
3319+
* @param string $user
3320+
* @param string $item (folder|file)
3321+
* @param string $itemName
3322+
* @param string $spaceName
3323+
*
3324+
* @return void
3325+
*/
3326+
public function userHasUnmarkedItemFromSpaceAsFavoriteUsingTheGraphApi(
3327+
string $user,
3328+
string $item,
3329+
string $itemName,
3330+
string $spaceName
3331+
): void {
3332+
$itemId = ($item === 'file')
3333+
? $this->spacesContext->getFileId($user, $spaceName, $itemName)
3334+
: $this->spacesContext->getResourceId($user, $spaceName, $itemName);
3335+
3336+
$response = $this->unmarkFavorite($user, $itemId);
3337+
$this->featureContext->theHTTPStatusCodeShouldBe(204, '', $response);
3338+
}
32103339
}

tests/acceptance/config/behat.yml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -492,17 +492,6 @@ default:
492492
- FeatureContext: *common_feature_context_params
493493
- CapabilitiesContext:
494494

495-
coreApiFavorites:
496-
paths:
497-
- "%paths.base%/../features/coreApiFavorites"
498-
context: *common_ldap_suite_context
499-
contexts:
500-
- FeatureContext: *common_feature_context_params
501-
- SpacesContext:
502-
- FavoritesContext:
503-
- WebDavPropertiesContext:
504-
- SharingNgContext:
505-
506495
coreApiShareCreateSpecialToShares1:
507496
paths:
508497
- "%paths.base%/../features/coreApiShareCreateSpecialToShares1"

tests/acceptance/expected-failures-decomposed-storage.md

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -268,27 +268,6 @@ _ocdav: api compatibility, return correct status code_
268268
- [coreApiAuth/webDavLOCKAuth.feature:46](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiAuth/webDavLOCKAuth.feature#L46)
269269
- [coreApiAuth/webDavLOCKAuth.feature:58](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiAuth/webDavLOCKAuth.feature#L58)
270270

271-
#### [Support for favorites](https://github.com/owncloud/ocis/issues/1228)
272-
273-
- [coreApiFavorites/favorites.feature:101](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L101)
274-
- [coreApiFavorites/favorites.feature:102](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L102)
275-
- [coreApiFavorites/favorites.feature:103](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L103)
276-
- [coreApiFavorites/favorites.feature:124](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L124)
277-
- [coreApiFavorites/favorites.feature:125](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L125)
278-
- [coreApiFavorites/favorites.feature:126](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L126)
279-
- [coreApiFavorites/favorites.feature:189](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L189)
280-
- [coreApiFavorites/favorites.feature:190](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L190)
281-
- [coreApiFavorites/favorites.feature:191](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L191)
282-
- [coreApiFavorites/favorites.feature:145](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L145)
283-
- [coreApiFavorites/favorites.feature:146](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L146)
284-
- [coreApiFavorites/favorites.feature:147](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L147)
285-
- [coreApiFavorites/favorites.feature:174](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L174)
286-
- [coreApiFavorites/favorites.feature:175](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L175)
287-
- [coreApiFavorites/favorites.feature:176](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L176)
288-
- [coreApiFavorites/favoritesSharingToShares.feature:91](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L91)
289-
- [coreApiFavorites/favoritesSharingToShares.feature:92](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L92)
290-
- [coreApiFavorites/favoritesSharingToShares.feature:93](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L93)
291-
292271
#### [WWW-Authenticate header for unauthenticated requests is not clear](https://github.com/owncloud/ocis/issues/2285)
293272

294273
- [coreApiWebdavOperations/refuseAccess.feature:21](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiWebdavOperations/refuseAccess.feature#L21)

tests/acceptance/expected-failures-posix-storage.md

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -268,31 +268,6 @@ _ocdav: api compatibility, return correct status code_
268268
- [coreApiAuth/webDavLOCKAuth.feature:46](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiAuth/webDavLOCKAuth.feature#L46)
269269
- [coreApiAuth/webDavLOCKAuth.feature:58](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiAuth/webDavLOCKAuth.feature#L58)
270270

271-
#### [Support for favorites](https://github.com/owncloud/ocis/issues/1228)
272-
273-
- [coreApiFavorites/favorites.feature:101](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L101)
274-
- [coreApiFavorites/favorites.feature:102](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L102)
275-
- [coreApiFavorites/favorites.feature:103](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L103)
276-
- [coreApiFavorites/favorites.feature:124](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L124)
277-
- [coreApiFavorites/favorites.feature:125](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L125)
278-
- [coreApiFavorites/favorites.feature:126](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L126)
279-
- [coreApiFavorites/favorites.feature:189](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L189)
280-
- [coreApiFavorites/favorites.feature:190](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L190)
281-
- [coreApiFavorites/favorites.feature:191](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L191)
282-
- [coreApiFavorites/favorites.feature:145](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L145)
283-
- [coreApiFavorites/favorites.feature:146](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L146)
284-
- [coreApiFavorites/favorites.feature:147](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L147)
285-
- [coreApiFavorites/favorites.feature:174](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L174)
286-
- [coreApiFavorites/favorites.feature:175](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L175)
287-
- [coreApiFavorites/favorites.feature:176](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favorites.feature#L176)
288-
- [coreApiFavorites/favoritesSharingToShares.feature:91](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L91)
289-
- [coreApiFavorites/favoritesSharingToShares.feature:92](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L92)
290-
- [coreApiFavorites/favoritesSharingToShares.feature:93](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L93)
291-
- [coreApiFavorites/favoritesSharingToShares.feature:112](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L112)
292-
- [coreApiFavorites/favoritesSharingToShares.feature:113](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L113)
293-
- [coreApiFavorites/favoritesSharingToShares.feature:114](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/coreApiFavorites/favoritesSharingToShares.feature#L114)
294-
- [apiSpacesShares/favorite.feature:56](https://github.com/opencloud-eu/opencloud/blob/main/tests/acceptance/features/apiSpacesShares/favorite.feature#L56)
295-
296271

297272

298273
#### [WWW-Authenticate header for unauthenticated requests is not clear](https://github.com/owncloud/ocis/issues/2285)

0 commit comments

Comments
 (0)