Compare commits

...

57 Commits

Author SHA1 Message Date
Travis CI User
79c7310a34 [maven-release-plugin][skip ci] prepare release v1.62 2021-07-20 22:27:10 +00:00
dependabot-preview[bot]
5039d4d0d0 Bump slf4j-api from 1.7.31 to 1.7.32 (#137) 2021-07-20 22:23:27 +00:00
Travis CI User
f68299aa37 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-23 07:53:14 +00:00
Travis CI User
e63b0a8751 [maven-release-plugin][skip ci] prepare release v1.61 2021-06-23 07:53:08 +00:00
Andrei Forascu
3d2b7a733a ACS-1585: - add support for storage classes (#136) 2021-06-23 10:49:33 +03:00
Travis CI User
4bcffcd820 [maven-release-plugin][skip ci] prepare for next development iteration 2021-06-18 22:36:15 +00:00
Travis CI User
c552a7b660 [maven-release-plugin][skip ci] prepare release v1.60 2021-06-18 22:36:10 +00:00
dependabot-preview[bot]
3f41f8e4eb Bump slf4j-api from 1.7.30 to 1.7.31 (#135) 2021-06-18 22:25:24 +00:00
Travis CI User
71ed6d1155 [maven-release-plugin][skip ci] prepare for next development iteration 2021-04-30 22:22:53 +00:00
Travis CI User
c04a83e3c2 [maven-release-plugin][skip ci] prepare release v1.59 2021-04-30 22:22:48 +00:00
dependabot-preview[bot]
e946bfcf71 Bump maven-project-info-reports-plugin from 3.1.1 to 3.1.2 (#129) 2021-04-30 22:18:55 +00:00
Travis CI User
1cee8f46bd [maven-release-plugin][skip ci] prepare for next development iteration 2021-04-20 12:45:44 +00:00
Travis CI User
dfb05bb00e [maven-release-plugin][skip ci] prepare release v1.58 2021-04-20 12:45:39 +00:00
Davide
c33dde8f41 SEARCH-2748 add missing field and change the type for some field than can be included from primitive to boxed type in order to assert if it is present or not in the request (#126) 2021-04-20 14:41:39 +02:00
Travis CI User
f93d07d116 [maven-release-plugin][skip ci] prepare for next development iteration 2021-03-25 10:35:24 +00:00
Travis CI User
a88d0b07f2 [maven-release-plugin][skip ci] prepare release v1.57 2021-03-25 10:35:20 +00:00
Nithin Nambiar
da6e08b0e3 ACS-276 rendition version support (#122) 2021-03-25 10:09:24 +00:00
Travis CI User
48c0546bd0 [maven-release-plugin][skip ci] prepare for next development iteration 2021-03-03 14:14:09 +00:00
Travis CI User
2c0fb3fe95 [maven-release-plugin][skip ci] prepare release v1.56 2021-03-03 14:14:03 +00:00
Simona C
ea308c1c0a Fix SyncServiceAPITest with unrecognized field (#121) 2021-03-03 16:10:04 +02:00
Travis CI User
a02f0e7e2f [maven-release-plugin][skip ci] prepare for next development iteration 2021-03-02 13:23:04 +00:00
Travis CI User
9f32368582 [maven-release-plugin][skip ci] prepare release v1.55 2021-03-02 13:22:58 +00:00
Simona C
b42b08559a Fix SyncServiceAPITest with unrecognized field (#119)
Fix SyncServiceAPITest with unrecognized field
2021-03-02 15:18:36 +02:00
Travis CI User
95af4d6876 [maven-release-plugin][skip ci] prepare for next development iteration 2021-03-02 09:57:44 +00:00
Travis CI User
9c17870040 [maven-release-plugin][skip ci] prepare release v1.54 2021-03-02 09:57:37 +00:00
dhrn
e93028c30e [REPO-5552] expose aspect/type end points (#117)
* [REPO-5552] TAS rest API

* * docs update
2021-03-02 15:23:35 +05:30
Travis CI User
7741456b79 [maven-release-plugin][skip ci] prepare for next development iteration 2021-03-01 22:40:51 +00:00
Travis CI User
27f7b2ec33 [maven-release-plugin][skip ci] prepare release v1.53 2021-03-01 22:40:45 +00:00
dependabot-preview[bot]
078ae4cd32 Bump commons-lang3 from 3.11 to 3.12.0 (#118) 2021-03-01 22:29:29 +00:00
Travis CI User
ab3a0f00c4 [maven-release-plugin][skip ci] prepare for next development iteration 2021-02-01 10:33:27 +00:00
Travis CI User
829c7ef65d [maven-release-plugin][skip ci] prepare release v1.52 2021-02-01 10:33:20 +00:00
dhrn
0d40d455b2 [REPO-5317] expose site groups apis (#112)
* [REPO-5317] expose site groups method

* Update Site.java

* Update JsonBodyGenerator.java
2021-02-01 10:20:23 +00:00
Travis CI User
3d91bf154d [maven-release-plugin][skip ci] prepare for next development iteration 2021-01-04 22:59:11 +00:00
Travis CI User
d87532ce55 [maven-release-plugin][skip ci] prepare release v1.51 2021-01-04 22:59:04 +00:00
dependabot-preview[bot]
e6f97e979a Bump xercesImpl from 2.12.0 to 2.12.1 (#114) 2021-01-04 22:30:33 +00:00
Travis CI User
b800d4b7e4 [maven-release-plugin][skip ci] prepare for next development iteration 2020-11-13 14:56:58 +00:00
Travis CI User
92bad68c5b [maven-release-plugin][skip ci] prepare release v1.50 2020-11-13 14:56:51 +00:00
Simona C
d77e02f9a8 DESKTOPAPP-475: Ignored Bamboo quarantined test (#101) 2020-11-13 16:53:03 +02:00
Travis CI User
8a6584540f [maven-release-plugin][skip ci] prepare for next development iteration 2020-11-13 09:05:22 +00:00
Travis CI User
2dec33388e [maven-release-plugin][skip ci] prepare release v1.49 2020-11-13 09:05:15 +00:00
Angel Borroy
2c149b412e SEARCH-2460: Additional methods to perform operations and queries in SOLR (#99) 2020-11-13 09:54:13 +01:00
Travis CI User
10b427209d [maven-release-plugin][skip ci] prepare for next development iteration 2020-09-04 21:22:18 +00:00
Travis CI User
a53eb13f9f [maven-release-plugin][skip ci] prepare release v1.48 2020-09-04 21:22:12 +00:00
dependabot-preview[bot]
c0a90dd32b Bump maven-project-info-reports-plugin from 3.1.0 to 3.1.1 (#83) 2020-09-04 21:18:16 +00:00
Travis CI User
d2a414f8a7 [maven-release-plugin][skip ci] prepare for next development iteration 2020-08-06 11:49:03 +00:00
Travis CI User
e484360980 [maven-release-plugin][skip ci] prepare release v1.47 2020-08-06 11:48:56 +00:00
Alex Mukha
691855bed2 Fix json serialisation for StatsSearchTest 2020-08-06 12:44:48 +01:00
Travis CI User
e81a33d770 [maven-release-plugin][skip ci] prepare for next development iteration 2020-07-16 22:22:20 +00:00
Travis CI User
9dab62b490 [maven-release-plugin][skip ci] prepare release v1.46 2020-07-16 22:22:13 +00:00
dependabot-preview[bot]
44f602eee4 Bump commons-lang3 from 3.10 to 3.11 (#76) 2020-07-16 21:48:33 +00:00
Travis CI User
c04c149779 [maven-release-plugin][skip ci] prepare for next development iteration 2020-07-14 12:59:35 +00:00
Travis CI User
9cfa31ca63 [maven-release-plugin][skip ci] prepare release v1.45 2020-07-14 12:59:29 +00:00
dhrn
a061d8d4df * fixed serialization problem (#74) 2020-07-14 18:19:56 +05:30
Travis CI User
8052f7f299 [maven-release-plugin][skip ci] prepare for next development iteration 2020-07-14 11:21:28 +00:00
Travis CI User
962ce7a740 [maven-release-plugin][skip ci] prepare release v1.44 2020-07-14 11:21:21 +00:00
Andrei Forascu
57603871d3 ACS-349: - add methods for running rest-api requests on direct access URL endpoints (#73) 2020-07-14 14:17:28 +03:00
Travis CI User
7d7cc446a4 [maven-release-plugin][skip ci] prepare for next development iteration 2020-06-15 22:12:04 +00:00
26 changed files with 1098 additions and 19 deletions

View File

@@ -4,7 +4,7 @@
<groupId>org.alfresco.tas</groupId>
<artifactId>restapi</artifactId>
<name>alfresco-tas-restapi</name>
<version>1.43</version>
<version>1.62</version>
<parent>
<groupId>org.alfresco</groupId>
<artifactId>alfresco-super-pom</artifactId>
@@ -37,7 +37,7 @@
<jackson-databind.version>2.9.8</jackson-databind.version>
<maven-release.version>2.5.3</maven-release.version>
<org.glassfish.version>1.1.4</org.glassfish.version>
<commons-lang3.version>3.10</commons-lang3.version>
<commons-lang3.version>3.12.0</commons-lang3.version>
<scribejava-apis.version>6.9.0</scribejava-apis.version>
<test.exclude />
<test.include />
@@ -48,7 +48,7 @@
<connection>scm:git:https://github.com/Alfresco/alfresco-tas-restapi.git</connection>
<developerConnection>scm:git:https://github.com/Alfresco/alfresco-tas-restapi.git</developerConnection>
<url>https://github.com/Alfresco/alfresco-tas-restapi</url>
<tag>v1.43</tag>
<tag>v1.62</tag>
</scm>
<issueManagement>
@@ -255,7 +255,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
<version>1.7.32</version>
</dependency>
<!-- swagger parser -->
@@ -274,7 +274,7 @@
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.0</version>
<version>2.12.1</version>
</dependency>
<!--fixing java.lang.ClassCastException: class [B cannot be cast to class [C ([B and [C are in module java.base of loader 'bootstrap') -->
@@ -299,7 +299,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.1.0</version>
<version>3.1.2</version>
<reportSets>
<reportSet>
<reports>

View File

@@ -13,6 +13,7 @@ import org.alfresco.dataprep.CMISUtil.Priority;
import org.alfresco.rest.model.RestProcessVariableModel;
import org.alfresco.rest.model.RestVariableModel;
import org.alfresco.utility.Utility;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.model.FileModel;
import org.alfresco.utility.model.FolderModel;
import org.alfresco.utility.model.RepoTestModel;
@@ -158,6 +159,15 @@ public class JsonBodyGenerator
return value.toString();
}
public static String siteGroup(String authorityId, UserRole role)
{
Utility.checkObjectIsInitialized(authorityId, "authorityId");
JsonObject value = defineJSON()
.add("role", role.name())
.add("id", authorityId).build();
return value.toString();
}
public static String siteMemberhipRequest(String message, SiteModel siteModel, String title)
{
JsonObject value = defineJSON()

View File

@@ -36,6 +36,7 @@ import org.alfresco.rest.requests.authAPI.RestAuthAPI;
import org.alfresco.rest.requests.cmisAPI.RestCmisAPI;
import org.alfresco.rest.requests.coreAPI.RestCoreAPI;
import org.alfresco.rest.requests.discoveryAPI.RestDiscoveryAPI;
import org.alfresco.rest.requests.modelAPI.RestModelAPI;
import org.alfresco.rest.requests.privateAPI.RestPrivateAPI;
import org.alfresco.rest.requests.search.SearchAPI;
import org.alfresco.rest.requests.search.SearchSQLAPI;
@@ -932,6 +933,11 @@ public class RestWrapper extends DSLWrapper<RestWrapper>
return new RestAuthAPI(this);
}
public RestModelAPI withModelAPI()
{
return new RestModelAPI(this);
}
public SearchAPI withSearchAPI()
{
return new SearchAPI(this);

View File

@@ -0,0 +1,158 @@
package org.alfresco.rest.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
import org.alfresco.utility.model.TestModel;
import java.util.List;
public class RestAbstractClassModel extends TestModel implements IRestModel<RestAbstractClassModel>
{
@JsonProperty(value = "entry")
RestAbstractClassModel model;
@Override
public RestAbstractClassModel onModel()
{
return model;
}
public String id;
public String title;
public String description;
public String parentId;
public Boolean isContainer = null;
public Boolean isArchive = null;
public Boolean includedInSupertypeQuery = null;
public List<String> mandatoryAspects = null;
public List<RestClassAssociationModel> associations = null;
public List <RestPropertyDefinitionModel> properties = null;
@JsonProperty(value = "model")
public RestClassModel modelInfo;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getParentId()
{
return parentId;
}
public void setParentId(String parentId)
{
this.parentId = parentId;
}
public Boolean getContainer()
{
return isContainer;
}
public void setContainer(Boolean container)
{
isContainer = container;
}
public Boolean getArchive()
{
return isArchive;
}
public void setArchive(Boolean archive)
{
isArchive = archive;
}
public Boolean getIncludedInSupertypeQuery()
{
return includedInSupertypeQuery;
}
public void setIncludedInSupertypeQuery(Boolean includedInSupertypeQuery)
{
this.includedInSupertypeQuery = includedInSupertypeQuery;
}
public List<String> getMandatoryAspects()
{
return mandatoryAspects;
}
public void setMandatoryAspects(List<String> mandatoryAspects)
{
this.mandatoryAspects = mandatoryAspects;
}
public List<RestClassAssociationModel> getAssociations()
{
return associations;
}
public void setAssociations(List<RestClassAssociationModel> associations)
{
this.associations = associations;
}
public List<RestPropertyDefinitionModel> getProperties() {
return properties;
}
public void setProperties(List<RestPropertyDefinitionModel> properties)
{
this.properties = properties;
}
public RestClassModel getModelInfo()
{
return modelInfo;
}
public void setModelInfo(RestClassModel modelInfo)
{
this.modelInfo = modelInfo;
}
/**
* DSL for assertion on this rest model
* @return
*/
@Override
public ModelAssertion<RestAbstractClassModel> assertThat()
{
return new ModelAssertion<RestAbstractClassModel>(this);
}
@Override
public ModelAssertion<RestAbstractClassModel> and()
{
return assertThat();
}
}

View File

@@ -0,0 +1,5 @@
package org.alfresco.rest.model;
public class RestAspectModel extends RestAbstractClassModel
{
}

View File

@@ -0,0 +1,7 @@
package org.alfresco.rest.model;
import org.alfresco.rest.core.RestModels;
public class RestAspectsCollection extends RestModels<RestAspectModel, RestAspectsCollection>
{
}

View File

@@ -0,0 +1,62 @@
package org.alfresco.rest.model;
import org.alfresco.utility.model.TestModel;
public class RestClassAssociationDefinitionModel extends TestModel
{
public String role = null;
public String cls = null;
public Boolean isMany = null;
public Boolean isMandatory = null;
public Boolean isMandatoryEnforced = null;
public String getRole()
{
return role;
}
public void setRole(String role)
{
this.role = role;
}
public String getCls()
{
return cls;
}
public void setCls(String cls)
{
this.cls = cls;
}
public Boolean getMany()
{
return isMany;
}
public void setMany(Boolean many)
{
isMany = many;
}
public Boolean getMandatory()
{
return isMandatory;
}
public void setMandatory(Boolean mandatory)
{
isMandatory = mandatory;
}
public Boolean getMandatoryEnforced()
{
return isMandatoryEnforced;
}
public void setMandatoryEnforced(Boolean mandatoryEnforced)
{
isMandatoryEnforced = mandatoryEnforced;
}
}

View File

@@ -0,0 +1,86 @@
package org.alfresco.rest.model;
import org.alfresco.utility.model.TestModel;
public class RestClassAssociationModel extends TestModel
{
public String id;
public String title;
public String description;
public Boolean isChild;
public Boolean isProtected;
public RestClassAssociationDefinitionModel source = null;
public RestClassAssociationDefinitionModel target = null;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public Boolean getChild()
{
return isChild;
}
public void setIsChild(Boolean isChild)
{
this.isChild = isChild;
}
public Boolean getIsProtected()
{
return isProtected;
}
public void setIsProtected(Boolean isProtected)
{
this.isProtected = isProtected;
}
public RestClassAssociationDefinitionModel getSource()
{
return source;
}
public void setSource(RestClassAssociationDefinitionModel source)
{
this.source = source;
}
public RestClassAssociationDefinitionModel getTarget()
{
return target;
}
public void setTarget(RestClassAssociationDefinitionModel target)
{
this.target = target;
}
}

View File

@@ -0,0 +1,62 @@
package org.alfresco.rest.model;
import org.alfresco.utility.model.TestModel;
public class RestClassModel extends TestModel
{
public String id;
public String author;
public String description;
public String namespaceUri;
public String namespacePrefix;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getAuthor()
{
return author;
}
public void setAuthor(String author)
{
this.author = author;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getNamespaceUri()
{
return namespaceUri;
}
public void setNamespaceUri(String namespaceUri)
{
this.namespaceUri = namespaceUri;
}
public String getNamespacePrefix()
{
return namespacePrefix;
}
public void setNamespacePrefix(String namespacePrefix)
{
this.namespacePrefix = namespacePrefix;
}
}

View File

@@ -0,0 +1,62 @@
package org.alfresco.rest.model;
import java.util.Map;
public class RestConstraintDefinitionModel
{
private String id;
private String type;
private String title;
private String description;
private Map<String, Object> parameters;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public Map<String, Object> getParameters()
{
return parameters;
}
public void setParameters(Map<String, Object> parameters)
{
this.parameters = parameters;
}
}

View File

@@ -2,6 +2,8 @@ package org.alfresco.rest.model;
import org.alfresco.utility.model.TestModel;
import java.util.Set;
/**
* Created by Claudia Agache on 11/11/2016.
*/
@@ -11,6 +13,7 @@ public class RestContentModel extends TestModel
private String mimeTypeName;
private String mimeType;
private String encoding;
private Set<String> storageClasses;
public int getSizeInBytes()
{
@@ -51,4 +54,14 @@ public class RestContentModel extends TestModel
{
this.encoding = encoding;
}
public Set<String> getStorageClasses()
{
return storageClasses;
}
public void setStorageClasses(Set<String> storageClasses)
{
this.storageClasses = storageClasses;
}
}

View File

@@ -0,0 +1,117 @@
package org.alfresco.rest.model;
import java.util.List;
public class RestPropertyDefinitionModel
{
private String id;
private String title;
private String description;
private String defaultValue;
private String dataType;
private Boolean isMultiValued;
private Boolean isMandatory;
private Boolean isMandatoryEnforced;
private Boolean isProtected;
private List<RestConstraintDefinitionModel> constraints;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description = description;
}
public String getDefaultValue()
{
return defaultValue;
}
public void setDefaultValue(String defaultValue)
{
this.defaultValue = defaultValue;
}
public String getDataType()
{
return dataType;
}
public void setDataType(String dataType)
{
this.dataType = dataType;
}
public boolean getIsProtected()
{
return isProtected;
}
public void setIsProtected(boolean isProtected)
{
this.isProtected = isProtected;
}
public List<RestConstraintDefinitionModel> getConstraints()
{
return constraints;
}
public void setConstraints(List<RestConstraintDefinitionModel> constraints)
{
this.constraints = constraints;
}
public boolean getIsMultiValued()
{
return isMultiValued;
}
public void setIsMultiValued(boolean isMultiValued)
{
this.isMultiValued = isMultiValued;
}
public boolean getIsMandatory()
{
return isMandatory;
}
public void setIsMandatory(boolean isMandatory)
{
this.isMandatory = isMandatory;
}
public boolean getIsMandatoryEnforced()
{
return isMandatoryEnforced;
}
public void setIsMandatoryEnforced(boolean isMandatoryEnforced)
{
this.isMandatoryEnforced = isMandatoryEnforced;
}
}

View File

@@ -0,0 +1,78 @@
package org.alfresco.rest.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.model.TestModel;
import org.testng.Assert;
import static org.alfresco.utility.report.log.Step.STEP;
public class RestSiteGroupModel extends TestModel implements IRestModel<RestSiteGroupModel>
{
@JsonProperty(value = "entry")
RestSiteGroupModel model;
@Override
public RestSiteGroupModel onModel()
{
return model;
}
private UserRole role;
private String id = "no-id";
private RestGroupsModel group;
public UserRole getRole()
{
return role;
}
public void setRole(UserRole role)
{
this.role = role;
}
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public RestGroupsModel getGroup()
{
return group;
}
public void setGroup(RestGroupsModel group)
{
this.group = group;
}
public RestSiteGroupModel assertSiteGroupHasRole(UserRole role) {
STEP(String.format("REST API: Assert that site group role is '%s'", role));
Assert.assertEquals(getRole(), role, "Site group role is not as expected.");
return this;
}
/**
* DSL for assertion on this rest model
* @return
*/
@Override
public ModelAssertion<RestSiteGroupModel> assertThat()
{
return new ModelAssertion<RestSiteGroupModel>(this);
}
@Override
public ModelAssertion<RestSiteGroupModel> and()
{
return assertThat();
}
}

View File

@@ -0,0 +1,32 @@
package org.alfresco.rest.model;
import org.alfresco.rest.core.RestModels;
import java.util.List;
import static org.alfresco.utility.report.log.Step.STEP;
public class RestSiteGroupModelsCollection extends RestModels<RestSiteGroupModel, RestSiteGroupModelsCollection>
{
/**
* Get groups from site groups list
*/
public RestSiteGroupModel getSiteGroups(String groupId)
{
STEP(String.format("REST API: Get site group with id '%s'", groupId));
RestSiteGroupModel siteGroupEntry = null;
List<RestSiteGroupModel> siteGroups = getEntries();
for (int i = 1; i < siteGroups.size(); i++)
{
if (siteGroups.get(i).onModel().getId().equals(groupId))
{
siteGroupEntry = siteGroups.get(i).onModel();
}
}
return siteGroupEntry;
}
}

View File

@@ -23,7 +23,8 @@ public class RestSiteMemberModel extends TestModel implements IRestModel<RestSit
private UserRole role;
private String id = "no-id";
private boolean isMemberOfGroup;
private RestPersonModel person;
public UserRole getRole()
@@ -51,6 +52,16 @@ public class RestSiteMemberModel extends TestModel implements IRestModel<RestSit
return person;
}
public boolean getIsMemberOfGroup()
{
return isMemberOfGroup;
}
public void setIsMemberOfGroup(boolean memberOfGroup)
{
isMemberOfGroup = memberOfGroup;
}
public void setPerson(RestPersonModel person)
{
this.person = person;

View File

@@ -22,6 +22,7 @@ import org.alfresco.rest.core.RestModels;
* {
* "entry": {
* "role": "SiteManager",
* "isMemberOfGroup": false,
* "person": {
* "firstName": "Administrator",
* "emailNotificationsEnabled": true,
@@ -36,6 +37,7 @@ import org.alfresco.rest.core.RestModels;
* {
* "entry": {
* "role": "SiteConsumer",
* "isMemberOfGroup": false,
* "person": {
* "firstName": "CqeKxvPHBd FirstName",
* "lastName": "LN-CqeKxvPHBd",

View File

@@ -36,6 +36,12 @@ public class RestSyncServiceComponentModel extends TestModel
@JsonProperty
private String message;
@JsonProperty
private int duration;
@JsonProperty
private String timestamp;
public Boolean getHealthy()
{
return healthy;
@@ -46,4 +52,14 @@ public class RestSyncServiceComponentModel extends TestModel
return message;
}
public int getDuration()
{
return duration;
}
public String getTimestamp()
{
return timestamp;
}
}

View File

@@ -0,0 +1,5 @@
package org.alfresco.rest.model;
public class RestTypeModel extends RestAbstractClassModel
{
}

View File

@@ -0,0 +1,7 @@
package org.alfresco.rest.model;
import org.alfresco.rest.core.RestModels;
public class RestTypesCollection extends RestModels<RestTypeModel, RestTypesCollection>
{
}

View File

@@ -371,6 +371,23 @@ public class Node extends ModelRequest<Node>
restWrapper.processEmptyModel(request);
}
/**
* Create node version rendition using POST call on '/nodes/{nodeId}/versions/{versionId}/renditions'
*
* @param renditionId id of rendition to be created
* @param versionId version id of node
* @return
* @throws Exception
*/
public void createNodeVersionRendition(String renditionId, String versionId) throws Exception
{
String postBody = JsonBodyGenerator.keyValueJson("id", renditionId);
RestRequest request = RestRequest
.requestWithBody(HttpMethod.POST, postBody, "nodes/{nodeId}/versions/{versionId}/renditions",
repoModel.getNodeRef(), versionId);
restWrapper.processEmptyModel(request);
}
/**
* Check if specified rendition exists and if not
* create node rendition using POST call on '/nodes/{nodeId}/renditions'
@@ -403,6 +420,22 @@ public class Node extends ModelRequest<Node>
return restWrapper.processModel(RestRenditionInfoModel.class, request);
}
/**
* Get node version rendition using GET call on '/nodes/{nodeId}/versions/{versionId}renditions/{renditionId}
*
* @param renditionId id of rendition to be retrieved
* @param versionId versionId of the node
* @return
* @throws Exception
*/
public RestRenditionInfoModel getNodeVersionRendition(String renditionId, String versionId) throws Exception
{
RestRequest request = RestRequest
.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}",
repoModel.getNodeRef(), versionId, renditionId);
return restWrapper.processModel(RestRenditionInfoModel.class, request);
}
/**
* Get node rendition using GET call on 'nodes/{nodeId}/renditions/{renditionId} Please note that it retries to get
* the renditions response several times because on the alfresco server the rendition can take a while to be created.
@@ -426,6 +459,30 @@ public class Node extends ModelRequest<Node>
}
return renditions;
}
/**
* Get node version rendition using GET call on 'nodes/{nodeId}/versions/{versionId}/renditions/{renditionId} Please note that it retries to get
* the renditions response several times because on the alfresco server the rendition can take a while to be created.
*
* @return
* @throws Exception
*/
public RestRenditionInfoModel getNodeVersionRenditionUntilIsCreated(String renditionId, String versionId) throws Exception
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}",repoModel.getNodeRef(), versionId, renditionId);
RestRenditionInfoModel renditions = restWrapper.processModel(RestRenditionInfoModel.class, request);
int retry = 0;
if (Integer.valueOf(restWrapper.getStatusCode()).equals(HttpStatus.OK.value()))
{
while (renditions.getStatus().equals("NOT_CREATED") && retry < Utility.retryCountSeconds - 8)
{
Utility.waitToLoopTime(1);
renditions = restWrapper.processModel(RestRenditionInfoModel.class, request);
retry++;
}
}
return renditions;
}
/**
* Get node rendition content using GET call on
@@ -452,6 +509,31 @@ public class Node extends ModelRequest<Node>
return response;
}
/**
* Get node version rendition content using GET call on
* 'nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content Please note that it
* retries to get the renditions response several times because on the
* alfresco server the rendition can take a while to be created.
*
* @return
* @throws Exception
*/
public RestResponse getNodeVersionRenditionContentUntilIsCreated(String renditionId, String versionId) throws Exception
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content", repoModel.getNodeRef(),
versionId, renditionId);
RestResponse response = restWrapper.process(request);
int retry = 0;
while (Integer.valueOf(response.getStatusCode()).equals(HttpStatus.NOT_FOUND.value()) && retry < Utility.retryCountSeconds)
{
Utility.waitToLoopTime(1);
response = restWrapper.process(request);
retry++;
}
return response;
}
/**
* Get node rendition content using GET call on
* 'nodes/{nodeId}/renditions/{renditionId}/content
@@ -466,6 +548,20 @@ public class Node extends ModelRequest<Node>
return restWrapper.process(request);
}
/**
* Get node version rendition content using GET call on
* 'nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content
*
* @return
* @throws Exception
*/
public RestResponse getNodeVersionRenditionContent(String renditionId, String versionId) throws Exception
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/content", repoModel.getNodeRef(),
versionId, renditionId);
return restWrapper.process(request);
}
/**
* Get rendition information for available renditions for the node using GET call on
* 'nodes/{nodeId}/renditions'
@@ -479,6 +575,20 @@ public class Node extends ModelRequest<Node>
return restWrapper.processModels(RestRenditionInfoModelCollection.class, request);
}
/**
* Get rendition information for available renditions for the node version using GET call on
* 'nodes/{nodeId}/versions/{versionId}/renditions'
* @return
* @throws Exception
*/
public RestRenditionInfoModelCollection getNodeVersionRenditionsInfo(String versionId) throws Exception
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/versions/{versionId}/renditions?{parameters}", repoModel.getNodeRef(),
versionId, restWrapper.getParameters());
return restWrapper.processModels(RestRenditionInfoModelCollection.class, request);
}
/**
* Get a node's children using GET call 'nodes/{nodeId}/children
*
@@ -778,11 +888,6 @@ public class Node extends ModelRequest<Node>
restWrapper.processEmptyModel(request);
}
/**
*
*@param nodeId
*@return
*/
public RestActionDefinitionModelsCollection getActionDefinitions()
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "nodes/{nodeId}/action-definitions?{parameters}", repoModel.getNodeRef(), restWrapper.getParameters());
@@ -790,4 +895,51 @@ public class Node extends ModelRequest<Node>
}
/**
* Get Direct Access URL for a node
* @return
*/
public RestResponse createDirectAccessURL()
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.POST, "nodes/{nodeId}/request-content-url", this.repoModel.getNodeRef());
return this.restWrapper.process(request);
}
/**
* Get Direct Access URL for a specific node version. E.g "1.1"
* @param versionId
* @return
*/
public RestResponse createDirectAccessURLforVersion(String versionId)
{
RestRequest request = RestRequest
.simpleRequest(HttpMethod.POST, "nodes/{nodeId}/versions/{versionId}/request-content-url", this.repoModel.getNodeRef(), versionId);
return this.restWrapper.process(request);
}
/**
* Get Direct Access URL for a specific node version rendition. E.g ("1.1", "pdf")
* @param versionId
* @param renditionId
* @return
*/
public RestResponse createDirectAccessURLforVersionAndRendition(String versionId, String renditionId)
{
RestRequest request = RestRequest
.simpleRequest(HttpMethod.POST, "nodes/{nodeId}/versions/{versionId}/renditions/{renditionId}/request-content-url", this.repoModel.getNodeRef(), versionId, renditionId);
return this.restWrapper.process(request);
}
/**
* Get Direct Access URL for a specific node rendition E.g "pdf"
* @param renditionId
* @return
*/
public RestResponse createDirectAccessURLforRendition(String renditionId)
{
RestRequest request = RestRequest
.simpleRequest(HttpMethod.POST, "nodes/{nodeId}/renditions/{renditionId}/request-content-url", this.repoModel.getNodeRef(), renditionId);
return this.restWrapper.process(request);
}
}

View File

@@ -11,9 +11,12 @@ import org.alfresco.rest.model.RestSiteContainerModel;
import org.alfresco.rest.model.RestSiteContainerModelsCollection;
import org.alfresco.rest.model.RestSiteMemberModel;
import org.alfresco.rest.model.RestSiteMemberModelsCollection;
import org.alfresco.rest.model.RestSiteGroupModel;
import org.alfresco.rest.model.RestSiteGroupModelsCollection;
import org.alfresco.rest.model.RestSiteModel;
import org.alfresco.rest.model.RestSiteModelsCollection;
import org.alfresco.rest.model.RestSitePersonMembershipRequestModelsCollection;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.UserModel;
import org.springframework.http.HttpMethod;
@@ -257,4 +260,66 @@ public class Site extends ModelRequest<Site>
RestRequest request = RestRequest.simpleRequest(HttpMethod.POST, "sites/{siteId}/site-membership-requests/{inviteeId}/reject", site.getId(), siteMember.getUsername());
return restWrapper.process(request);
}
/**
* Retrieve all group membership of a site using GET call on "sites/{siteId}/group-members"
*
* @return RestSiteGroupModelsCollection
* @throws JsonToModelConversionException
*/
public RestSiteGroupModelsCollection getSiteGroups()
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "sites/{siteId}/group-members?{parameters}", site.getId(), restWrapper.getParameters());
return restWrapper.processModels(RestSiteGroupModelsCollection.class, request);
}
/**
* Add new site group membership using POST call on "sites/{siteId}/group-members"
*
* @param authorityId The authorityId of the group
* @param role role to assign
* @return
* @throws JsonToModelConversionException
*/
public RestSiteGroupModel addSiteGroup(String authorityId, UserRole role)
{
String siteMemberBody = JsonBodyGenerator.siteGroup(authorityId, role);
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, siteMemberBody, "sites/{siteId}/group-members?{parameters}", site.getId(), restWrapper.getParameters());
return restWrapper.processModel(RestSiteGroupModel.class, request);
}
/**
* Retrieve specific group membership of a site using GET call on "sites/{siteId}/group-members/{groupId}"
*
* @param groupId
* @return RestSiteGroupModel
*/
public RestSiteGroupModel getSiteGroup(String groupId)
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "sites/{siteId}/group-members/{groupId}", site.getId(), groupId);
return restWrapper.processModel(RestSiteGroupModel.class, request);
}
/**
* Update site group membership role with PUT call on "sites/{siteId}/group-members/{groupId}"
* @param groupId
* @return RestSiteGroupModel
* @throws JsonToModelConversionException
*/
public RestSiteGroupModel updateSiteGroup(String groupId, UserRole role)
{
String json = JsonBodyGenerator.keyValueJson("role", role.toString());
RestRequest request = RestRequest.requestWithBody(HttpMethod.PUT, json, "sites/{siteId}/group-members/{groupId}", site.getId(), groupId);
return restWrapper.processModel(RestSiteGroupModel.class, request);
}
/**
* Delete site group membership with DELETE call on "sites/{siteId}/group-members/{groupId}"
* @param groupId
*/
public void deleteSiteGroup(String groupId)
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.DELETE, "sites/{siteId}/group-members/{groupId}", site.getId(), groupId);
restWrapper.processEmptyModel(request);
}
}

View File

@@ -0,0 +1,71 @@
package org.alfresco.rest.requests.modelAPI;
import io.restassured.RestAssured;
import org.alfresco.rest.core.RestRequest;
import org.alfresco.rest.core.RestWrapper;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.*;
import org.alfresco.rest.requests.ModelRequest;
import org.springframework.http.HttpMethod;
/**
* Defines the entire Rest Model API
* {@link https://api-explorer.alfresco.com/api-explorer/} select "Model API"
*/
public class RestModelAPI extends ModelRequest<RestModelAPI>
{
public RestModelAPI(RestWrapper restWrapper)
{
super(restWrapper);
RestAssured.basePath = "alfresco/api/-default-/public/alfresco/versions/1";
restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath);
}
/**
* Retrieve all aspects using GET call on "aspects"
*
* @return RestAspectsCollection
* @throws JsonToModelConversionException
*/
public RestAspectsCollection getAspects()
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "aspects?{parameters}", restWrapper.getParameters());
return restWrapper.processModels(RestAspectsCollection.class, request);
}
/**
* Retrieve aspect by id using GET call on "aspects/{aspectId}"
*
* @return RestAspectModel
* @throws JsonToModelConversionException
*/
public RestAspectModel getAspect(String aspectId)
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "aspects/{aspectId}?{parameters}", aspectId, restWrapper.getParameters());
return restWrapper.processModel(RestAspectModel.class, request);
}
/**
* Retrieve all types using GET call on "types"
*
* @return RestTypesCollection
* @throws JsonToModelConversionException
*/
public RestTypesCollection getTypes()
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "types?{parameters}", restWrapper.getParameters());
return restWrapper.processModels(RestTypesCollection.class, request);
}
/**
* Retrieve Type by id using GET call on "types/{typeId}"
*
* @return RestTypeModel
* @throws JsonToModelConversionException
*/
public RestTypeModel getType(String typeId)
{
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "types/{typeId}?{parameters}", typeId, restWrapper.getParameters());
return restWrapper.processModel(RestTypeModel.class, request);
}
}

