mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Moved packaging develop into its own directory
This commit is contained in:
134
packaging/tests/tas-integration/pom.xml
Normal file
134
packaging/tests/tas-integration/pom.xml
Normal file
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>content-repository-community-integration-test</artifactId>
|
||||
<name>content-repository-community-integration-test</name>
|
||||
<version>6.2.2-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<groupId>org.alfresco</groupId>
|
||||
<artifactId>content-repository-community-tas-tests-parent</artifactId>
|
||||
<version>6.2.2-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Paul Brodner</name>
|
||||
<roles>
|
||||
<role>Test Automation Architect</role>
|
||||
</roles>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<properties>
|
||||
<suiteXmlFile>${project.basedir}/src/test/resources/integration-suite.xml</suiteXmlFile>
|
||||
<dependency.groovy.version>2.5.9</dependency.groovy.version>
|
||||
<dependency.javax.mail.version>1.6.2</dependency.javax.mail.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>utility</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.rest-assured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.mail</groupId>
|
||||
<artifactId>javax.mail-api</artifactId>
|
||||
<version>${dependency.javax.mail.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>${dependency.javax.mail.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy</artifactId>
|
||||
<version>${dependency.groovy.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- FTP -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>ftp</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- REST API -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>restapi</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- CMIS -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>cmis</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- EMAIL: IMAP & SMTP -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>email</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- WebDAV -->
|
||||
<dependency>
|
||||
<groupId>org.alfresco.tas</groupId>
|
||||
<artifactId>webdav</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jayway.jsonpath</groupId>
|
||||
<artifactId>json-path</artifactId>
|
||||
<version>2.4.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<suiteXmlFiles>
|
||||
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
|
||||
</suiteXmlFiles>
|
||||
<argLine>
|
||||
--illegal-access=warn
|
||||
</argLine>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- Build only test jar -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>test-jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,477 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import io.restassured.RestAssured;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.dataprep.SiteService.Visibility;
|
||||
import org.alfresco.rest.core.RestRequest;
|
||||
import org.alfresco.rest.core.RestResponse;
|
||||
import org.alfresco.rest.model.RestSiteContainerModel;
|
||||
import org.alfresco.rest.model.RestSiteContainerModelsCollection;
|
||||
import org.alfresco.rest.model.RestSiteEntry;
|
||||
import org.alfresco.rest.model.RestSiteMemberModelsCollection;
|
||||
import org.alfresco.rest.model.RestSiteMembershipRequestModel;
|
||||
import org.alfresco.rest.model.RestTagModel;
|
||||
import org.alfresco.rest.model.RestTaskModel;
|
||||
import org.alfresco.utility.Utility;
|
||||
import org.alfresco.utility.constants.UserRole;
|
||||
import org.alfresco.utility.data.RandomData;
|
||||
import org.alfresco.utility.model.FileModel;
|
||||
import org.alfresco.utility.model.FileType;
|
||||
import org.alfresco.utility.model.FolderModel;
|
||||
import org.alfresco.utility.model.GroupModel;
|
||||
import org.alfresco.utility.model.SiteModel;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class IntegrationFullTests1 extends IntegrationTest
|
||||
{
|
||||
UserModel testUser1, testUser2, testUser3;
|
||||
SiteModel testSitePublic, testSiteModerated;
|
||||
|
||||
/**
|
||||
* Scenario 87
|
||||
* 1. Using RestApi Admin user creates a new group1
|
||||
* 2. Using CMIS create test users: U1, U2 and U3
|
||||
* 3. Using RestApi add users U2 and U3 to group1
|
||||
* 4. U1 creates public test site1 using CMIS
|
||||
* 5. U1 creates file1 using CMIS, WebDav, FTP
|
||||
* 6. U1 apply Acl permission in the new documents for testGroup with role Site Consumer using CMIS
|
||||
* 7. Get permissions for U2 using CMIS
|
||||
* 8. U2 edits files created with CMIS, WebDav, FTP using WebDav
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify document permissions are added for a group of users")
|
||||
public void addDocumentPermissionsForGroupOfUsers() throws Exception
|
||||
{
|
||||
STEP("1. Using RestApi Admin user creates a new group1");
|
||||
GroupModel group1 = dataGroup.createRandomGroup();
|
||||
|
||||
STEP("2. Using CMIS create test users: U1, U2 and U3");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
testUser3 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("3. Using RestApi add users U2 and U3 to group1");
|
||||
dataGroup.usingUser(testUser2).addUserToGroup(group1);
|
||||
dataGroup.usingUser(testUser3).addUserToGroup(group1);
|
||||
|
||||
STEP("4. U1 creates public test site1 using CMIS");
|
||||
testSitePublic = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("5. U1 creates file1 using CMIS, WebDav, FTP");
|
||||
FileModel cmisFile = FileModel.getRandomFileModel(FileType.TEXT_PLAIN);
|
||||
cmisAPI.authenticateUser(testUser1).usingSite(testSitePublic).createFile(cmisFile);
|
||||
FileModel webDavFile = FileModel.getRandomFileModel(FileType.HTML);
|
||||
webDavProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFile(webDavFile);
|
||||
FileModel ftpFile = FileModel.getRandomFileModel(FileType.XML);
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFile(ftpFile);
|
||||
|
||||
STEP("6. U1 apply Acl permission in the new documents for testGroup with role Site Consumer using CMIS");
|
||||
cmisAPI.usingResource(cmisFile).addAcl(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(webDavFile).addAcl(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(ftpFile).addAcl(group1, UserRole.SiteConsumer);
|
||||
|
||||
STEP("7. Get permissions for U2 using CMIS");
|
||||
cmisAPI.usingResource(cmisFile).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(webDavFile).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(ftpFile).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
|
||||
STEP("8. U2 edits files created with CMIS, WebDav, FTP using WebDav");
|
||||
String newContent = "new content";
|
||||
webDavProtocol.authenticateUser(testUser2)
|
||||
.usingResource(cmisFile).update(newContent)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN)
|
||||
.usingResource(webDavFile).update(newContent)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN)
|
||||
.usingResource(ftpFile).update(newContent)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 88
|
||||
* 1. Using RestApi Admin user creates a new group1
|
||||
* 2. Using CMIS create test users: U1, U2 and U3
|
||||
* 3. Using RestApi add users U2 and U3 to group1
|
||||
* 4. U1 creates public test site1 using CMIS
|
||||
* 5. U1 creates folder1 using CMIS, WebDav, FTP
|
||||
* 6. U1 apply Acl permission in the new folders for testGroup with role Site Consumer using CMIS
|
||||
* 7. Get permissions for U2 using CMIS
|
||||
* 8. U2 edits folders created with CMIS, WebDav, FTP using WebDav
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify folder permissions are added for a group of users")
|
||||
public void addFolderPermissionsForGroupOfUsers() throws Exception
|
||||
{
|
||||
STEP("1. Using RestApi Admin user creates a new group1");
|
||||
GroupModel group1 = dataGroup.createRandomGroup();
|
||||
|
||||
STEP("2. Using CMIS create test users: U1, U2 and U3");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
testUser3 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("3. Using RestApi add users U2 and U3 to group1");
|
||||
dataGroup.usingUser(testUser2).addUserToGroup(group1);
|
||||
dataGroup.usingUser(testUser3).addUserToGroup(group1);
|
||||
|
||||
STEP("4. U1 creates public test site1 using CMIS");
|
||||
testSitePublic = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("5. U1 creates folders using CMIS, WebDav, FTP");
|
||||
FolderModel cmisFolder = FolderModel.getRandomFolderModel();
|
||||
cmisAPI.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(cmisFolder);
|
||||
FolderModel webDavFolder = FolderModel.getRandomFolderModel();
|
||||
webDavProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(webDavFolder);
|
||||
FolderModel ftpFolder = FolderModel.getRandomFolderModel();
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(ftpFolder);
|
||||
|
||||
STEP("6. U1 apply Acl permission in the new folders for testGroup with role Site Consumer using CMIS");
|
||||
cmisAPI.usingResource(cmisFolder).addAcl(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(webDavFolder).addAcl(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(ftpFolder).addAcl(group1, UserRole.SiteConsumer);
|
||||
|
||||
STEP("7. Get permissions for U2 using CMIS");
|
||||
cmisAPI.usingResource(cmisFolder).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(webDavFolder).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
cmisAPI.usingResource(ftpFolder).assertThat().permissionIsSetForGrup(group1, UserRole.SiteConsumer);
|
||||
|
||||
STEP("8. U2 edits folders created with CMIS, WebDav, FTP using WebDav");
|
||||
String newName = "newName";
|
||||
webDavProtocol.authenticateUser(testUser2)
|
||||
.usingResource(cmisFolder).rename(newName)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN)
|
||||
.usingResource(webDavFolder).rename(newName)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN)
|
||||
.usingResource(ftpFolder).rename(newName)
|
||||
.assertThat().hasStatus(org.apache.commons.httpclient.HttpStatus.SC_FORBIDDEN);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 102
|
||||
* 1. Using CMIS create test users: U1 and U2
|
||||
* 2. U1 creates moderated test site1 using CMIS
|
||||
* 3. U2 creates site membership request to site1 with RestAPI
|
||||
* 4. U2 gets site membership request, check new message using RestAPI
|
||||
* 5. U2 updates site membership request with a new message using RestAPI
|
||||
* 6. U2 gets site membership request, check new message using RestAPI
|
||||
* 7. U1 changes site visibility to private site using RestAPI
|
||||
* 8. U2 updates site membership request with a new message using RestAPI
|
||||
* 9. U2 gets site membership request, check new message using RestAPI
|
||||
* 10. U1 change site visibility to moderated site RestAPI
|
||||
* 11. U2 gets site membership request, check new message using RestAPI
|
||||
* 12. U2 updates site membership request with a new message using RestAPI
|
||||
* 13. U2 get site membership request, check new message using RestAPI
|
||||
* 14. U1 user1 changes site visibility to public using RestAPI
|
||||
* 15. U2 updates site membership request with a new message with RestAPI
|
||||
* 16. U2 gets site membership request, check new message using RestAPI
|
||||
* 17. U1 changes site visibility to moderated site RestAPI");
|
||||
* 18. U2 gets site membership request, check new message using RestAPI");
|
||||
* 19. U2 updates new site membership request using RestAPI
|
||||
* 20. U1 approves site membership using RestAPI
|
||||
* 21. U2 gets site membership request - no request using RestAPI
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify user can update or not site membership request when site visibility is updated")
|
||||
public void updateSiteMembershipRequestWhenSiteVisibilityIsUpdated() throws Exception
|
||||
{
|
||||
STEP("1. Using CMIS create 2 test users: U1 and U2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("2. U1 creates moderated test site1 using CMIS");
|
||||
testSiteModerated = dataSite.usingUser(testUser1).createModeratedRandomSite();
|
||||
|
||||
STEP("3. U2 creates site membership request to site1 with RestAPI");
|
||||
restAPI.authenticateUser(testUser2).withCoreAPI().usingMe().addSiteMembershipRequest("Please add me 1", testSiteModerated, "Request1");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("4. U2 gets site membership request, check new message using RestAPI");
|
||||
RestSiteMembershipRequestModel request = restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 1");
|
||||
|
||||
STEP("5. U2 updates site membership request with a new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().updateSiteMembershipRequest(testSiteModerated, "Please add me 2");
|
||||
request.assertThat().field("message").is("Please add me 2");
|
||||
|
||||
STEP("6. U2 gets site membership request, check new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 2");
|
||||
|
||||
STEP("7. U1 changes site visibility to private site using RestAPI");
|
||||
dataSite.usingUser(testUser1).updateSiteVisibility(testSiteModerated, Visibility.PRIVATE);
|
||||
|
||||
STEP("8. U2 updates site membership request with a new message using RestAPI");
|
||||
restAPI.withCoreAPI().usingMe().updateSiteMembershipRequest(testSiteModerated, "Please add me 2");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND);
|
||||
|
||||
STEP("9. U2 gets site membership request, check new message using RestAPI");
|
||||
restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND);
|
||||
|
||||
STEP("10. U1 change site visibility to moderated site RestAPI");
|
||||
dataSite.usingUser(testUser1).updateSiteVisibility(testSiteModerated, Visibility.MODERATED);
|
||||
|
||||
STEP("11. U2 gets site membership request, check new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 2");
|
||||
|
||||
STEP("12. U2 updates site membership request with a new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().updateSiteMembershipRequest(testSiteModerated, "Please add me 3");
|
||||
request.assertThat().field("message").is("Please add me 3");
|
||||
|
||||
STEP("13. U2 get site membership request, check new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 3");
|
||||
|
||||
STEP("14. U1 user1 changes site visibility to public using RestAPI");
|
||||
dataSite.usingUser(testUser1).updateSiteVisibility(testSiteModerated, Visibility.PUBLIC);
|
||||
|
||||
STEP("15. U2 updates site membership request with a new message with RestAPI");
|
||||
restAPI.withCoreAPI().usingMe().updateSiteMembershipRequest(testSiteModerated, "Please add me 4");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND);
|
||||
|
||||
STEP("16. U2 gets site membership request, check new message using RestAPI");
|
||||
restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND);
|
||||
|
||||
STEP("17. U1 changes site visibility to moderated site RestAPI");
|
||||
dataSite.usingUser(testUser1).updateSiteVisibility(testSiteModerated, Visibility.MODERATED);
|
||||
|
||||
STEP("18. U2 gets site membership request, check new message using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 3");
|
||||
|
||||
STEP("19. U2 updates new site membership request using RestAPI");
|
||||
request = restAPI.withCoreAPI().usingMe().updateSiteMembershipRequest(testSiteModerated, "Please add me 5");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
request.assertThat().field("message").is("Please add me 5");
|
||||
|
||||
STEP("20. U1 approves site membership using RestAPI");
|
||||
RestTaskModel taskModel = restAPI.withWorkflowAPI().getTasks().getTaskModelByDescription(testSiteModerated);
|
||||
workflow.approveSiteMembershipRequest(testUser1.getUsername(), testUser1.getPassword(), taskModel.getId(), true, "Approve");
|
||||
|
||||
STEP("21. U2 gets site membership request - no request using RestAPI");
|
||||
restAPI.withCoreAPI().usingMe().getSiteMembershipRequest(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND);
|
||||
RestSiteEntry site= restAPI.withCoreAPI().usingMe().getSiteMembership(testSiteModerated);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
site.assertThat().field("id").is(testSiteModerated.getId())
|
||||
.and().field("role").isNotEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 104
|
||||
* 1. Using CMIS create test user A1
|
||||
* 2. A1 creates public test site1 using CMIS
|
||||
* 3. Using CMIS create test user U1
|
||||
* 4. A1 adds U1 to site1 as site manager using RestAPI
|
||||
* 5. A1 get site members using RestAPI
|
||||
* 6. Using CMIS create test user U2
|
||||
* 7. A1 adds U2 to site1 as site collaborator using RestAPI
|
||||
* 8. A1 get site members using RestAPI
|
||||
* 9. Using CMIS create test user U3
|
||||
* 10. A1 add U3 to site1 as site contributor using RestAPI
|
||||
* 11. A1 get site members using RestAPI
|
||||
* 12. Using CMIS create test user U4
|
||||
* 13. A1 add U4 to site1 as site consumer using RestAPI
|
||||
* 14. A1 get site members using RestAPI
|
||||
* 15. Using CMIS delete test user U1
|
||||
* 16. A1 get site members using RestAPI
|
||||
* 17. Using CMIS delete test user U2
|
||||
* 18. A1 get site members using RestAPI
|
||||
* 19. Using CMIS delete test user U3
|
||||
* 20. A1 get site members using RestAPI
|
||||
* 21. Using CMIS delete test user U4
|
||||
* 22. A1 get site members using RestAPI
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify get site members when users are added to site or deleted")
|
||||
public void getSiteMembersWhenUsersAreAddedOrDeleted() throws Exception
|
||||
{
|
||||
STEP("1. Using CMIS create test user A1");
|
||||
UserModel testUser = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("2. A1 creates public test site1 using CMIS");
|
||||
testSitePublic = dataSite.usingUser(testUser).createPublicRandomSite();
|
||||
|
||||
STEP("3. Using CMIS create test user U1");
|
||||
UserModel user1 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("4. A1 adds U1 to site1 as site manager using RestAPI");
|
||||
user1.setUserRole(UserRole.SiteManager);
|
||||
restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).addPerson(user1);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("5. A1 get site members using RestAPI");
|
||||
RestSiteMemberModelsCollection members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("2");
|
||||
members.assertThat().entriesListContains("id", user1.getUsername())
|
||||
.and().entriesListContains("role", UserRole.SiteManager.toString());
|
||||
|
||||
STEP("6. Using CMIS create test user U2");
|
||||
UserModel user2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("7. A1 adds U2 to site1 as site collaborator using RestAPI");
|
||||
user2.setUserRole(UserRole.SiteCollaborator);
|
||||
restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).addPerson(user2);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("8. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("3");
|
||||
members.assertThat().entriesListContains("id", user2.getUsername())
|
||||
.and().entriesListContains("role", UserRole.SiteCollaborator.toString());
|
||||
|
||||
STEP("9. Using CMIS create test user U3");
|
||||
UserModel user3 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("10. A1 add U3 to site1 as site contributor using RestAPI");
|
||||
user3.setUserRole(UserRole.SiteContributor);
|
||||
restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).addPerson(user3);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("11. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("4");
|
||||
members.assertThat().entriesListContains("id", user3.getUsername())
|
||||
.and().entriesListContains("role", UserRole.SiteContributor.toString());
|
||||
|
||||
STEP("12. Using CMIS create test user U4");
|
||||
UserModel user4 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("13. A1 add U4 to site1 as site consumer using RestAPI");
|
||||
user4.setUserRole(UserRole.SiteConsumer);
|
||||
restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).addPerson(user4);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("14. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("5");
|
||||
members.assertThat().entriesListContains("id", user4.getUsername())
|
||||
.and().entriesListContains("role", UserRole.SiteConsumer.toString());
|
||||
|
||||
STEP("15. Using CMIS delete test user U1");
|
||||
dataUser.deleteUser(user1);
|
||||
|
||||
STEP("16. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("4");
|
||||
members.assertThat().entriesListDoesNotContain("id", user1.getUsername());
|
||||
|
||||
STEP("17. Using CMIS delete test user U2");
|
||||
dataUser.deleteUser(user2);
|
||||
|
||||
STEP("18. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("3");
|
||||
members.assertThat().entriesListDoesNotContain("id", user2.getUsername());
|
||||
|
||||
STEP("19. Using CMIS delete test user U3");
|
||||
dataUser.deleteUser(user3);
|
||||
|
||||
STEP("20. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("2");
|
||||
members.assertThat().entriesListDoesNotContain("id", user3.getUsername());
|
||||
|
||||
STEP("21. Using CMIS delete test user U4");
|
||||
dataUser.deleteUser(user4);
|
||||
|
||||
STEP("22. A1 get site members using RestAPI");
|
||||
members = restAPI.authenticateUser(testUser).withCoreAPI().usingSite(testSitePublic).getSiteMembers();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
members.assertThat().paginationField("count").is("1");
|
||||
members.assertThat().entriesListDoesNotContain("id", user4.getUsername());
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 105
|
||||
* 1. Using CMIS create test user U1
|
||||
* 2. U1 creates public test site1 using CMIS
|
||||
* 3. U1 creates file1 using Webdav
|
||||
* 4. U1 updates file1 properties using CMIS
|
||||
* 5. U1 gets file1 properties using CMIS
|
||||
* 6. U1 renames file1 using Webdav
|
||||
* 7. U1 updates file1 content using FTP
|
||||
* 8. U1 adds tags to file1 using RestAPI
|
||||
* 9. U1 updates file1 properties using CMIS
|
||||
* 10. U1 gets file1 properties using CMIS
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify file properties with file properties are updated")
|
||||
public void checkFilePropertiesWhenFileIsUpdated() throws Exception
|
||||
{
|
||||
STEP("1. Using CMIS create test user U1");
|
||||
UserModel testUser = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("2. U1 creates public test site1 using CMIS");
|
||||
testSitePublic = dataSite.usingUser(testUser).createPublicRandomSite();
|
||||
|
||||
STEP("3. U1 creates file1 using Webdav");
|
||||
FileModel file1 = FileModel.getRandomFileModel(FileType.MSWORD2007);
|
||||
file1.setContent("content1");
|
||||
webDavProtocol.authenticateUser(testUser).usingSite(testSitePublic).createFile(file1);
|
||||
|
||||
STEP("4. U1 updates file1 properties using CMIS");
|
||||
String newDescription = "New-" + file1.getDescription();
|
||||
String newTitle = "New title-" +file1.getTitle();
|
||||
cmisAPI.authenticateUser(testUser).usingSite(testSitePublic).usingResource(file1).updateProperty("cmis:description", newDescription)
|
||||
.updateProperty("cm:title", newTitle);
|
||||
|
||||
STEP("5. U1 gets file1 properties using CMIS");
|
||||
cmisAPI.authenticateUser(testUser).usingResource(file1).assertThat().contentPropertyHasValue("cmis:description", newDescription)
|
||||
.assertThat().contentPropertyHasValue("cm:title", newTitle);
|
||||
|
||||
STEP("6. U1 renames file1 using Webdav");
|
||||
String newName = "Edited-" + file1.getName();
|
||||
webDavProtocol.authenticateUser(testUser).usingSite(testSitePublic).usingResource(file1).rename(newName);
|
||||
|
||||
STEP("7. U1 updates file1 content using FTP");
|
||||
String newContent = "New " + file1.getContent();
|
||||
ftpProtocol.authenticateUser(testUser).usingSite(testSitePublic).usingResource(file1).update(newContent)
|
||||
.assertThat().contentIs(newContent);
|
||||
|
||||
STEP("8. U1 adds tags to file1 using RestAPI");
|
||||
String newTag = RandomData.getRandomName("tag");
|
||||
RestTagModel tag = restAPI.authenticateUser(testUser).withCoreAPI().usingResource(file1).addTag(newTag);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("9. U1 updates file1 properties using CMIS");
|
||||
newTitle = "New title2-" + file1.getTitle();
|
||||
cmisAPI.authenticateUser(testUser).usingSite(testSitePublic).usingResource(file1).updateProperty("cm:title", newTitle);
|
||||
|
||||
STEP("10. U1 gets file1 properties using CMIS");
|
||||
cmisAPI.authenticateUser(testUser).usingResource(file1).assertThat().contentPropertyHasValue("cmis:description", newDescription)
|
||||
.assertThat().contentPropertyHasValue("cm:title", newTitle)
|
||||
.assertThat().contentPropertyHasValue("cmis:name", newName)
|
||||
.assertThat().contentPropertyHasValue("cm:taggable", tag.getId())
|
||||
.assertThat().contentIs(newContent);
|
||||
}
|
||||
}
|
@@ -0,0 +1,490 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import org.alfresco.rest.model.RestErrorModel;
|
||||
import org.alfresco.rest.model.RestTagModel;
|
||||
import org.alfresco.utility.constants.UserRole;
|
||||
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
|
||||
import org.alfresco.utility.exception.DataPreparationException;
|
||||
import org.alfresco.utility.model.*;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class IntegrationFullTestsBulk2 extends IntegrationTest
|
||||
{
|
||||
private UserModel testUser1;
|
||||
private SiteModel testSitePublic;
|
||||
private FolderModel testFolder1, testFolder2;
|
||||
private FileModel wordFile, testFile;
|
||||
private ListUserWithRoles usersWithRoles;
|
||||
|
||||
@BeforeClass(alwaysRun = true)
|
||||
public void dataPreparation() throws Exception
|
||||
{
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
|
||||
wordFile = FileModel.getRandomFileModel(FileType.MSWORD2007, "tasTesting");
|
||||
}
|
||||
|
||||
@BeforeMethod(alwaysRun = true)
|
||||
public void setup() throws DataPreparationException {
|
||||
testSitePublic = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
testFolder1 = FolderModel.getRandomFolderModel();
|
||||
testFolder2 = FolderModel.getRandomFolderModel();
|
||||
testFile = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "testContent");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 73
|
||||
* 1. Create file1 using ftp
|
||||
* 2. Open document for edit using CMIS
|
||||
* 3. Try to edit document using Webdav while checked-out with CMIS
|
||||
* 4. Copy document to testFolder2 with ftp
|
||||
* 5. Update document from folder2, check its content is updated with Webdav
|
||||
* 6. Update document with WebDAV - should fail since document is checked out
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Edit checked out document using several protocols")
|
||||
public void updateFileUsingDifferentProtocolsWhileDocumentIsCheckedOut() throws Exception
|
||||
{
|
||||
STEP("1. Create testFile1 using ftp");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(testFolder1)
|
||||
.usingResource(testFolder1).createFile(wordFile)
|
||||
.assertThat().contentIs("tasTesting");
|
||||
|
||||
STEP("2. Open document for edit using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(wordFile).checkOut();
|
||||
FileModel wordFilePWC = cmisAPI.usingResource(wordFile).withCMISUtil().getPWCFileModel();
|
||||
|
||||
STEP("3. Try to edit document using Webdav while checked-out with CMIS - content should be updated");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(wordFilePWC).update("update")
|
||||
.and().assertThat().contentIs("update");
|
||||
|
||||
STEP("4. Copy document to testFolder2 with ftp");
|
||||
FileModel copiedWordFile = new FileModel(wordFile);
|
||||
ftpProtocol.usingSite(testSitePublic).createFolder(testFolder2)
|
||||
.usingResource(wordFile).copyTo(testFolder2);
|
||||
copiedWordFile.setCmisLocation(ftpProtocol.getLastResourceWithoutPrefix());
|
||||
ftpProtocol.usingResource(testFolder1).assertThat().hasFiles(wordFile)
|
||||
.and().usingResource(testFolder2).assertThat().hasFiles(copiedWordFile);
|
||||
|
||||
STEP("5. Update document from folder2, check its content is updated with Webdav");
|
||||
webDavProtocol.usingResource(copiedWordFile).update("Step5")
|
||||
.and().assertThat().contentIs("Step5");
|
||||
|
||||
STEP("6. Update document with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(wordFile).update("WebDAVUpdate");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 84
|
||||
* 1. Create folder1 with webdav
|
||||
* 2. Upload new file, file1 with ftp
|
||||
* 3. Set content for file1 with cmis
|
||||
* 4. CheckOut file1 with cmis
|
||||
* 5. Try to edit file while checked-out with ftp
|
||||
* 6. Cancel checkout with cmis
|
||||
* 7. Try again to edit file with ftp
|
||||
* 8. Edit file content using webDav
|
||||
* 9. Get content using cmis, validate it
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL } )
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Update checked out document")
|
||||
public void updateCheckedOutFile() throws Exception
|
||||
{
|
||||
STEP("1. Create folder1 with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(testFolder1).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Upload new file, file1 with ftp");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(testFolder1).createFile(testFile)
|
||||
.and().assertThat().existsInRepo().and().assertThat().existsInFtp();
|
||||
|
||||
STEP("3. Set content for file1 with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile).update("cmisUpdate")
|
||||
.and().assertThat().contentIs("testContentcmisUpdate");
|
||||
|
||||
STEP("4. CheckOut file1 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut();
|
||||
|
||||
STEP("5. Try to edit file while checked-out with ftp - content should not be updated since file is checked out");
|
||||
ftpProtocol.usingResource(testFile).update("ftpUpdate")
|
||||
.and().assertThat().contentIs("testContentcmisUpdate");
|
||||
|
||||
STEP("6. Cancel checkout with cmis");
|
||||
cmisAPI.usingResource(testFile).cancelCheckOut();
|
||||
|
||||
STEP("7. Try again to edit file with ftp");
|
||||
ftpProtocol.usingResource(testFile).update("ftpUpdate")
|
||||
.and().assertThat().contentIs("ftpUpdate");
|
||||
|
||||
STEP("8. Edit file content using webDav");
|
||||
webDavProtocol.usingResource(testFile).update("webdavUpdate").and().assertThat().contentIs("webdavUpdate");
|
||||
|
||||
STEP("9. Get content using cmis, validate it");
|
||||
cmisAPI.usingResource(testFile).assertThat().contentIs("webdavUpdate");
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Create folder1 with cmis
|
||||
* 2. Add new file with webdav
|
||||
* 3. Open file with Manager, add some content, save with webdav
|
||||
* 4. Open file with Consumer, add some content, save with ftp
|
||||
* 5. Open file with Contributor, delete some content, save with webdav
|
||||
* 6. Open file with Collaborator, add some content, save with WebDAV
|
||||
* 7. Open file with Consumer, delete some content, save with webdav
|
||||
* 8. Open file with Manager, add new content, save with cmis
|
||||
* 9. Open file with Collaborator, delete content that Manager added with ftp
|
||||
* 10. Open file with Manager, add new content with webdav
|
||||
* 11. Delete all content with admin using FTP
|
||||
* 12. Delete file with cmis
|
||||
* 13. Check file is deleted with WebDAV
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Update file with different user roles and protocols")
|
||||
public void updateFileWithDifferentRolesUsingDifferentProtocols() throws Exception
|
||||
{
|
||||
usersWithRoles = dataUser.addUsersWithRolesToSite(testSitePublic, UserRole.SiteManager, UserRole.SiteCollaborator, UserRole.SiteConsumer,
|
||||
UserRole.SiteContributor);
|
||||
|
||||
STEP("1. Create folder1 with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingSite(testSitePublic).createFolder(testFolder1).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Add new file with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFolder1).createFile(testFile).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("3. Open file with Manager, add some content, save with webdav");
|
||||
webDavProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager)).usingResource(testFile).update("webdavUpdate")
|
||||
.and().assertThat().contentIs("webdavUpdate");
|
||||
|
||||
STEP("4. Open file with Consumer, add some content, save with ftp");
|
||||
ftpProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteConsumer))
|
||||
.usingResource(testFile).update("ftpUpdate").and().assertThat().contentIs("webdavUpdate");
|
||||
|
||||
STEP("5. Open file with Contributor, delete some content, save with webdav");
|
||||
webDavProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteContributor))
|
||||
.usingResource(testFile).update("webdavUpdate").and().assertThat().contentIs("webdavUpdate");
|
||||
|
||||
STEP("6. Open file with Collaborator, add some content, save with WebDAV");
|
||||
webDavProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator))
|
||||
.usingResource(testFile).update("webdavUpdate2").and().assertThat().contentIs("webdavUpdate2");
|
||||
|
||||
STEP("7. Open file with Consumer, delete some content, save with webdav");
|
||||
webDavProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteConsumer))
|
||||
.usingResource(testFile).update("webdavUpdate3").and().assertThat().contentIs("webdavUpdate2");
|
||||
|
||||
STEP("8. Open file with Manager, add new content, save with cmis");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager))
|
||||
.usingResource(testFile).update("cmisUpdate").and().assertThat().contentIs("webdavUpdate2cmisUpdate");
|
||||
|
||||
STEP("9. Open file with Collaborator, delete content that Manager added with ftp");
|
||||
ftpProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator))
|
||||
.usingResource(testFile).update("ftpUpdate").and().assertThat().contentIs("ftpUpdate");
|
||||
|
||||
STEP("10. Open file with Contributor, add new page with webdav");
|
||||
webDavProtocol.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteManager))
|
||||
.usingResource(testFile).update("webdavUpdate").and().assertThat().contentIs("webdavUpdate");
|
||||
|
||||
STEP("11. Delete all content with admin using FTP");
|
||||
ftpProtocol.authenticateUser(dataUser.getAdminUser())
|
||||
.usingResource(testFile).update("").and().assertThat().contentIs("");
|
||||
|
||||
STEP("12. Delete file with cmis");
|
||||
cmisAPI.usingResource(testFile).delete().and().assertThat().doesNotExistInRepo();
|
||||
|
||||
STEP("13. Check file is deleted with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).assertThat().doesNotExistInWebdav();
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add file1 to document library with ftp
|
||||
* 2. Update file content with WebDAV
|
||||
* 3. Add a minor change to a document with cmis
|
||||
* 4. Add a change with webdav, check document version with cmis
|
||||
* 5. Add a major change to a document with cmis
|
||||
* 6. Delete document last version with cmis
|
||||
* 7. Try to edit previous version with cmis
|
||||
* 8. Update content with ftp, check version
|
||||
* 9. Check document content with WebDAV
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Check document versioning")
|
||||
public void documentVersioningTest() throws Exception
|
||||
{
|
||||
STEP("1. Add file1 to document library with ftp");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(testSitePublic).createFile(testFile).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Update file content with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).update("WebDAVUpdate").and().assertThat().contentIs("WebDAVUpdate");
|
||||
|
||||
STEP("3. Add a minor change to a document with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile).update("cmisUpdate")
|
||||
.then().assertThat().documentHasVersion(1.1).and().assertThat().contentIs("WebDAVUpdatecmisUpdate");
|
||||
|
||||
STEP("4. Check document version with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).update("webdavUpdate");
|
||||
cmisAPI.assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("5. Add a major change to a document with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile).checkOut().prepareDocumentForCheckIn().withMajorVersion().checkIn()
|
||||
.and().assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("6. Delete document last version with cmis");
|
||||
cmisAPI.usingResource(testFile).deleteAllVersions(false).and().assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("7. Try to edit previous version with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile).update("cmisUpdate")
|
||||
.then().assertThat().documentHasVersion(1.3).and().assertThat().contentIs("webdavUpdatecmisUpdate");
|
||||
|
||||
STEP("8. Update content with ftp, check version");
|
||||
ftpProtocol.usingResource(testFile).update("ftpUpdate");
|
||||
cmisAPI.assertThat().documentHasVersion(1.4);
|
||||
|
||||
STEP("9. Check document content with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).assertThat().contentIs("ftpUpdate");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 82
|
||||
* 1. Create user1, user2
|
||||
* 2. User1 creates site1 and invites user2 as manager
|
||||
* 3. User1 adds document1 and tag1 to doc
|
||||
* 4. User2 gets tags and verifies tag1 appears
|
||||
* 5. User2 delete tag1
|
||||
* 6. User1 tries to update tag1
|
||||
* 7. User1 add new tag tag2
|
||||
* 8. User2 verifies tag2 appears and tag1 is not in the list
|
||||
* 9. User2 deletes document1
|
||||
* 10. User1 tries to delete tag2
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION, description = "Check negative scenarios for tags")
|
||||
public void tagsNegativeScenariosTest() throws Exception
|
||||
{
|
||||
STEP("1. Create user1, user2");
|
||||
UserModel user1 = dataUser.createRandomTestUser();
|
||||
UserModel user2 = dataUser.createRandomTestUser();
|
||||
user2.setUserRole(UserRole.SiteManager);
|
||||
|
||||
STEP("2. User1 creates site1 and invites user2 as manager");
|
||||
SiteModel site = dataSite.usingUser(user1).createPublicRandomSite();
|
||||
restAPI.authenticateUser(user1).withCoreAPI().usingSite(site).addPerson(user2);
|
||||
|
||||
STEP("3. User1 adds document1 and tag1 to doc");
|
||||
dataContent.usingUser(user1).usingSite(site).createContent(testFile);
|
||||
RestTagModel tag = restAPI.withCoreAPI().usingResource(testFile).addTag("tag1");
|
||||
restAPI.withCoreAPI().usingResource(testFile).getNodeTags().assertThat().entriesListContains("tag", "tag1");
|
||||
|
||||
STEP("4. User2 gets tags and verifies tag1 appears");
|
||||
restAPI.authenticateUser(user2).withCoreAPI().usingResource(testFile).getNodeTags().assertThat().entriesListContains("tag", "tag1");
|
||||
|
||||
STEP("5. User2 delete tag1");
|
||||
restAPI.withCoreAPI().usingResource(testFile).deleteTag(tag);
|
||||
restAPI.withCoreAPI().usingResource(testFile).getNodeTags().assertThat().entriesListDoesNotContain("tag", "tag1");
|
||||
|
||||
STEP("6. User1 tries to update tag1");
|
||||
restAPI.authenticateUser(user2).withCoreAPI().usingTag(tag).update("updatedTag");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.FORBIDDEN)
|
||||
.assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED)
|
||||
.containsErrorKey(RestErrorModel.PERMISSION_DENIED_ERRORKEY);
|
||||
|
||||
STEP("7. User1 add new tag tag2");
|
||||
tag = restAPI.authenticateUser(user1).withCoreAPI().usingResource(testFile).addTag("tag2");
|
||||
restAPI.withCoreAPI().usingResource(testFile).getNodeTags().assertThat().entriesListContains("tag", "tag2");
|
||||
|
||||
STEP("8. User2 verifies tag2 appears and tag1 is not in the list");
|
||||
restAPI.authenticateUser(user2).withCoreAPI().usingResource(testFile).getNodeTags()
|
||||
.assertThat().entriesListDoesNotContain("tag", "tag1")
|
||||
.assertThat().entriesListContains("tag", "tag2");
|
||||
|
||||
STEP("9. User2 deletes document1");
|
||||
dataContent.usingUser(user2).usingResource(testFile).deleteContent();
|
||||
|
||||
STEP("10. User1 tries to delete tag2");
|
||||
restAPI.authenticateUser(user1).withCoreAPI().usingResource(testFile).deleteTag(tag);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND)
|
||||
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, testFile.getNodeRefWithoutVersion()))
|
||||
.containsErrorKey(RestErrorModel.ENTITY_NOT_FOUND_ERRORKEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 83
|
||||
* 1. Create user1, user2
|
||||
* 2. User1 creates site1 and invites user2 as manager with rest api
|
||||
* 3. User1 adds document1 with webdav
|
||||
* 4. User2 reads the document1 with ftp
|
||||
* 5. User1 update document1 with WebDAV
|
||||
* 6. User2 update the document1 with WebDAV
|
||||
* 7. User1 deletes the document1 with ftp
|
||||
* 8. Verify user2 cannot update document1 with cmis
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL }, expectedExceptions = CmisObjectNotFoundException.class, expectedExceptionsMessageRegExp = ".*Object not found:.*")
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION, description = "Negative scenarios for update document")
|
||||
public void fileUpdateNegativeScenariosTest() throws Exception
|
||||
{
|
||||
STEP("1. Create user1, user2");
|
||||
UserModel user1 = dataUser.createRandomTestUser();
|
||||
UserModel user2 = dataUser.createRandomTestUser();
|
||||
user2.setUserRole(UserRole.SiteManager);
|
||||
|
||||
STEP("2. User1 creates site1 and invites user2 as manager with rest api");
|
||||
SiteModel site = dataSite.usingUser(user1).createPublicRandomSite();
|
||||
restAPI.authenticateUser(user1).withCoreAPI().usingSite(site).addPerson(user2);
|
||||
|
||||
STEP("3. User1 adds document1 with webdav");
|
||||
webDavProtocol.authenticateUser(user1).usingSite(site).createFile(testFile).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("4. User2 reads the document1 with ftp");
|
||||
ftpProtocol.authenticateUser(user2).usingResource(testFile).assertThat().contentIs("testContent");
|
||||
|
||||
STEP("5. User1 update document1 with WebDAV");
|
||||
webDavProtocol.authenticateUser(user1).usingResource(testFile).update("WebDAVUpdate1").assertThat().contentIs("WebDAVUpdate1");
|
||||
|
||||
STEP("6. User2 update the document1 with WebDAV");
|
||||
webDavProtocol.authenticateUser(user2).usingResource(testFile).update("WebDAVUpdate2").assertThat().contentIs("WebDAVUpdate2");
|
||||
|
||||
STEP("7. User1 deletes the document1 with ftp");
|
||||
ftpProtocol.authenticateUser(user1).usingResource(testFile).delete().assertThat().doesNotExistInFtp().assertThat().doesNotExistInRepo();
|
||||
|
||||
STEP("8. Verify user2 cannot update document1 with cmis");
|
||||
cmisAPI.authenticateUser(user2).usingResource(testFile).update("cmisUpdate");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 85
|
||||
* 1. Upload file with CMIS
|
||||
* 2. Add some content with ftp
|
||||
* 3. Add a minor change to document, 1.2 with cmis
|
||||
* 4. Add a major change to document, 2.0 with cmis
|
||||
* 5. Add a minor change to document, 2.1 with cmis
|
||||
* 6. Delete version 2.0 with cmis with cmis
|
||||
* 7. Get document version with cmis
|
||||
* 8. Try to edit version 2.0 with cmis
|
||||
* 9. Delete version 2.1 with cmis
|
||||
* 10. Get document version with cmis
|
||||
* 11. Try to edit version 2.0 with cmis
|
||||
* 12. Check document content with ftp
|
||||
* 13. Check document version with cmis
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "File versioning test scenarios")
|
||||
public void fileVersioningScenariosTest() throws Exception
|
||||
{
|
||||
STEP("1. Upload file with CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingSite(testSitePublic).createFile(testFile).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Add some content with ftp ");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(testFile).update("ftpUpdate").and().assertThat().contentIs("ftpUpdate");
|
||||
|
||||
STEP("3. Add a minor change to document, 1.1 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMinorVersion().checkIn().refreshResource().and().assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("4. Add a major change to document, 2.0 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMajorVersion().checkIn().and().assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("5. Add a minor change to document, 2.1 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMinorVersion().checkIn().and().assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("6. Delete version 2.0 with cmis with cmis");
|
||||
cmisAPI.usingResource(testFile).deleteAllVersions(false);
|
||||
|
||||
STEP("7. Get document version with cmis");
|
||||
cmisAPI.usingResource(testFile).assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("8. Try to edit version 2.0 with cmis");
|
||||
cmisAPI.usingResource(testFile).update("cmisUpdate").and().assertThat().contentIs("cmisUpdatecmisUpdate")
|
||||
.and().assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("9. Delete version 2.1 with cmis");
|
||||
cmisAPI.usingResource(testFile).deleteAllVersions(false);
|
||||
|
||||
STEP("10. Get document version with cmis");
|
||||
cmisAPI.usingResource(testFile).assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("11. Try to edit version 2.0 with cmis");
|
||||
cmisAPI.usingResource(testFile).update("cmisUpdate").and().assertThat().contentIs("cmisUpdatecmisUpdate")
|
||||
.and().assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("12. Update and check document content with ftp");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(testFile).update("ftpUpdate").assertThat().contentIs("ftpUpdate");
|
||||
|
||||
STEP("13. Check document version with cmis");
|
||||
cmisAPI.usingResource(testFile).assertThat().documentHasVersion(2.2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Upload file with cmis
|
||||
* 2. Add some content with WebDAV
|
||||
* 3. Add a minor change to document, 1.2 with cmis
|
||||
* 4. Add a major change to document, 2.0 with cmis
|
||||
* 5. Add a minor change to document, 2.1 with cmis
|
||||
* 6. Delete version 2.1 with cmis
|
||||
* 7. Try to edit the last version (which is now 2.0) with webdav
|
||||
* 8. Check version with CMIS
|
||||
* 9. Add new major change, version 3.0 with cmis
|
||||
* 10. Delete previous version with cmis
|
||||
* 11. Delete document with ftp
|
||||
* 12. Check document version with cmis
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL }, expectedExceptionsMessageRegExp = ".*Version Series not found.*",
|
||||
expectedExceptions = CmisObjectNotFoundException.class)
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "File versioning additional test scenarios")
|
||||
public void fileVersioningNegativeScenariosTest() throws Exception
|
||||
{
|
||||
STEP("1. Upload file with cmis");
|
||||
cmisAPI.authenticateUser(testUser1).usingSite(testSitePublic).createFile(testFile).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Add some content with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).update("WebDAVUpdate").and().assertThat().contentIs("WebDAVUpdate");
|
||||
|
||||
STEP("3. Add a minor change to document, 1.2 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMinorVersion().checkIn().refreshResource().and().assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("4. Add a major change to document, 2.0 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMajorVersion().checkIn().and().assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("5. Add a minor change to document, 2.1 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMinorVersion().checkIn().refreshResource().and().assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("6. Delete version 2.1 with cmis");
|
||||
cmisAPI.usingResource(testFile).deleteAllVersions(false).assertThat().documentHasVersion(2.0);
|
||||
|
||||
STEP("7. Try to edit the last version (which is now 2.0) with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile).update("webdavUpdate");
|
||||
|
||||
STEP("8. Check version with CMIS");
|
||||
cmisAPI.usingResource(testFile).assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("9. Add new major change, version 3.0 with cmis");
|
||||
cmisAPI.usingResource(testFile).checkOut().prepareDocumentForCheckIn().withContent("cmisUpdate")
|
||||
.withMajorVersion().checkIn().and().assertThat().documentHasVersion(3.0);
|
||||
|
||||
STEP("10. Delete previous version with cmis");
|
||||
cmisAPI.usingResource(testFile).deleteAllVersions(false).assertThat().documentHasVersion(2.1);
|
||||
|
||||
STEP("11. Delete document with ftp");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(testFile).delete().assertThat().doesNotExistInRepo();
|
||||
|
||||
STEP("12. Check document version with cmis - should fail");
|
||||
cmisAPI.usingResource(testFile).assertThat().documentHasVersion(2.1);
|
||||
}
|
||||
}
|
@@ -0,0 +1,433 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import org.alfresco.rest.model.RestCommentModelsCollection;
|
||||
import org.alfresco.rest.model.RestErrorModel;
|
||||
import org.alfresco.utility.Utility;
|
||||
import org.alfresco.utility.constants.UserRole;
|
||||
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
|
||||
import org.alfresco.utility.model.FileModel;
|
||||
import org.alfresco.utility.model.FileType;
|
||||
import org.alfresco.utility.model.FolderModel;
|
||||
import org.alfresco.utility.model.SiteModel;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class IntegrationFullTestsBulk3 extends IntegrationTest
|
||||
{
|
||||
private UserModel testUser1, testUser2;
|
||||
private SiteModel publicSite, moderatedSite, privateSite;
|
||||
private RestCommentModelsCollection comments;
|
||||
private FileModel testFile1, testFile2, wordFile ;
|
||||
private ListUserWithRoles usersWithRoles;
|
||||
private FolderModel testFolder1;
|
||||
|
||||
@BeforeClass(alwaysRun = true)
|
||||
public void dataPreparation() throws Exception
|
||||
{
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testFolder1 = FolderModel.getRandomFolderModel();
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 64
|
||||
* 1. Create folder1 with WEBDAV
|
||||
* 2. Create wordFile inside folder1 with CMIS
|
||||
* 3. Delete wordFile content with CMIS
|
||||
* 4. Update content using Collaborator role with CMIS
|
||||
* 5. Append content using Manager role with WebDAV
|
||||
* 6. Delete content that Manager added using Collaborator role with CMIS
|
||||
* 7. Rename wordFile with WebDAV
|
||||
* 9. Delete wordFile with WEBDAV
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "File handling using several protocols")
|
||||
public void fileHandlingWithCollaboratorRole() throws Exception
|
||||
{
|
||||
String contentCollaborator = "content added by Collaborator";
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
usersWithRoles = dataUser.addUsersWithRolesToSite(publicSite, UserRole.SiteCollaborator);
|
||||
wordFile = FileModel.getRandomFileModel(FileType.MSWORD2007, "tasTesting");
|
||||
|
||||
STEP("1. Create folder1 with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingSite(publicSite).createFolder(testFolder1).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Create testFile1 inside folder1 using CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator)).usingSite(publicSite).usingResource(testFolder1).createFile(wordFile)
|
||||
.assertThat().existsInRepo();
|
||||
|
||||
STEP("3. Delete wordFile content with WebDAV");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(wordFile).deleteContent();
|
||||
|
||||
STEP("4. Update content using Collaborator role with CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator))
|
||||
.usingResource(wordFile).update(contentCollaborator)
|
||||
.assertThat().contentIs(contentCollaborator);
|
||||
|
||||
STEP("5. Append content using Manager role with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(wordFile).update("content added by Manager").assertThat().contentIs("content added by Manager");
|
||||
|
||||
STEP("6. Delete content that Manager added using Collaborator role with CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteCollaborator))
|
||||
.usingResource(wordFile).deleteAllVersions(false)
|
||||
.and().assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("7. Rename wordFile with FTP");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(wordFile).rename("renamedFile.docx");
|
||||
|
||||
STEP("8. Delete file with WEBDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(wordFile).delete()
|
||||
.assertThat().doesNotExistInRepo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 65
|
||||
* 1. Create folder1 with WEBDAV
|
||||
* 2. Create wordFile inside folder1 with CMIS
|
||||
* 3. Delete wordFile content with CMIS
|
||||
* 4. Update content using Contributor role with CMIS
|
||||
* 5. Append content using Manager role with WebDAV
|
||||
* 6. Delete content that Manager added using Collaborator role with CMIS
|
||||
* 7. Rename wordFile with WEBDAV
|
||||
* 8. Delete wordFile with FTP
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "File handling using several protocols")
|
||||
public void fileHandlingWithContributorRole() throws Exception
|
||||
{
|
||||
String contentContributor = "content added by Contributor";
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
usersWithRoles = dataUser.addUsersWithRolesToSite(publicSite, UserRole.SiteContributor);
|
||||
wordFile = FileModel.getRandomFileModel(FileType.MSWORD2007, "tasTesting");
|
||||
|
||||
STEP("1. Create folder1 with webdav");
|
||||
webDavProtocol.authenticateUser(testUser1).usingSite(publicSite).createFolder(testFolder1).and().assertThat().existsInRepo();
|
||||
|
||||
STEP("2. Create testFile1 inside folder1 using CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteContributor))
|
||||
.usingResource(testFolder1).createFile(wordFile)
|
||||
.assertThat().existsInRepo();
|
||||
|
||||
STEP("3. Delete wordFile content with CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(wordFile).deleteContent();
|
||||
|
||||
STEP("4. Update content using Contributor role with CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteContributor))
|
||||
.usingResource(wordFile).update(contentContributor)
|
||||
.assertThat().contentIs(contentContributor);
|
||||
|
||||
STEP("5. Append content using Manager role with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1)
|
||||
.usingResource(wordFile).update("content added by Manager")
|
||||
.assertThat().contentIs("content added by Manager");
|
||||
|
||||
STEP("6. Delete content that Manager added using Contributor role with CMIS");
|
||||
cmisAPI.authenticateUser(usersWithRoles.getOneUserWithRole(UserRole.SiteContributor))
|
||||
.usingResource(wordFile).deleteAllVersions(false)
|
||||
.and().assertThat().documentHasVersion(1.2);
|
||||
|
||||
STEP("7. Rename wordFile with WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(wordFile).rename("renamedFile.docx");
|
||||
|
||||
STEP("8. Delete file with FTP");
|
||||
ftpProtocol.authenticateUser(testUser1).usingResource(wordFile).delete().assertThat().doesNotExistInRepo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 76
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a public site using CMIS
|
||||
* 3. U1 creates testFile1 in public site's document library using FTP
|
||||
* 4. U1 adds comment1 for testFile1 using REST API
|
||||
* 5. U2 gets comment1 using REST API
|
||||
* 6. U1 updates testFile1 using WEBDAV
|
||||
* 7. U2 gets comment1 using REST API
|
||||
* 8. U1 deletes testFile1 using WebDAV
|
||||
* 9. U2 can not get comment1 using REST API
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT, TestGroup.COMMENTS }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify comment is deleted .")
|
||||
public void negativeScenarioWithComments() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a public site using CMIS");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in public site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 adds comment1 for testFile1 using REST API");
|
||||
String newComment = "This is a new comment added by " + testUser1.getUsername();
|
||||
restAPI.authenticateUser(testUser1).withCoreAPI().usingResource(testFile1).addComment(newComment).assertThat().field("content").isNotEmpty().and().field("content").is(newComment);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
|
||||
STEP("* 5. U2 gets comment1 using REST API");
|
||||
comments = restAPI.authenticateUser(testUser2).withCoreAPI().usingResource(testFile1).getNodeComments();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
comments.assertThat().entriesListContains("content", newComment);
|
||||
|
||||
STEP("* 6. U1 updates testFile1 using WEBDAV");
|
||||
String newContent = "This is new content added by " + testUser1.getUsername();
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile1).update(newContent).and().assertThat().contentIs(newContent);
|
||||
|
||||
STEP("* 7. U2 gets comment1 using REST API");
|
||||
comments = restAPI.authenticateUser(testUser2).withCoreAPI().usingResource(testFile1).getNodeComments();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
comments.assertThat().entriesListContains("content", newComment);
|
||||
|
||||
STEP("* 8. U1 deletes testFile1 using WebDAV");
|
||||
webDavProtocol.authenticateUser(testUser1).usingResource(testFile1).delete().and().assertThat().doesNotExistInRepo();
|
||||
|
||||
STEP("* 9. U2 can not get comment1 using REST API");
|
||||
comments = restAPI.authenticateUser(testUser2).withCoreAPI().usingResource(testFile1).getNodeComments();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, testFile1.getNodeRef()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 77
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a public site using CMIS
|
||||
* 3. U1 creates a file in public site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify manager permission to a document in a public site - is able to edit document.")
|
||||
public void addManagerPermissionToADocumentFromPublicSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a public site using CMIS");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in public site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteManager).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteManager);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(publicSite).usingResource(testFile1).update("new Content").assertThat().contentIs("new Content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 78
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a public site using CMIS
|
||||
* 3. U1 creates a file in public site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Collaborator to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify collaborator permission to a document in a public site - is able to edit document.")
|
||||
public void addCollaboratorPermissionToADocumentFromPublicSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a public site using CMIS");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in public site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteCollaborator).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteCollaborator);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(publicSite).usingResource(testFile1).update("new Content").assertThat().contentIs("new Content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 79
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a public site using CMIS
|
||||
* 3. U1 creates a file in public site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Contributor to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify contributor permission to a document in a public site - is not able to edit document.")
|
||||
public void addContributorPermissionToADocumentFromPublicSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a public site using CMIS");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in public site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteContributor).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteContributor);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(publicSite).usingResource(testFile1).update("new Content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).usingResource(testFile1).assertThat().contentIs("file1 content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 80
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a public site using CMIS
|
||||
* 3. U1 creates a file in public site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Consumer to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify consumer permission to a document in a public site - is not able to edit document.")
|
||||
public void addConsumerPermissionToADocumentFromPublicSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a public site using CMIS");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in public site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteConsumer).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteConsumer);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(publicSite).usingResource(testFile1).update("new Content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).usingResource(testFile1).assertThat().contentIs("file1 content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 107
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a moderated site using CMIS
|
||||
* 3. U1 creates a file in moderated site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify manager permission to a document in a moderated site - is not able to edit document.")
|
||||
public void addManagerPermissionToADocumentFromModeratedSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a moderated site using CMIS");
|
||||
moderatedSite = dataSite.usingUser(testUser1).createModeratedRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in moderated site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(moderatedSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteManager).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteManager);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(moderatedSite).usingResource(testFile1).update("new Content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(moderatedSite).usingResource(testFile1).assertThat().contentIs("file1 content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 108
|
||||
* 1. Using CMIS create two users: u1 and u2
|
||||
* 2. U1 creates a private site using CMIS
|
||||
* 3. U1 creates a file in private site's document library using FTP
|
||||
* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS
|
||||
* 5. U2 edits the document using FTP
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT }, executionType = ExecutionType.REGRESSION,
|
||||
description = "Verify manager permission to a document in a private site - is not able to edit document.")
|
||||
public void addManagerPermissionToADocumentFromPrivateSite() throws Exception
|
||||
{
|
||||
STEP("* 1. Using CMIS create two users: u1 and u2");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
testUser2 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("* 2. U1 creates a private site using CMIS");
|
||||
privateSite = dataSite.usingUser(testUser1).createPrivateRandomSite();
|
||||
|
||||
STEP("* 3. U1 creates a file in private site's document library using FTP");
|
||||
testFile1 = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, "file1 content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(privateSite).createFile(testFile1).then().assertThat().existsInRepo();
|
||||
|
||||
STEP("* 4. U1 applyAcl(permission) for U2 with role Site Manager to the document using CMIS");
|
||||
cmisAPI.authenticateUser(testUser1).usingResource(testFile1).addAcl(testUser2, UserRole.SiteManager).then().assertThat().permissionIsSetForUser(testUser2, UserRole.SiteManager);
|
||||
|
||||
STEP("* 5. U2 edits the document using FTP");
|
||||
ftpProtocol.authenticateUser(testUser2).usingSite(privateSite).usingResource(testFile1).update("new Content");
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(privateSite).usingResource(testFile1).assertThat().contentIs("file1 content");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scenario 60
|
||||
* 1. Using CMIS creates one test user: u1
|
||||
* 2. U1 creates testFile1 in public site using FTP
|
||||
* 3. U1 creates testFile2 in public site using FTP
|
||||
* 4. U1 updates testFile2 using FTP
|
||||
* 5. Compare created date with modified date
|
||||
*/
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.CONTENT}, executionType = ExecutionType.REGRESSION, description = "Compare Modified Date")
|
||||
public void manageModificationTimeOfFile() throws Exception
|
||||
{
|
||||
STEP("1. Using CMIS creates one test user: u1");
|
||||
testUser1 = dataUser.createRandomTestUser();
|
||||
|
||||
STEP("2. U1 creates testFile1 in a public site using FTP");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
testFile1 = new FileModel("testFile1", FileType.TEXT_PLAIN);
|
||||
ftpProtocol.authenticateUser(testUser1).usingSite(publicSite).createFile(testFile1).assertThat().existsInRepo();
|
||||
String modifiedDate1 = ftpProtocol.getModificationTime();
|
||||
|
||||
STEP("3. U1 creates testFile2 in a public site using FTP");
|
||||
publicSite = dataSite.usingUser(testUser1).createPublicRandomSite();
|
||||
testFile2 = new FileModel("testFile1", FileType.TEXT_PLAIN);
|
||||
Utility.waitToLoopTime(2);
|
||||
ftpProtocol.usingSite(publicSite).createFile(testFile2).assertThat().existsInRepo();
|
||||
String modifiedDate2 = ftpProtocol.getModificationTime();
|
||||
Utility.waitToLoopTime(2, "Waiting for update");
|
||||
|
||||
STEP("4. U1 updates testFile2 in a public site using FTP");
|
||||
ftpProtocol.update("test update").assertThat().contentIs("test update");
|
||||
String updatedDate2 = ftpProtocol.getModificationTime();
|
||||
|
||||
STEP("5. Compare created date with modified date");
|
||||
Assert.assertNotEquals(modifiedDate1, modifiedDate2, "Updated and modified dates are equal");
|
||||
Assert.assertNotEquals(modifiedDate2, updatedDate2, "Modified and updated dates are equal");
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,106 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.alfresco.cmis.CmisProperties;
|
||||
import org.alfresco.cmis.CmisWrapper;
|
||||
import org.alfresco.dataprep.WorkflowService;
|
||||
import org.alfresco.email.EmailProperties;
|
||||
import org.alfresco.email.ImapWrapper;
|
||||
import org.alfresco.email.SmtpWrapper;
|
||||
import org.alfresco.ftp.FTPWrapper;
|
||||
import org.alfresco.rest.core.RestProperties;
|
||||
import org.alfresco.rest.core.RestWrapper;
|
||||
import org.alfresco.utility.LogFactory;
|
||||
import org.alfresco.utility.data.DataContent;
|
||||
import org.alfresco.utility.data.DataGroup;
|
||||
import org.alfresco.utility.data.DataSite;
|
||||
import org.alfresco.utility.data.DataUser;
|
||||
import org.alfresco.utility.data.DataWorkflow;
|
||||
import org.alfresco.utility.extension.ExtentionPointTestUtility;
|
||||
import org.alfresco.utility.network.ServerHealth;
|
||||
import org.alfresco.webdav.WebDavWrapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.BeforeSuite;
|
||||
|
||||
@ContextConfiguration("classpath:alfresco-integration-context.xml")
|
||||
public abstract class IntegrationTest extends AbstractTestNGSpringContextTests
|
||||
{
|
||||
private static Logger LOG = LogFactory.getLogger();
|
||||
|
||||
@Autowired
|
||||
protected DataUser dataUser;
|
||||
|
||||
@Autowired
|
||||
protected DataSite dataSite;
|
||||
|
||||
@Autowired
|
||||
protected DataContent dataContent;
|
||||
|
||||
@Autowired
|
||||
protected DataGroup dataGroup;
|
||||
|
||||
@Autowired
|
||||
protected DataWorkflow dataWorkflow;
|
||||
|
||||
@Autowired
|
||||
protected WorkflowService workflow;
|
||||
|
||||
@Autowired
|
||||
protected FTPWrapper ftpProtocol;
|
||||
|
||||
@Autowired
|
||||
protected WebDavWrapper webDavProtocol;
|
||||
|
||||
@Autowired
|
||||
protected CmisWrapper cmisAPI;
|
||||
|
||||
@Autowired
|
||||
protected CmisProperties cmisProperties;
|
||||
|
||||
@Autowired
|
||||
protected ImapWrapper imapProtocol;
|
||||
|
||||
@Autowired
|
||||
protected RestWrapper restAPI;
|
||||
|
||||
@Autowired
|
||||
protected ServerHealth serverHealth;
|
||||
|
||||
@Autowired
|
||||
protected RestProperties restProperties;
|
||||
|
||||
@Autowired
|
||||
protected ExtentionPointTestUtility extentionPointTestUtility;
|
||||
|
||||
@Autowired
|
||||
protected SmtpWrapper smtpProtocol;
|
||||
|
||||
@Autowired
|
||||
EmailProperties emailProperties;
|
||||
|
||||
@BeforeSuite(alwaysRun = true)
|
||||
public void checkServerHealth() throws Exception
|
||||
{
|
||||
super.springTestContextPrepareTestInstance();
|
||||
serverHealth.assertServerIsOnline();
|
||||
}
|
||||
|
||||
@BeforeMethod(alwaysRun=true)
|
||||
public void showStartTestInfo(Method method)
|
||||
{
|
||||
LOG.info(String.format("*** STARTING Test: [%s] ***",method.getName()));
|
||||
}
|
||||
|
||||
@AfterMethod(alwaysRun=true)
|
||||
public void showEndTestInfo(Method method)
|
||||
{
|
||||
LOG.info(String.format("*** ENDING Test: [%s] ***", method.getName()));
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,88 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import io.restassured.RestAssured;
|
||||
import io.restassured.http.ContentType;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.json.JsonObject;
|
||||
|
||||
import org.alfresco.rest.core.JsonBodyGenerator;
|
||||
import org.alfresco.rest.core.RestRequest;
|
||||
import org.alfresco.rest.model.RestHtmlResponse;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
import org.alfresco.utility.report.Bug;
|
||||
import org.alfresco.utility.report.Bug.Status;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @author Catalin Gornea
|
||||
*/
|
||||
public class IntegrationWithAosTests extends IntegrationTest
|
||||
{
|
||||
@Bug(id = "REPO-2096", status = Status.FIXED)
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.AOS, TestGroup.FULL, TestGroup.SSO })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.AOS }, executionType = ExecutionType.REGRESSION, description = "Security check for AOS Protocol with External Authentification - MNT-17474")
|
||||
public void aosCSRFVulnerabilityInSSOEnvironment() throws Exception
|
||||
{
|
||||
STEP("1. Post call using RestAPI for specific AOS Security issue");
|
||||
UserModel adminUser = dataUser.getAdminUser();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String authCookie = String.format("%s:%s", adminUser.getUsername(), adminUser.getPassword());
|
||||
String authCookieEncoded = new String(Base64.encodeBase64(authCookie.getBytes()));
|
||||
headers.put("Authorization", String.format("Basic %s", authCookieEncoded));
|
||||
|
||||
restAPI.configureRequestSpec().addHeaders(headers);
|
||||
JsonObject postBody = JsonBodyGenerator.defineJSON().add("method", "create url-directories:6.0.2.8164")
|
||||
.add("urldirs", "[[url=ExploitedMNT17474;meta_info=[]]]").build();
|
||||
restAPI.authenticateUser(adminUser).usingContentType(ContentType.URLENC).withAosAPI();
|
||||
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, postBody.toString(), "_vti_bin/_vti_aut/author.dll");
|
||||
restAPI.process(request);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
@Bug(id = "REPO-2172", status = Status.FIXED)
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.AOS, TestGroup.FULL, TestGroup.SSO })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.AOS },
|
||||
executionType = ExecutionType.REGRESSION, description = "Non domain user can login to aos through Kerberos successfully.")
|
||||
public void nonDomainKerberosUserCanLoginSuccessfulInAos() throws Exception {
|
||||
|
||||
STEP("1. Perform a GET request of aos using a non-domain kerberos user");
|
||||
String webDavUrl = "alfresco/aos";
|
||||
|
||||
RestAssured.basePath = "";
|
||||
restAPI.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, webDavUrl);
|
||||
RestHtmlResponse response = restAPI.authenticateUser(dataUser.getAdminUser()).processHtmlResponse(request);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertPathInHtmlBodyEquals("html.body.table.tr[1].td[0].text()", "Shared");
|
||||
response.assertPathInHtmlBodyEquals("html.body.table.tr[2].td[0].text()", "Imap Attachments");
|
||||
}
|
||||
|
||||
@Bug(id = "REPO-2172", status = Status.FIXED)
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.WEBDAV, TestGroup.FULL, TestGroup.SSO })
|
||||
@TestRail(section = { TestGroup.INTEGRATION, TestGroup.WEBDAV },
|
||||
executionType = ExecutionType.REGRESSION, description = "Non domain user can login to webdav through Kerberos successfully.")
|
||||
public void nonDomainKerberosUserCanLoginSuccessfulInWebDav() throws Exception {
|
||||
|
||||
STEP("1. Perform a GET request of webdav using a non-domain kerberos user");
|
||||
String webDavUrl = "alfresco/webdav";
|
||||
|
||||
RestAssured.basePath = "";
|
||||
restAPI.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, webDavUrl);
|
||||
RestHtmlResponse response = restAPI.authenticateUser(dataUser.getAdminUser()).processHtmlResponse(request);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertPathInHtmlBodyEquals("html.body.table.tr.td[0].text()", "Directory listing for /");
|
||||
response.assertPathInHtmlBodyEquals("html.body.table.tr.td.find{it.@class=='textData'}[0].text()", "Shared");
|
||||
}
|
||||
}
|
@@ -0,0 +1,189 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import io.restassured.RestAssured;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.alfresco.rest.core.JsonBodyGenerator;
|
||||
import org.alfresco.rest.core.RestRequest;
|
||||
import org.alfresco.rest.core.RestResponse;
|
||||
import org.alfresco.rest.model.RestNodeModel;
|
||||
import org.alfresco.rest.model.RestRenditionInfoModel;
|
||||
import org.alfresco.utility.Utility;
|
||||
import org.alfresco.utility.exception.DataPreparationException;
|
||||
import org.alfresco.utility.model.FileModel;
|
||||
import org.alfresco.utility.model.FileType;
|
||||
import org.alfresco.utility.model.FolderModel;
|
||||
import org.alfresco.utility.model.SiteModel;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
import org.alfresco.utility.report.Bug;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
|
||||
public class IntegrationWithCmisTests extends IntegrationTest
|
||||
{
|
||||
private UserModel user;
|
||||
private SiteModel site;
|
||||
|
||||
@BeforeClass(alwaysRun = true)
|
||||
public void createUserAndSite() throws DataPreparationException
|
||||
{
|
||||
user = dataUser.createRandomTestUser();
|
||||
site = dataSite.usingUser(user).createPublicRandomSite();
|
||||
}
|
||||
|
||||
// @Test(groups = { TestGroup.INTEGRATION, TestGroup.CMIS, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.CMIS }, executionType = ExecutionType.REGRESSION, description = "Verify getChildren action for a large number of files from CMIS returns only unique values with few retries")
|
||||
public void verifyGetChildrenReturnsUniqueValues() throws Exception
|
||||
{
|
||||
STEP("1. Create user, site, folder.");
|
||||
FolderModel folder = FolderModel.getRandomFolderModel();
|
||||
folder = dataContent.usingUser(user).usingSite(site).createFolder(folder);
|
||||
|
||||
STEP("2. Create 5000 files in folder using webscript");
|
||||
int totalFiles = 5000;
|
||||
String fileCreationWebScript = "alfresco/s/api/model/filefolder/load";
|
||||
HashMap<String, String> input = new HashMap<String, String>();
|
||||
input.put("folderPath", folder.getCmisLocation());
|
||||
input.put("fileCount", String.valueOf(totalFiles));
|
||||
String postBody = JsonBodyGenerator.keyValueJson(input);
|
||||
|
||||
RestAssured.basePath = "";
|
||||
restAPI.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, postBody, fileCreationWebScript);
|
||||
RestResponse response = restAPI.authenticateUser(user).process(request);
|
||||
Assert.assertEquals(response.getResponse().getStatusCode(), HttpStatus.OK.value());
|
||||
|
||||
STEP("3. Verify getChildren from CMIS returns unique values");
|
||||
cmisAPI.authenticateUser(user).usingSite(site).usingResource(folder);
|
||||
for (int i = 1; i <= 20; i++)
|
||||
{
|
||||
System.out.println(String.format("Try no: %d", i));
|
||||
cmisAPI.usingResource(folder).assertThat().hasUniqueChildren(totalFiles);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.CMIS, TestGroup.CORE })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.CMIS }, executionType = ExecutionType.REGRESSION, description = "Verify content and thumbnail of TIF files are retrieved by CMIS ")
|
||||
@Bug(id = "REPO-2042", description = "Should fail only on MAC OS System and Linux")
|
||||
public void verifyContentAndThumbnailForTifFile() throws Exception
|
||||
{
|
||||
STEP("1. Create user, site and a folder ");
|
||||
FolderModel folder = FolderModel.getRandomFolderModel();
|
||||
folder = dataContent.usingUser(user).usingSite(site).createFolder(folder);
|
||||
|
||||
STEP("2. Upload existing TIF file using RESTAPI");
|
||||
restAPI.authenticateUser(user).configureRequestSpec().addMultiPart("filedata", Utility.getResourceTestDataFile("my-file.tif"));
|
||||
|
||||
RestNodeModel fileNode = restAPI.authenticateUser(user).withCoreAPI().usingNode(folder).createNode();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.CREATED);
|
||||
FileModel file = new FileModel("my-file.tif");
|
||||
file.setCmisLocation(folder.getCmisLocation() + "/my-file.tif");
|
||||
file.setNodeRef(fileNode.getId());
|
||||
|
||||
STEP("3. Create thumbnail and content of TIF files using file");
|
||||
restAPI.withCoreAPI().usingNode(file).createNodeRendition("pdf");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.ACCEPTED);
|
||||
restAPI.withCoreAPI().usingNode(file).createNodeRendition("doclib");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.ACCEPTED);
|
||||
|
||||
STEP("4. Verify thumbnail and content of TIF files are created using RESTAPI");
|
||||
cmisAPI.authenticateUser(user).usingSite(site).usingResource(folder).usingResource(file).assertThat().contentContains("Adobe Photoshop CC 2015");
|
||||
RestRenditionInfoModel renditionInfo = restAPI.withCoreAPI().usingNode(file).getNodeRendition("pdf");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
renditionInfo.assertThat().field("status").is("CREATED");
|
||||
renditionInfo = restAPI.withCoreAPI().usingNode(file).getNodeRendition("doclib");
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
renditionInfo.assertThat().field("status").is("CREATED");
|
||||
}
|
||||
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.CMIS, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.CMIS }, executionType = ExecutionType.REGRESSION, description = "Verify getChildren action for a large number of files from CMIS returns only unique values with few retries")
|
||||
public void verifyContentDispositionForContentThatAreWhiteListed() throws Exception
|
||||
{
|
||||
|
||||
STEP("1. Create a .pdf and a .html file in the Shared folder in CMIS");
|
||||
FolderModel sharedFolder = FolderModel.getSharedFolderModel();
|
||||
FileModel pdfFile = FileModel.getRandomFileModel(FileType.PDF);
|
||||
FileModel htmlFile = FileModel.getRandomFileModel(FileType.HTML);
|
||||
|
||||
STEP("2. Upload the .pdf file and verify the reponse header adding the download=inline/attachement parameters (accepted both).");
|
||||
cmisAPI.authenticateUser(user).usingResource(sharedFolder).createFile(pdfFile);
|
||||
|
||||
RestResponse response = restAPI.authenticateUser(user).withCMISApi().getRootObjectByLocation(pdfFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("inline; filename=%s", pdfFile.getName()));
|
||||
|
||||
response = restAPI.authenticateUser(user).withCMISApi().usingParams("download=inline").getRootObjectByLocation(pdfFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("inline; filename=%s", pdfFile.getName()));
|
||||
|
||||
response = restAPI.authenticateUser(user).withCMISApi().usingParams("download=attachment").getRootObjectByLocation(pdfFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("attachment; filename=%s", pdfFile.getName()));
|
||||
|
||||
STEP("3. Upload the .html file and verify the reponse header adding the download=inline/attachement parameters (accepted only attachment) .");
|
||||
cmisAPI.usingResource(sharedFolder).createFile(htmlFile);
|
||||
|
||||
response = restAPI.authenticateUser(user).withCMISApi().getRootObjectByLocation(htmlFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("attachment; filename=%s", htmlFile.getName()));
|
||||
|
||||
response = restAPI.authenticateUser(user).withCMISApi().usingParams("download=attachment").getRootObjectByLocation(htmlFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("attachment; filename=%s", htmlFile.getName()));
|
||||
|
||||
response = restAPI.authenticateUser(user).withCMISApi().usingParams("download=inline").getRootObjectByLocation(htmlFile);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
response.assertThat().header("Content-Disposition", String.format("attachment; filename=%s", htmlFile.getName()));
|
||||
}
|
||||
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.CMIS, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.CMIS }, executionType = ExecutionType.SANITY, description = "Verify that alfresco returns the correct encoding for files created via CMIS.")
|
||||
public void verifyFileEncodingUsingCMIS() throws Exception
|
||||
{
|
||||
STEP("1. Create a folder, two text file with specific encoding content and define the expected encoding.");
|
||||
FileModel utf8File = FileModel.getRandomFileModel(FileType.TEXT_PLAIN, " ∮ E⋅da = Q");
|
||||
FileModel iso8859File = FileModel.getRandomFileModel(FileType.TEXT_PLAIN,
|
||||
"<html><head><title>aegif Mind Share Leader Generating New Paradigms by aegif corporation</title></head><body><p> Test html</p></body></html></body></html>");
|
||||
String utf8Type = "text/plain;charset=UTF-8";
|
||||
String iso8859Type = "text/plain;charset=ISO-8859-1";
|
||||
|
||||
STEP("2. Upload the files via CMIS.");
|
||||
cmisAPI.authenticateUser(user).usingSite(site).createFile(utf8File);
|
||||
cmisAPI.createFile(iso8859File);
|
||||
|
||||
String fileCreationWebScript = "alfresco/service/api/node/content/workspace/SpacesStore/";
|
||||
RestAssured.basePath = "";
|
||||
|
||||
STEP("3. Retrieve the nodes via webscripts and verify that the content type is the expected one (GET alfresco/service/api/node/content/workspace/SpacesStore/).");
|
||||
restAPI.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, fileCreationWebScript + utf8File.getNodeRefWithoutVersion());
|
||||
RestResponse response = restAPI.authenticateUser(user).process(request);
|
||||
Assert.assertEquals(response.getResponse().getStatusCode(), HttpStatus.OK.value());
|
||||
Assert.assertEquals(response.getResponse().getContentType(), utf8Type);
|
||||
|
||||
request = RestRequest.simpleRequest(HttpMethod.GET, fileCreationWebScript + iso8859File.getNodeRefWithoutVersion());
|
||||
response = restAPI.process(request);
|
||||
Assert.assertEquals(response.getResponse().getStatusCode(), HttpStatus.OK.value());
|
||||
Assert.assertEquals(response.getResponse().getContentType(), iso8859Type);
|
||||
|
||||
// Commented the use of v1 RestAPI GET (nodes/{nodeId}), because it works on alfresco 5.2.N or above.
|
||||
// STEP("3. Retrieve the nodes and verify that the content type is the expected one (GET nodes/{nodeId}).");
|
||||
// restAPI.authenticateUser(user).withCoreAPI().usingNode(utf8File).getNodeContent().assertThat().contentType(utf8Type);
|
||||
// restAPI.authenticateUser(user).withCoreAPI().usingNode(iso8859File).getNodeContent().assertThat().contentType(iso8859Type);
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,82 @@
|
||||
package org.alfresco.tas.integration;
|
||||
|
||||
import static org.alfresco.utility.report.log.Step.STEP;
|
||||
|
||||
import io.restassured.RestAssured;
|
||||
import io.restassured.http.Cookie;
|
||||
import io.restassured.response.Response;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.HashMap;
|
||||
|
||||
import java.util.List;
|
||||
import org.alfresco.rest.core.JsonBodyGenerator;
|
||||
import org.alfresco.rest.core.RestRequest;
|
||||
import org.alfresco.rest.model.RestPersonModel;
|
||||
import org.alfresco.utility.Utility;
|
||||
import org.alfresco.utility.model.TestGroup;
|
||||
import org.alfresco.utility.model.UserModel;
|
||||
import org.alfresco.utility.report.Bug;
|
||||
import org.alfresco.utility.testrail.ExecutionType;
|
||||
import org.alfresco.utility.testrail.annotation.TestRail;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class IntegrationWithWebScriptsTests extends IntegrationTest
|
||||
{
|
||||
@Test(groups = { TestGroup.INTEGRATION, TestGroup.REST_API, TestGroup.FULL })
|
||||
@TestRail(section = { TestGroup.INTEGRATION,
|
||||
TestGroup.REST_API }, executionType = ExecutionType.REGRESSION, description = "Verify when importing multiple users via CSV, if the password is not set in the CSV file, user will be disable")
|
||||
public void verifyCSVUserImportDisableUserAndGivesRandomPasswordIfItIsMissing() throws Exception
|
||||
{
|
||||
STEP("1.Upload the CSV File that contains the users.");
|
||||
restAPI.authenticateUser(dataUser.getAdminUser()).configureRequestSpec().addMultiPart("filedata",
|
||||
Utility.getResourceTestDataFile("userCSV.csv"));
|
||||
String fileCreationWebScript = "alfresco/s/api/people/upload";
|
||||
RestAssured.basePath = "";
|
||||
restAPI.configureRequestSpec().setBasePath(RestAssured.basePath);
|
||||
RestRequest request = RestRequest.simpleRequest(HttpMethod.POST, fileCreationWebScript);
|
||||
restAPI.authenticateUser(dataUser.getAdminUser()).process(request);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
|
||||
STEP("2.Verify that user1np is disabled and user2 is enabled");
|
||||
UserModel disabledUserPerson = new UserModel("MNT-171990-user-with-no-password", "user1");
|
||||
UserModel enabledUserPerson = new UserModel("MNT-171990-user-with-password", "user2");
|
||||
RestPersonModel personModel = restAPI.authenticateUser(dataUser.getAdminUser()).withCoreAPI()
|
||||
.usingUser(new UserModel(disabledUserPerson.getUsername(), disabledUserPerson.getPassword())).getPerson();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
personModel.assertThat().field("enabled").is("false");
|
||||
personModel = restAPI.authenticateUser(dataUser.getAdminUser()).withCoreAPI()
|
||||
.usingUser(new UserModel(enabledUserPerson.getUsername(), enabledUserPerson.getPassword())).getPerson();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
personModel.assertThat().field("enabled").is("true");
|
||||
|
||||
STEP("3.Activate the disabled user.");
|
||||
HashMap<String, String> input = new HashMap<String, String>();
|
||||
input.put("enabled", "true");
|
||||
String putBody = JsonBodyGenerator.keyValueJson(input);
|
||||
restAPI.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingUser(disabledUserPerson).updatePerson(putBody);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
|
||||
STEP("4.Verify that the disabled user has a randomly generated password not the same as firstname(DOCS-2755)");
|
||||
restAPI.authenticateUser(disabledUserPerson).withCoreAPI()
|
||||
.usingUser(new UserModel(enabledUserPerson.getUsername(), enabledUserPerson.getPassword())).getPerson();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
|
||||
|
||||
STEP("5.Change the user password and try an Rest API call.");
|
||||
input = new HashMap<String, String>();
|
||||
input.put("password", "newPassword1");
|
||||
putBody = JsonBodyGenerator.keyValueJson(input);
|
||||
restAPI.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingUser(disabledUserPerson).updatePerson(putBody);
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
disabledUserPerson = new UserModel(disabledUserPerson.getUsername(), "newPassword1");
|
||||
restAPI.authenticateUser(disabledUserPerson).withCoreAPI()
|
||||
.usingUser(new UserModel(enabledUserPerson.getUsername(), enabledUserPerson.getPassword())).getPerson();
|
||||
restAPI.assertStatusCodeIs(HttpStatus.OK);
|
||||
|
||||
dataUser.usingAdmin().deleteUser(disabledUserPerson);
|
||||
dataUser.usingAdmin().deleteUser(enabledUserPerson);
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context-3.0.xsd
|
||||
http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
|
||||
|
||||
<context:annotation-config />
|
||||
<context:component-scan base-package="org.alfresco" />
|
||||
<import resource="classpath:dataprep-context.xml" />
|
||||
<import resource="classpath*:alfresco-cifs-context.xml" />
|
||||
<import resource="classpath*:alfresco-ftp-context.xml" />
|
||||
<import resource="classpath*:alfresco-restapi-context.xml" />
|
||||
<import resource="classpath*:alfresco-cmis-context.xml" />
|
||||
<import resource="classpath*:alfresco-smtp-context.xml" />
|
||||
<import resource="classpath*:alfresco-imap-context.xml" />
|
||||
<import resource="classpath*:alfresco-webdav-context.xml" />
|
||||
<import resource="classpath*:alfresco-share-po-context.xml" />
|
||||
</beans>
|
||||
|
@@ -0,0 +1,148 @@
|
||||
# dataprep related
|
||||
alfresco.scheme=http
|
||||
alfresco.server=localhost
|
||||
alfresco.port=8082
|
||||
|
||||
# credentials
|
||||
admin.user=admin
|
||||
admin.password=admin
|
||||
admin.name=Administrator
|
||||
|
||||
# in containers we cannot access directly JMX, so we will use http://jolokia.org agent
|
||||
# disabling this we will use direct JMX calls to server
|
||||
jmx.useJolokiaAgent=false
|
||||
|
||||
# Server Health section
|
||||
# in ServerHealth#isServerReachable() - could also be shown.
|
||||
# enable this option to view if on server there are tenants or not
|
||||
serverHealth.showTenants=false
|
||||
|
||||
# IMAP Service settings from admin console
|
||||
imap.server=${alfresco.server}
|
||||
imap.port=143
|
||||
imaps.port=993
|
||||
|
||||
# Inbound Email settings from admin console
|
||||
smtp.server=${alfresco.server}
|
||||
smtp.port=25
|
||||
smtp.authentication.enabled=true
|
||||
smtp.tsl.enabled=false
|
||||
|
||||
# Outbound Email settings from admin console
|
||||
mail.encoding=UTF-8
|
||||
mail.from.default=admin@alfness.com
|
||||
mail.from.enabled=true
|
||||
mail.host=172.29.100.164
|
||||
mail.password=admin
|
||||
mail.port=25
|
||||
mail.protocol=smtp
|
||||
mail.smtp.auth=true
|
||||
mail.smtp.debug=false
|
||||
mail.smtp.starttls.enable=true
|
||||
mail.smtp.timeout=30000
|
||||
mail.smtps.auth=true
|
||||
mail.smtps.starttls.enable=true
|
||||
mail.username=admin@alfness.com
|
||||
|
||||
# FTP related
|
||||
ftp.port=21
|
||||
ftp.timeout=20000
|
||||
# use passive or active depending where the tests are run
|
||||
# (docker env or not)
|
||||
ftp.passiveMode=true
|
||||
|
||||
# CMIS related
|
||||
# set cmis binding to 'browser' or 'atom'
|
||||
cmis.binding=browser
|
||||
cmis.basePath=/alfresco/api/-default-/public/cmis/versions/1.1/${cmis.binding}
|
||||
|
||||
# WEBDAV related
|
||||
webdav.port=${alfresco.port}
|
||||
|
||||
# AOS related
|
||||
aos.path=/alfresco/aos
|
||||
aos.windowsNetwork=\\\${alfresco.server}:${alfresco.port}${aos.path}
|
||||
aos.linuxNetwork=${alfresco.scheme}://${alfresco.server}:${alfresco.port}${aos.path}
|
||||
|
||||
# TEST MANAGEMENT SECTION - Test Rail
|
||||
#
|
||||
# (currently supporting Test Rail v5.2.1.3472 integration)
|
||||
#
|
||||
# Example of configuration:
|
||||
# ------------------------------------------------------
|
||||
# if testManagement.enabled=true we enabled TestRailExecutorListener (if used in your suite xml file)
|
||||
# testManagement.updateTestExecutionResultsOnly=true (this will just update the results of a test: no step will be updated - good for performance)
|
||||
# testManagement.endPoint=https://alfresco.testrail.com/
|
||||
# testManagement.username=<username>
|
||||
# testManagement.apiKey=<api-key>
|
||||
# testManagement.project=<id-of-your-project
|
||||
# testManagement.testRun=<test-run-name>
|
||||
# testManagement.includeOnlyTestCasesExecuted=true #if you want to include in your run ONLY the test cases that you run, then set this value to false
|
||||
# testManagement.rateLimitInSeconds=1 #is the default rate limit after what minimum time, should we upload the next request. http://docs.gurock.com/testrail-api2/introduction #Rate Limit
|
||||
# testManagement.suiteId=23 (the id of the Master suite)
|
||||
# ------------------------------------------------------
|
||||
testManagement.enabled=false
|
||||
testManagement.endPoint=
|
||||
testManagement.username=
|
||||
testManagement.apiKey=
|
||||
testManagement.project=7
|
||||
testManagement.includeOnlyTestCasesExecuted=true
|
||||
testManagement.rateLimitInSeconds=1
|
||||
testManagement.testRun=MyTestRunInTestRail
|
||||
testManagement.suiteId=12
|
||||
|
||||
# The location of the reports path
|
||||
reports.path=./target/reports
|
||||
|
||||
#
|
||||
# Database Section
|
||||
# You should provide here the database URL, that can be a differed server as alfresco.
|
||||
# https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html
|
||||
#
|
||||
# Current supported db.url:
|
||||
#
|
||||
# MySQL:
|
||||
# db.url = jdbc:mysql://${alfresco.server}:3306/alfresco
|
||||
#
|
||||
# PostgreSQL:
|
||||
# db.url = jdbc:postgresql://<your-DB-IP>:3306/alfresco
|
||||
#
|
||||
# Oracle:
|
||||
# db.url = jdbc:oracle://<your-DB-IP>:3306/alfresco
|
||||
#
|
||||
# MariaDB:
|
||||
# db.url = jdbc:mariadb://<your-DB-IP>:3306/alfresco
|
||||
#
|
||||
db.url = jdbc:mysql://${alfresco.server}:3306/alfresco
|
||||
db.username = alfresco
|
||||
db.password = alfresco
|
||||
|
||||
# ------------------------------------------------------
|
||||
#WEB specific
|
||||
# ------------------------------------------------------
|
||||
# set browser type: Firefox, Chrome
|
||||
browser.name=Firefox
|
||||
browser.version=41.0
|
||||
# browser.chrome.driver=/Users/p3700454/projects/drivers/chromedriver
|
||||
env.platform=WINDOWS
|
||||
|
||||
# default implicit wait for web elements to be rendered
|
||||
browser.implicitWait=3
|
||||
browser.explicitWait=30
|
||||
|
||||
share.port=${alfresco.port}
|
||||
share.url=${alfresco.scheme}://${alfresco.server}:${share.port}/share
|
||||
share2.url=${server2.url}:${server2.port}/share
|
||||
server2.port=9090
|
||||
server2.url=http://172.29.100.215
|
||||
|
||||
# location of all screenshots taken on failed test
|
||||
screenshots.dir=screenshots
|
||||
|
||||
# grid based settings
|
||||
grid.enabled=false
|
||||
grid.url=http://127.0.0.1:4444/wd/hub
|
||||
|
||||
# handle internationalization
|
||||
locale.language=en
|
||||
locale.country=US
|
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite name="Integration" preserve-order="true">
|
||||
<listeners>
|
||||
<listener class-name="org.alfresco.utility.report.HtmlReportListener"/>
|
||||
<listener class-name="org.alfresco.utility.testrail.TestRailExecutorListener"/>
|
||||
<listener class-name="org.alfresco.utility.testng.OSTestMethodSelector"/>
|
||||
</listeners>
|
||||
|
||||
<test name="Integration Tests">
|
||||
<packages>
|
||||
<package name="org.alfresco.tas.integration.*"/>
|
||||
</packages>
|
||||
</test>
|
||||
</suite>
|
@@ -0,0 +1,26 @@
|
||||
# Root logger option
|
||||
log4j.rootLogger=INFO, file, stdout
|
||||
|
||||
# Direct log messages to a log file
|
||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.file.File=./target/reports/alfresco-tas.log
|
||||
log4j.appender.file.MaxBackupIndex=10
|
||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.file.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||
|
||||
# Direct log messages to stdout
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.Target=System.out
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=[%t] %d{HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||
|
||||
# TestRail particular log file
|
||||
# Direct log messages to a log file
|
||||
log4j.appender.testrailLog=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.testrailLog.File=./target/reports/alfresco-testrail.log
|
||||
log4j.appender.testrailLog.MaxBackupIndex=10
|
||||
log4j.appender.testrailLog.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.testrailLog.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||
|
||||
log4j.category.testrail=INFO, testrailLog
|
||||
log4j.additivity.testrail=false
|
0
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/.keepme
vendored
Normal file
0
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/.keepme
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<xs:schema attributeFormDefault="unqualified"
|
||||
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="ExtensionPointTestSuite">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="name" />
|
||||
<xs:element type="xs:string" name="description" />
|
||||
<xs:element name="TestCases">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="testcase" maxOccurs="unbounded"
|
||||
minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:string" name="description" />
|
||||
<xs:element type="xs:int" name="duration" />
|
||||
<xs:element type="xs:string" name="actualValue" />
|
||||
<xs:element type="xs:string" name="expectedValue" />
|
||||
<xs:element type="xs:string" name="stackTrace" />
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="name" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/flower.jpg
vendored
Normal file
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/flower.jpg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/my-file.tif
vendored
Normal file
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/my-file.tif
vendored
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
text file to upload
|
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.docx
vendored
Normal file
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.docx
vendored
Normal file
Binary file not shown.
1
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.html
vendored
Normal file
1
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.html
vendored
Normal file
@@ -0,0 +1 @@
|
||||
test
|
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.msg
vendored
Normal file
BIN
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.msg
vendored
Normal file
Binary file not shown.
196
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.rtf
vendored
Normal file
196
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/test.rtf
vendored
Normal file
@@ -0,0 +1,196 @@
|
||||
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}
|
||||
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
||||
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
|
||||
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f430\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f431\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
|
||||
{\f433\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f434\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f437\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f438\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}
|
||||
{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}
|
||||
{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}
|
||||
{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
|
||||
{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
|
||||
{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
|
||||
{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
|
||||
{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
|
||||
{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
|
||||
{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}
|
||||
{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
|
||||
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
|
||||
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
||||
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
|
||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
|
||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
||||
\fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
|
||||
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
|
||||
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused
|
||||
Normal Table;}}{\*\rsidtbl \rsid5330132\rsid6713591\rsid12614322\rsid14699881}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Alecsandru Pruna}
|
||||
{\creatim\yr2017\mo2\dy9\hr9\min19}{\revtim\yr2017\mo2\dy9\hr9\min20}{\version4}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars5}{\nofcharsws5}{\vern19}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
|
||||
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
|
||||
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
|
||||
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot14699881 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
|
||||
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
|
||||
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
|
||||
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
|
||||
\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid5330132 \hich\af31506\dbch\af31505\loch\f31506 t}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14699881
|
||||
\hich\af31506\dbch\af31505\loch\f31506 est}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid12614322
|
||||
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid6713591
|
||||
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
|
||||
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
|
||||
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
|
||||
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
|
||||
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
|
||||
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
|
||||
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
|
||||
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
|
||||
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
|
||||
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
|
||||
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
|
||||
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100ec7f4c3895070000c9200000160000007468656d652f7468656d652f
|
||||
7468656d65312e786d6cec59cd8b1bc915bf07f23f347d97f5d5ad8fc1f2a24fcfda33b6b164873dd648a5eef2547789aad28cc56208de532e81c026e49085bd
|
||||
ed21842cecc22eb9e48f31d8249b3f22afaa5bdd5552c99e191c3061463074977eefd5afde7bf5de53d5ddcf5e26d4bbc05c1096f6fcfa9d9aefe174ce16248d
|
||||
7afeb3d9a4d2f13d2151ba4094a5b8e76fb0f03fbbf7eb5fdd454732c609f6403e1547a8e7c752ae8eaa5531876124eeb0154ee1bb25e30992f0caa3ea82a34b
|
||||
d09bd06aa3566b55134452df4b51026a1f2f97648ebd9952e9dfdb2a1f53784da5500373caa74a35b6243476715e5708b11143cabd0b447b3eccb3609733fc52
|
||||
fa1e4542c2173dbfa6fffceabdbb5574940b517940d6909be8bf5c2e17589c37f49c3c3a2b260d823068f50bfd1a40e53e6edc1eb7c6ad429f06a0f91c569a71
|
||||
31758683ee6014e65803943d3a748fdaa366ddc21bfa9b7b9cfba1fa58780dcaf4077bf8c9640856b4f01a94e1c33d7c10b41bc3c0c26b50866fede1dbb5fe28
|
||||
685b780d8a2949cff7d0b5b0d51c6e575b40968c1e3be1dd3098b41bb9f21205d15044979a62c9527928d612f482f1090014902249524f6e567889e610c54344
|
||||
c91927de09896208bc154a9980e15aa336a935e1bffa04fa495b041d6164482b5ec044ec0d293e9e9873b2923dff0168f50dc8db9f7f7ef3fac737af7f7af3d5
|
||||
576f5eff3d9f5babb2e48e511a9972bf7cf787ff7cf35befdf3f7cfbcbd77fcca6dec50b13ffee6fbf7bf78f7fbe4f3dacb834c5db3f7dffeec7efdffef9f7ff
|
||||
faebd70eed7d8ece4cf88c2458788ff0a5f79425b040077f7cc6af27318b113125fa6924508ad42c0efd63195be8471b44910337c0b61d9f7348352ee0fdf50b
|
||||
8bf034e66b491c1a1fc689053c658c0e18775ae1a19acb30f36c9d46eec9f9dac43d45e8c235f710a59697c7eb15e458e252398cb145f30945a944114eb1f4d4
|
||||
77ec1c63c7eabe20c4b2eb29997326d8527a5f106f8088d324337266455329744c12f0cbc64510fc6dd9e6f4b93760d4b5ea11beb091b0371075909f616a99f1
|
||||
3e5a4b94b854ce50424d839f2019bb484e377c6ee2c64282a7234c99375e60215c328f39acd770fa4348336eb79fd24d6223b924e72e9d278831133962e7c318
|
||||
252b17764ad2d8c47e2ece214491f7844917fc94d93b44bd831f507ad0ddcf09b6dcfde16cf00c32ac49a90c10f5cd9a3b7c791f332b7ea71bba44d8956afa3c
|
||||
b1526c9f1367740cd69115da271853748916187bcf3e773018b09565f392f48318b2ca317605d60364c7aa7a4fb1805e493537fb79f284082b64a7386207f89c
|
||||
6e7612cf06a509e287343f02af9b361f43a94b5c01f098cecf4de023023d20c48bd3288f05e83082fba0d62731b20a987a17ee78dd70cb7f57d963b02f5f5834
|
||||
aeb02f41065f5b0612bb29f35edbcc10b52628036686a0cb70a55b10b1dc5f8aa8e2aac5d64eb9a5bd694b37407764353d09493fd801edf43ee1ffaef7810ee3
|
||||
ed5fbe71ec838fd3efb8155bc9ea9a9dcea16472bcd3df1cc2ed763543c617e4d36f6a46689d3ec15047f633d66d4f73dbd3f8fff73dcda1fd7cdbc91cea376e
|
||||
3b191f3a8cdb4e263f5cf9389d4cd9bc405fa30e3cb2831e7dec931c3cf559124aa77243f189d0073f027ecf2c2630a8e4f489272e4e0157313caa32071358b8
|
||||
88232de371267f43643c8dd10a4e87eabe5212895c7524bc15137068a4879dba159eae9353b6c80e3beb7575b09955568164395e0b8b7138a89219bad52e0ff0
|
||||
0af59a6da40f5ab70494ec75481893d9249a0e12ededa032923ed605a33948e8957d14165d078b8e52bf75d51e0ba05678057e707bf033bde787018880109cc7
|
||||
4173be507eca5cbdf5ae76e6c7f4f421635a11000df636024a4f7715d783cb53abcb42ed0a9eb64818e16693d096d10d9e88e167701e9d6af42a34aeebeb6ee9
|
||||
528b9e32859e0f42aba4d1eebc8fc54d7d0d72bbb981a666a6a0a977d9f35bcd1042668e563d7f0987c6f098ac207684facd856804372f73c9b30d7f93ccb2e2
|
||||
428e90883383eba49365838448cc3d4a929eaf965fb881a63a87686ef50624844f965c17d2caa7460e9c6e3b192f97782e4db71b23cad2d92b64f82c5738bfd5
|
||||
e237072b49b606774fe3c5a57746d7fc2982100bdb7565c00511707750cfacb92070195624b232fe760a539e76cddb281d43d938a2ab18e515c54ce6195ca7f2
|
||||
828e7e2b6c60bce56b06831a26c90be159a40aac6954ab9a165523e370b0ea7e584859ce489a65cdb4b28aaa9aee2c66cdb02d033bb6bc599137586d4d0c39cd
|
||||
acf059eade4db9dd6daedbe9138a2a01062fece7a8ba57280806b572328b9a62bc9f8655cece47eddab15de007a85da5481859bfb555bb63b7a24638a783c11b
|
||||
557e90db8d5a185a6efb4a6d697d6b6e5e6cb3b317903c46d0e5aea914da9570b2cb11344453dd93646903b6c84b996f0d78f2d69cf4fc2f6b613f1836c261a5
|
||||
d609c795a019d42a9db0dfacf4c3b0591f87f5da68d078058545c6493dcc6eec2770814137f9bdbd1edfbbbb4fb6773477e62ca9327d375fd5c4f5dd7dbd71f8
|
||||
eede239074be6c3526dd6677d0aa749bfd4925180d3a95eeb035a88c5ac3f668321a869deee495ef5d6870d06f0e83d6b85369d587c34ad0aa29fa9d6ea51d34
|
||||
1afda0ddef8c83feabbc8d819567e923b7059857f3baf75f000000ffff0300504b0304140006000800000021000dd1909fb60000001b01000027000000746865
|
||||
6d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e435
|
||||
0d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452
|
||||
282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173
|
||||
d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c02000013000000000000000000
|
||||
00000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b0000000000000000
|
||||
0000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c000000000000000000000000001902
|
||||
00007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d0014000600080000002100ec7f4c3895070000c9200000160000000000
|
||||
0000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700
|
||||
0000000000000000000000009f0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009a0b00000000}
|
||||
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
|
||||
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
|
||||
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
|
||||
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
|
||||
{\*\latentstyles\lsdstimax374\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
|
||||
\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;
|
||||
\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;
|
||||
\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;
|
||||
\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;
|
||||
\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
|
||||
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
|
||||
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
|
||||
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
|
||||
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
|
||||
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
|
||||
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
|
||||
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
|
||||
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
|
||||
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
|
||||
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
|
||||
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
|
||||
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
|
||||
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
|
||||
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
|
||||
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
|
||||
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
|
||||
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
|
||||
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
|
||||
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
|
||||
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
|
||||
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
|
||||
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
|
||||
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
|
||||
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
|
||||
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
|
||||
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
|
||||
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
|
||||
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
|
||||
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
|
||||
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000005063
|
||||
a2efa482d201feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000105000000000000}}
|
@@ -0,0 +1 @@
|
||||
test upload file.
|
@@ -0,0 +1 @@
|
||||
test
|
2
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/userCSV.csv
vendored
Normal file
2
packaging/tests/tas-integration/src/test/resources/shared-resources/testdata/userCSV.csv
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
MNT-171990-user-with-no-password,user1,user1,user1171990@alfresco.com,,
|
||||
MNT-171990-user-with-password,user2,user2,user2171990@alfresco.com,,user2
|
|
Reference in New Issue
Block a user