mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-04 06:03:26 -04:00
add test for template
This commit is contained in:
@@ -355,4 +355,79 @@ class CollaborationContext implements Context {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then the app list response should contain the following information:
|
||||
*
|
||||
* @param TableNode $table
|
||||
*
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function theAppListResponseShouldContainTheFollowingInformation(TableNode $table): void {
|
||||
$responseArray = $this->featureContext->getJsonDecodedResponse($this->featureContext->getResponse());
|
||||
|
||||
if (!isset($responseArray['mime-types'])) {
|
||||
throw new Exception(__METHOD__ . "The response does not contain a 'mime-types' key.");
|
||||
}
|
||||
|
||||
$mimeTypes = $responseArray['mime-types'];
|
||||
|
||||
$mimeTypeMap = [];
|
||||
foreach ($mimeTypes as $mimeType) {
|
||||
$mimeTypeMap[$mimeType['mime_type']] = $mimeType;
|
||||
}
|
||||
|
||||
foreach ($table->getColumnsHash() as $row) {
|
||||
if (!isset($mimeTypeMap[$row['mimeType']])) {
|
||||
throw new Exception("Mime type '{$row['mimeType']}' not found in the response.");
|
||||
}
|
||||
|
||||
$mimeType = $mimeTypeMap[$row['mimeType']];
|
||||
foreach ($mimeType['app_providers'] as $provider) {
|
||||
if ($provider['name'] === 'OnlyOffice' && $row['onlyOffice']) {
|
||||
Assert::assertSame(
|
||||
$row['onlyOffice'],
|
||||
$provider['target_ext'],
|
||||
"Expected target_ext for OnlyOffice in mimeType '{$row['onlyOffice']} but found '{$provider['target_ext']}"
|
||||
);
|
||||
}
|
||||
if ($provider['name'] === 'Collabora' && $row['collabora']) {
|
||||
Assert::assertSame(
|
||||
$row['collabora'],
|
||||
$provider['target_ext'],
|
||||
"Expected target_ext for Collabora in mimeType '{$row['collabora']} but found '{$provider['target_ext']}"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @When user :user has created a file :file in space :space using wopi endpoint
|
||||
*
|
||||
* @param string $user
|
||||
* @param string $file
|
||||
* @param string $space
|
||||
*
|
||||
* @return string
|
||||
* @throws GuzzleException
|
||||
*/
|
||||
public function userHasCreatedAFileInSpaceUsingWopiEndpoint(string $user, string $file, string $space):string {
|
||||
$spaceId = $this->spacesContext->getSpaceIdByName($user, $space);
|
||||
$splitSpaceId = explode('$', $spaceId);
|
||||
$parentContainerId = $splitSpaceId[0] . '$' . $splitSpaceId[1] . '!' . $splitSpaceId[1];
|
||||
$response = CollaborationHelper::createFile(
|
||||
$this->featureContext->getBaseUrl(),
|
||||
$this->featureContext->getStepLineRef(),
|
||||
$user,
|
||||
$this->featureContext->getPasswordForUser($user),
|
||||
$parentContainerId,
|
||||
$file
|
||||
);
|
||||
$this->featureContext->theHTTPStatusCodeShouldBe(200, "", $response);
|
||||
$decodedResponse = json_decode($response->getBody()->getContents(), true);
|
||||
return $decodedResponse['file_id'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1971,7 +1971,6 @@ class SpacesContext implements Context {
|
||||
string $fileName,
|
||||
string $spaceName
|
||||
):void {
|
||||
$this->getSpaceIdByName($user, $spaceName);
|
||||
$response = $this->featureContext->downloadFileAsUserUsingPassword($user, $fileName, $this->featureContext->getPasswordForUser($user));
|
||||
Assert::assertGreaterThanOrEqual(
|
||||
400,
|
||||
|
||||
@@ -1862,3 +1862,19 @@ Feature: check file info with different wopi apps
|
||||
Then the HTTP status code should be "200"
|
||||
And the response should not contain the following MIME types:
|
||||
| application/octet-stream |
|
||||
|
||||
|
||||
Scenario: check that '/app/list' contain WebOffice template
|
||||
When user "Alice" sends HTTP method "GET" to URL "/app/list"
|
||||
Then the HTTP status code should be "200"
|
||||
And the app list response should contain the following information:
|
||||
| mimeType | onlyOffice | collabora |
|
||||
| application/vnd.ms-powerpoint.template.macroenabled.12 | pptx | |
|
||||
| application/vnd.oasis.opendocument.presentation-template | pptx | odp |
|
||||
| application/vnd.openxmlformats-officedocument.spreadsheetml.template | xlsx | |
|
||||
| application/vnd.oasis.opendocument.spreadsheet-template | xlsx | ods |
|
||||
| application/vnd.openxmlformats-officedocument.presentationml.template | pptx | |
|
||||
| application/vnd.openxmlformats-officedocument.wordprocessingml.template | docx | |
|
||||
| application/vnd.ms-word.template.macroenabled.12 | docx | |
|
||||
| application/vnd.oasis.opendocument.text-template | docx | odt |
|
||||
| application/vnd.ms-excel.template.macroenabled.12 | xlsx | |
|
||||
|
||||
@@ -1080,3 +1080,51 @@ Feature: collaboration (wopi)
|
||||
"""
|
||||
And for user "Alice" folder "testFolder" of the space "new-space" should not contain these files:
|
||||
| simple.odt |
|
||||
|
||||
|
||||
Scenario Outline: open file with .potx extension and template
|
||||
Given user "Alice" has uploaded file "filesForUpload/template.xltx" to "template.xltx"
|
||||
And we save it into "TEMPLATEID"
|
||||
And user "Alice" has created a file "template.pptx" in space "Personal" using wopi endpoint
|
||||
And we save it into "FILEID"
|
||||
When user "Alice" sends HTTP method "POST" to URL "<app-endpoint>"
|
||||
Then the HTTP status code should be "200"
|
||||
And the JSON data of the response should match
|
||||
"""
|
||||
{
|
||||
"type": "object",
|
||||
"required": [
|
||||
"app_url",
|
||||
"method",
|
||||
"form_parameters"
|
||||
],
|
||||
"properties": {
|
||||
"app_url": {
|
||||
"type": "string",
|
||||
"pattern": "^.*\\?WOPISrc=.*wopi%2Ffiles%2F[a-fA-F0-9]{64}$"
|
||||
},
|
||||
"method": {
|
||||
"const": "POST"
|
||||
},
|
||||
"form_parameters": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"access_token",
|
||||
"access_token_ttl"
|
||||
],
|
||||
"properties": {
|
||||
"access_token": {
|
||||
"type": "string"
|
||||
},
|
||||
"access_token_ttl": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
Examples:
|
||||
| app-endpoint |
|
||||
| /app/open?file_id=<<FILEID>>&app_name=Collabora&view_mode=write&template_id=<<TEMPLATEID>> |
|
||||
| /app/open?file_id=<<FILEID>>&app_name=OnlyOffice&view_mode=write&template_id=<<TEMPLATEID>> |
|
||||
|
||||
BIN
tests/acceptance/filesForUpload/template.xltx
Normal file
BIN
tests/acceptance/filesForUpload/template.xltx
Normal file
Binary file not shown.
Reference in New Issue
Block a user