View File

@@ -67,6 +67,17 @@ public class SolrAPI extends ModelRequest<SolrAPI>
return restWrapper.processTextResponse(request);
}
/**
* Executes an action (like "delete") on SOLR alfresco core
* @param urlActionPath some action name (like "delete")
* @param queryBody parameters for the action
*/
public RestTextResponse postAction(String urlActionPath, String queryBody) throws Exception
{
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, queryBody, urlActionPath);
return restWrapper.processTextResponse(request);
}
public RestTextResponse getSelectQuery() throws Exception
{
List<Header> headers = new ArrayList<Header>();
@@ -77,4 +88,19 @@ public class SolrAPI extends ModelRequest<SolrAPI>
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "select?q={parameters}", restWrapper.getParameters());
return restWrapper.processTextResponse(request);
}
/**
* Executes a query in SOLR using JSON format for the results
*/
public RestTextResponse getSelectQueryJson() throws Exception
{
List<Header> headers = new ArrayList<Header>();
headers.add(new Header("Content-Type", "application/json"));
Headers header = new Headers(headers);
restWrapper.setResponseHeaders(header);
restWrapper.configureRequestSpec().setUrlEncodingEnabled(false);
RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "select?q={parameters}&wt=json", restWrapper.getParameters());
return restWrapper.processTextResponse(request);
}
}

