mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-03 19:00:05 -06:00
Removed occ related codes
This commit is contained in:
@@ -464,16 +464,7 @@ class SetupHelper extends \PHPUnit\Framework\Assert {
|
||||
"readSkeletonFile"
|
||||
);
|
||||
|
||||
//find the absolute path of the currently set skeletondirectory
|
||||
$occResponse = ['code' => '', 'stdOut' => '', 'stdErr' => '' ];
|
||||
if ((int) $occResponse['code'] !== 0) {
|
||||
throw new \Exception(
|
||||
"could not get current skeletondirectory. " . $occResponse['stdErr']
|
||||
);
|
||||
}
|
||||
$skeletonRoot = \trim($occResponse['stdOut']);
|
||||
|
||||
$fileInSkeletonFolder = \rawurlencode("$skeletonRoot/$fileInSkeletonFolder");
|
||||
$fileInSkeletonFolder = \rawurlencode("/$fileInSkeletonFolder");
|
||||
$response = OcsApiHelper::sendRequest(
|
||||
$baseUrl,
|
||||
$adminUsername,
|
||||
@@ -492,22 +483,4 @@ class SetupHelper extends \PHPUnit\Framework\Assert {
|
||||
$localContent = \urldecode($localContent);
|
||||
return $localContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds all lines containing the given text
|
||||
*
|
||||
* @param string|null $input stdout or stderr output
|
||||
* @param string|null $text text to search for
|
||||
*
|
||||
* @return array array of lines that matched
|
||||
*/
|
||||
public static function findLines(?string $input, ?string $text):array {
|
||||
$results = [];
|
||||
foreach (\explode("\n", $input) as $line) {
|
||||
if (\strpos($line, $text) !== false) {
|
||||
$results[] = $line;
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,28 +44,11 @@ class AuthContext implements Context {
|
||||
*/
|
||||
private $appTokens;
|
||||
|
||||
/**
|
||||
* @var boolean
|
||||
*/
|
||||
private $tokenAuthHasBeenSet = false;
|
||||
|
||||
/**
|
||||
* @var FeatureContext
|
||||
*/
|
||||
private $featureContext;
|
||||
|
||||
/**
|
||||
* @var string 'true' or 'false' or ''
|
||||
*/
|
||||
private $tokenAuthHasBeenSetTo = '';
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getTokenAuthHasBeenSetTo():string {
|
||||
return $this->tokenAuthHasBeenSetTo;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the client token that was last generated
|
||||
* app acceptance tests that have their own step code may need to use this
|
||||
@@ -1083,32 +1066,6 @@ class AuthContext implements Context {
|
||||
$this->aNewBrowserSessionForHasBeenStarted($admin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @When /^the administrator (enforces|does not enforce)\s?token auth$/
|
||||
* @Given /^token auth has (not|)\s?been enforced$/
|
||||
*
|
||||
* @param string $hasOrNot
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function tokenAuthHasBeenEnforced(string $hasOrNot):void {
|
||||
$enforce = (($hasOrNot !== "not") && ($hasOrNot !== "does not enforce"));
|
||||
if ($enforce) {
|
||||
$value = 'true';
|
||||
} else {
|
||||
$value = 'false';
|
||||
}
|
||||
$occStatus = ['code' => '', 'stdOut' => '', 'stdErr' => '' ];
|
||||
if ($occStatus['code'] !== "0") {
|
||||
throw new \Exception("setSystemConfig token_auth_enforced returned error code " . $occStatus['code']);
|
||||
}
|
||||
|
||||
// Remember that we set this value, so it can be removed after the scenario
|
||||
$this->tokenAuthHasBeenSet = true;
|
||||
$this->tokenAuthHasBeenSetTo = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return string
|
||||
@@ -1119,22 +1076,6 @@ class AuthContext implements Context {
|
||||
return $this->appToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* delete token_auth_enforced if it was set in the scenario
|
||||
*
|
||||
* @AfterScenario
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function deleteTokenAuthEnforcedAfterScenario():void {
|
||||
if ($this->tokenAuthHasBeenSet) {
|
||||
$this->tokenAuthHasBeenSet = false;
|
||||
$this->tokenAuthHasBeenSetTo = '';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When user :user requests :endpoint with :method without retrying
|
||||
*
|
||||
|
||||
@@ -301,29 +301,11 @@ class FeatureContext extends BehatVariablesContext {
|
||||
*/
|
||||
public $appConfigurationContext;
|
||||
|
||||
/**
|
||||
* @var array saved configuration of the system before test runs as reported
|
||||
* by occ config:list
|
||||
*/
|
||||
private $savedConfigList = [];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $initialTrustedServer;
|
||||
|
||||
/**
|
||||
* @var int return code of last command
|
||||
*/
|
||||
private $occLastCode;
|
||||
/**
|
||||
* @var string stdout of last command
|
||||
*/
|
||||
private $lastStdOut;
|
||||
/**
|
||||
* @var string stderr of last command
|
||||
*/
|
||||
private $lastStdErr;
|
||||
/**
|
||||
* The codes are stored as strings, even though they are numbers
|
||||
*
|
||||
@@ -379,22 +361,6 @@ class FeatureContext extends BehatVariablesContext {
|
||||
return $this->oCSelector;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function resetOccLastCode(): void {
|
||||
$this->occLastCode = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $statusCode
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setOccLastCode(?int $statusCode = null): void {
|
||||
$this->occLastCode = $statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $httpStatusCode
|
||||
*
|
||||
@@ -1057,47 +1023,6 @@ class FeatureContext extends BehatVariablesContext {
|
||||
return $this->stepLineRef;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the exit status of the last occ command
|
||||
* app acceptance tests that have their own step code may need to process this
|
||||
*
|
||||
* @return int exit status code of the last occ command
|
||||
*/
|
||||
public function getExitStatusCodeOfOccCommand(): ?int {
|
||||
return $this->occLastCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the normal output of the last occ command
|
||||
* app acceptance tests that have their own step code may need to process this
|
||||
*
|
||||
* @return string normal output of the last occ command
|
||||
*/
|
||||
public function getStdOutOfOccCommand(): string {
|
||||
return $this->lastStdOut;
|
||||
}
|
||||
|
||||
/**
|
||||
* set the normal output of the last occ command
|
||||
*
|
||||
* @param string $stdOut
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setStdOutOfOccCommand(string $stdOut): void {
|
||||
$this->lastStdOut = $stdOut;
|
||||
}
|
||||
|
||||
/**
|
||||
* get the error output of the last occ command
|
||||
* app acceptance tests that have their own step code may need to process this
|
||||
*
|
||||
* @return string error output of the last occ command
|
||||
*/
|
||||
public function getStdErrOfOccCommand(): string {
|
||||
return $this->lastStdErr;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the base URL without any sub-path e.g. http://localhost:8080
|
||||
* of the base URL http://localhost:8080/owncloud
|
||||
@@ -2498,25 +2423,6 @@ class FeatureContext extends BehatVariablesContext {
|
||||
$this->setResponse($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given the administrator has created a file :path in temporary storage with the last exported content using the testing API
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function theAdministratorHasCreatedAFileInTemporaryStorageWithLastExportedContent(
|
||||
string $path
|
||||
): void {
|
||||
$commandOutput = $this->getStdOutOfOccCommand();
|
||||
$this->copyContentToFileInTemporaryStorageOnSystemUnderTest($path, $commandOutput);
|
||||
$this->theFileWithContentShouldExistInTheServerRoot(
|
||||
TEMPORARY_STORAGE_DIR_ON_REMOTE_SERVER . "/$path",
|
||||
$commandOutput
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given the administrator has created file :path with content :content in local storage :mountPoint
|
||||
*
|
||||
@@ -3944,46 +3850,6 @@ class FeatureContext extends BehatVariablesContext {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find exception texts in stderr
|
||||
*
|
||||
* @return array of exception texts
|
||||
*/
|
||||
public function findExceptions(): array {
|
||||
$exceptions = [];
|
||||
$captureNext = false;
|
||||
// the exception text usually appears after an "[Exception]" row
|
||||
foreach (\explode("\n", $this->lastStdErr) as $line) {
|
||||
if (\preg_match('/\[Exception\]/', $line)) {
|
||||
$captureNext = true;
|
||||
continue;
|
||||
}
|
||||
if ($captureNext) {
|
||||
$exceptions[] = \trim($line);
|
||||
$captureNext = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $exceptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* remember the result of the last occ command
|
||||
*
|
||||
* @param string[] $result associated array with "code", "stdOut", "stdErr"
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setResultOfOccCommand(array $result): void {
|
||||
Assert::assertIsArray($result);
|
||||
Assert::assertArrayHasKey('code', $result);
|
||||
Assert::assertArrayHasKey('stdOut', $result);
|
||||
Assert::assertArrayHasKey('stdErr', $result);
|
||||
$this->occLastCode = (int)$result['code'];
|
||||
$this->lastStdOut = $result['stdOut'];
|
||||
$this->lastStdErr = $result['stdErr'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sourceUser
|
||||
* @param string $targetUser
|
||||
|
||||
@@ -493,7 +493,6 @@ trait Provisioning {
|
||||
*/
|
||||
public function userHasBeenCreatedWithDefaultAttributesAndWithoutSkeletonFiles(string $user):void {
|
||||
$this->userHasBeenCreatedWithDefaultAttributes($user);
|
||||
$this->resetOccLastCode();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -757,59 +756,6 @@ trait Provisioning {
|
||||
$this->ldapCreatedGroups[] = $group;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param string $configId
|
||||
* @param string $configKey
|
||||
* @param string $configValue
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function setLdapSetting(string $configId, string $configKey, string $configValue):void {
|
||||
if ($configValue === "") {
|
||||
$configValue = "''";
|
||||
}
|
||||
$substitutions = [
|
||||
[
|
||||
"code" => "%ldap_host_without_scheme%",
|
||||
"function" => [
|
||||
$this,
|
||||
"getLdapHostWithoutScheme"
|
||||
],
|
||||
"parameter" => []
|
||||
],
|
||||
[
|
||||
"code" => "%ldap_host%",
|
||||
"function" => [
|
||||
$this,
|
||||
"getLdapHost"
|
||||
],
|
||||
"parameter" => []
|
||||
],
|
||||
[
|
||||
"code" => "%ldap_port%",
|
||||
"function" => [
|
||||
$this,
|
||||
"getLdapPort"
|
||||
],
|
||||
"parameter" => []
|
||||
]
|
||||
];
|
||||
$configValue = $this->substituteInLineCodes(
|
||||
$configValue,
|
||||
null,
|
||||
[],
|
||||
$substitutions
|
||||
);
|
||||
$occResult = ['code' => '', 'stdOut' => '', 'stdErr' => '' ];
|
||||
if ($occResult['code'] !== "0") {
|
||||
throw new Exception(
|
||||
__METHOD__ . " could not set LDAP setting " . $occResult['stdErr']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes LDAP users|groups created during test
|
||||
*
|
||||
@@ -5545,8 +5491,6 @@ trait Provisioning {
|
||||
* @throws Exception
|
||||
*/
|
||||
public function afterScenario():void {
|
||||
$this->waitForDavRequestsToFinish();
|
||||
|
||||
if ($this->someUsersHaveBeenCreated()) {
|
||||
foreach ($this->getCreatedUsers() as $user) {
|
||||
OcisHelper::deleteRevaUserData($user["actualUsername"]);
|
||||
@@ -5586,7 +5530,6 @@ trait Provisioning {
|
||||
* @throws Exception
|
||||
*/
|
||||
public function cleanupDatabaseUsers():void {
|
||||
$this->authContext->deleteTokenAuthEnforcedAfterScenario();
|
||||
$previousServer = $this->currentServer;
|
||||
$this->usingServer('LOCAL');
|
||||
foreach ($this->createdUsers as $user => $userData) {
|
||||
@@ -5605,7 +5548,6 @@ trait Provisioning {
|
||||
* @throws Exception
|
||||
*/
|
||||
public function cleanupDatabaseGroups():void {
|
||||
$this->authContext->deleteTokenAuthEnforcedAfterScenario();
|
||||
$previousServer = $this->currentServer;
|
||||
$this->usingServer('LOCAL');
|
||||
foreach ($this->createdGroups as $group => $groupData) {
|
||||
|
||||
@@ -79,13 +79,6 @@ trait WebDav {
|
||||
|
||||
private $previousAsyncSetting = null;
|
||||
|
||||
private $previousDavSlowdownSetting = null;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $currentDavSlowdownSettingSeconds = 0;
|
||||
|
||||
/**
|
||||
* response content parsed from XML to an array
|
||||
*
|
||||
@@ -573,45 +566,6 @@ trait WebDav {
|
||||
$this->httpRequestTimeout = (int) $timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given the :method DAV requests are slowed down by :seconds seconds
|
||||
*
|
||||
* @param string $method
|
||||
* @param int $seconds
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function slowdownDavRequests(string $method, int $seconds):void {
|
||||
if ($this->previousDavSlowdownSetting === null) {
|
||||
$previousDavSlowdownSetting = ['code' => '', 'stdOut' => '', 'stdErr' => '' ]['stdOut'];
|
||||
$this->previousDavSlowdownSetting = \trim($previousDavSlowdownSetting);
|
||||
}
|
||||
OcsApiHelper::sendRequest(
|
||||
$this->getBaseUrl(),
|
||||
$this->getAdminUsername(),
|
||||
$this->getAdminPassword(),
|
||||
"PUT",
|
||||
"/apps/testing/api/v1/davslowdown/$method/$seconds",
|
||||
$this->getStepLineRef()
|
||||
);
|
||||
$this->currentDavSlowdownSettingSeconds = $seconds;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for possible slowed-down DAV requests to finish
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function waitForDavRequestsToFinish():void {
|
||||
if ($this->currentDavSlowdownSettingSeconds > 0) {
|
||||
// There could be a slowed-down request still happening on the server
|
||||
// Wait just-in-case so that we do not accidentally have an effect on
|
||||
// the next scenario.
|
||||
\sleep($this->currentDavSlowdownSettingSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $user
|
||||
* @param string $fileDestination
|
||||
|
||||
@@ -131,58 +131,6 @@ Feature: delete file/folder
|
||||
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
|
||||
Then the HTTP status code of responses on all endpoints should be "401"
|
||||
|
||||
@issue-ocis-reva-60
|
||||
Scenario: send DELETE requests to webDav endpoints using token authentication should not work
|
||||
Given token auth has been enforced
|
||||
And a new browser session for "Alice" has been started
|
||||
And the user has generated a new app password named "my-client"
|
||||
When the user requests these endpoints with "DELETE" using the generated app password about user "Alice"
|
||||
| endpoint |
|
||||
| /remote.php/webdav/textfile0.txt |
|
||||
| /remote.php/dav/files/%username%/textfile0.txt |
|
||||
| /remote.php/webdav/PARENT |
|
||||
| /remote.php/dav/files/%username%/PARENT |
|
||||
| /remote.php/dav/files/%username%/PARENT/parent.txt |
|
||||
Then the HTTP status code of responses on all endpoints should be "401"
|
||||
|
||||
@issue-ocis-reva-60 @skipOnOcV10 @personalSpace
|
||||
Scenario: send DELETE requests to webDav endpoints using token authentication should not work using the spaces WebDAV API
|
||||
Given token auth has been enforced
|
||||
And a new browser session for "Alice" has been started
|
||||
And the user has generated a new app password named "my-client"
|
||||
When the user requests these endpoints with "DELETE" using the generated app password about user "Alice"
|
||||
| endpoint |
|
||||
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
|
||||
| /remote.php/dav/spaces/%spaceid%/PARENT |
|
||||
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
|
||||
Then the HTTP status code of responses on all endpoints should be "401"
|
||||
|
||||
@issue-ocis-reva-60
|
||||
Scenario: send DELETE requests to webDav endpoints using app password token as password
|
||||
Given token auth has been enforced
|
||||
And a new browser session for "Alice" has been started
|
||||
And the user has generated a new app password named "my-client"
|
||||
When the user "Alice" requests these endpoints with "DELETE" using basic auth and generated app password about user "Alice"
|
||||
| endpoint |
|
||||
| /remote.php/webdav/textfile0.txt |
|
||||
| /remote.php/dav/files/%username%/textfile1.txt |
|
||||
| /remote.php/dav/files/%username%/PARENT/parent.txt |
|
||||
| /remote.php/webdav/PARENT |
|
||||
| /remote.php/dav/files/%username%/FOLDER |
|
||||
Then the HTTP status code of responses on all endpoints should be "204"
|
||||
|
||||
@issue-ocis-reva-60 @skipOnOcV10 @personalSpace
|
||||
Scenario: send DELETE requests to webDav endpoints using app password token as password using the spaces WebDAV API
|
||||
Given token auth has been enforced
|
||||
And a new browser session for "Alice" has been started
|
||||
And the user has generated a new app password named "my-client"
|
||||
When the user "Alice" requests these endpoints with "DELETE" using basic auth and generated app password about user "Alice"
|
||||
| endpoint |
|
||||
| /remote.php/dav/spaces/%spaceid%/textfile0.txt |
|
||||
| /remote.php/dav/spaces/%spaceid%/PARENT |
|
||||
| /remote.php/dav/spaces/%spaceid%/PARENT/parent.txt |
|
||||
Then the HTTP status code of responses on all endpoints should be "204"
|
||||
|
||||
@skipOnOcV10
|
||||
Scenario: send DELETE requests to webDav endpoints with body as normal user
|
||||
When user "Alice" requests these endpoints with "DELETE" including body "doesnotmatter" about user "Alice"
|
||||
|
||||
Reference in New Issue
Block a user