View File

@@ -1,5 +1,6 @@
package org.alfresco.rest.search;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
@@ -12,6 +13,16 @@ import java.util.List;
* Generated from 'Alfresco Content Services REST API' swagger file
* Base Path {@linkplain /alfresco/api/-default-/public/search/versions/1}
*/
/*
From Jackson 2.8 this annotation is required to make sure that defaults are read from the actual field values,
as opposing to field type defaults. For example, the default for boolean primitive is "false",
but the default for the "min" field in this class is "true".
This configuration does not affect the product and is only related to test framework and how it serializes the request into JSON.
See org.alfresco.utility.model.TestModel#toJson
Note: This change was required for org.alfresco.test.search.functional.searchServices.search.StatsSearchTest
*/
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class RestRequestStatsModel extends TestModel implements IRestModel<RestRequestStatsModel>
{
@Override

View File

@@ -1,6 +1,7 @@
package org.alfresco.rest.search;
import java.util.List;
import java.util.Map;
import org.alfresco.rest.core.IRestModel;
import org.alfresco.rest.core.assertion.ModelAssertion;
@@ -40,7 +41,10 @@ public class SearchNodeModel extends TestModel implements IRestModel<SearchNodeM
private boolean isFile;
@JsonProperty
private boolean isLocked;
private Boolean isLocked;
@JsonProperty
private Map<String, Object> association;
@JsonProperty(required = true)
private String modifiedAt;
@@ -56,7 +60,7 @@ public class SearchNodeModel extends TestModel implements IRestModel<SearchNodeM
private String parentId;
private boolean isLink;
private Boolean isLink;
private RestContentModel content;
@@ -73,6 +77,16 @@ public class SearchNodeModel extends TestModel implements IRestModel<SearchNodeM
private String location;
public Map<String, Object> getAssociation()
{
return association;
}
public void setAssociation(Map<String, Object> association)
{
this.association = association;
}
public SearchScoreModel getSearch()
{
return search;
@@ -161,12 +175,12 @@ public class SearchNodeModel extends TestModel implements IRestModel<SearchNodeM
this.isFile = isFile;
}
public boolean isLocked()
public Boolean isLocked()
{
return isLocked;
}
public void setLocked(boolean isLocked)
public void setLocked(Boolean isLocked)
{
this.isLocked = isLocked;
}
@@ -221,12 +235,12 @@ public class SearchNodeModel extends TestModel implements IRestModel<SearchNodeM
this.parentId = parentId;
}
public boolean isLink()
public Boolean isLink()
{
return isLink;
}
public void setLink(boolean isLink)
public void setIsLink(Boolean isLink)
{
this.isLink = isLink;
}

View File

@@ -56,7 +56,8 @@ public class RestDemoTests extends RestTest
* Update existing comment using PUT call, check that comment content is updated <br/>
* @throws Exception
*/
@Test(groups = { "demo" })
//Opened DESKTOPAPP-475 for fixing the failing test
// @Test(groups = { "demo" })
public void adminCanPostAndUpdateComments() throws Exception
{
FileModel fileModel = dataContent.usingUser(userModel)