mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
REPO-1394: Discovery: merge back to 5.2.N (from feature branch)
Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1) 130980 jkaabimofrad: REPO-224: API for retrieving detailed repository information. Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1) 131056 jkaabimofrad: REPO-224: Removed "transformationServerExpiresAt" attribute from the license JSON response as it is not part of AC. Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1) 131179 jkaabimofrad: REPO-224: Modified the license's entitlement response to always return "isClusterEnabled" and "isCryptodocEnabled". git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@131344 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,315 @@
|
||||
/*
|
||||
* #%L
|
||||
* Alfresco Remote API
|
||||
* %%
|
||||
* Copyright (C) 2005 - 2016 Alfresco Software Limited
|
||||
* %%
|
||||
* This file is part of the Alfresco software.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
* #L%
|
||||
*/
|
||||
package org.alfresco.rest.api.tests;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import org.alfresco.rest.AbstractSingleNetworkSiteTest;
|
||||
import org.alfresco.rest.api.discovery.DiscoveryApiWebscript;
|
||||
import org.alfresco.rest.api.model.DiscoveryDetails;
|
||||
import org.alfresco.rest.api.model.ModulePackage;
|
||||
import org.alfresco.rest.api.model.RepositoryInfo;
|
||||
import org.alfresco.rest.api.model.RepositoryInfo.LicenseEntitlement;
|
||||
import org.alfresco.rest.api.model.RepositoryInfo.LicenseInfo;
|
||||
import org.alfresco.rest.api.model.RepositoryInfo.StatusInfo;
|
||||
import org.alfresco.rest.api.model.RepositoryInfo.VersionInfo;
|
||||
import org.alfresco.rest.api.tests.client.HttpResponse;
|
||||
import org.alfresco.rest.api.tests.util.RestApiUtil;
|
||||
import org.alfresco.service.cmr.admin.RepoUsage.LicenseMode;
|
||||
import org.alfresco.service.descriptor.Descriptor;
|
||||
import org.alfresco.service.descriptor.DescriptorService;
|
||||
import org.alfresco.service.license.LicenseDescriptor;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* V1 REST API tests for retrieving detailed repository information.
|
||||
* <ul>
|
||||
* <li> {@literal <host>:<port>/alfresco/api/discovery} </li>
|
||||
* </ul>
|
||||
*
|
||||
* @author Jamal Kaabi-Mofrad
|
||||
*/
|
||||
public class DiscoveryApiTest extends AbstractSingleNetworkSiteTest
|
||||
{
|
||||
|
||||
private static final DateTime NOW = DateTime.now();
|
||||
|
||||
@Mock
|
||||
private DescriptorService descriptorServiceMock;
|
||||
@Mock
|
||||
private Descriptor serverDescriptor;
|
||||
@Mock
|
||||
private LicenseDescriptor licenseDescriptorMock;
|
||||
|
||||
private Date licenseIssuedAt;
|
||||
private Date licenseExpiresAt;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception
|
||||
{
|
||||
super.setup();
|
||||
|
||||
this.licenseIssuedAt = NOW.toDate();
|
||||
this.licenseExpiresAt = NOW.plusDays(5).toDate();
|
||||
|
||||
// Mock the required descriptors
|
||||
this.descriptorServiceMock = mock(DescriptorService.class);
|
||||
this.serverDescriptor = mock(Descriptor.class);
|
||||
this.licenseDescriptorMock = mock(LicenseDescriptor.class);
|
||||
|
||||
when(descriptorServiceMock.getServerDescriptor()).thenReturn(serverDescriptor);
|
||||
when(serverDescriptor.getEdition()).thenReturn("Enterprise");
|
||||
when(serverDescriptor.getVersionMajor()).thenReturn("5");
|
||||
when(serverDescriptor.getVersionMinor()).thenReturn("2");
|
||||
when(serverDescriptor.getVersionRevision()).thenReturn("1");
|
||||
when(serverDescriptor.getVersionLabel()).thenReturn(".3");
|
||||
when(serverDescriptor.getVersionBuild()).thenReturn("r123456-b0");
|
||||
when(serverDescriptor.getSchema()).thenReturn(10051);
|
||||
|
||||
when(descriptorServiceMock.getLicenseDescriptor()).thenReturn(licenseDescriptorMock);
|
||||
when(licenseDescriptorMock.getIssued()).thenReturn(this.licenseIssuedAt);
|
||||
when(licenseDescriptorMock.getValidUntil()).thenReturn(this.licenseExpiresAt);
|
||||
when(licenseDescriptorMock.getRemainingDays()).thenReturn(5);
|
||||
when(licenseDescriptorMock.getLicenseMode()).thenReturn(LicenseMode.ENTERPRISE);
|
||||
when(licenseDescriptorMock.getHolderOrganisation()).thenReturn("Alfresco Dev Test");
|
||||
when(licenseDescriptorMock.getMaxUsers()).thenReturn(20L);
|
||||
when(licenseDescriptorMock.getMaxDocs()).thenReturn(1000L);
|
||||
when(licenseDescriptorMock.isClusterEnabled()).thenReturn(true);
|
||||
|
||||
// Override the descriptor service
|
||||
DiscoveryApiWebscript discoveryApiWebscript = applicationContext
|
||||
.getBean("webscript.org.alfresco.api.DiscoveryApiWebscript.get", DiscoveryApiWebscript.class);
|
||||
discoveryApiWebscript.setDescriptorService(descriptorServiceMock);
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception
|
||||
{
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests get discovery.
|
||||
* <p>GET:</p>
|
||||
* {@literal <host>:<port>/alfresco/api/discovery}
|
||||
*/
|
||||
@Test
|
||||
public void testGetDiscovery() throws Exception
|
||||
{
|
||||
setRequestContext(null, user1, "wrongPassword");
|
||||
get("discovery", null, 401);
|
||||
|
||||
setRequestContext(null, user1, null);
|
||||
HttpResponse response = get("discovery", null, 200);
|
||||
|
||||
DiscoveryDetails discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
RepositoryInfo repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
assertEquals("Enterprise", repositoryInfo.getEdition());
|
||||
|
||||
// Check version info
|
||||
VersionInfo versionInfo = repositoryInfo.getVersion();
|
||||
assertNotNull(versionInfo);
|
||||
assertEquals("5", versionInfo.getMajor());
|
||||
assertEquals("2", versionInfo.getMinor());
|
||||
assertEquals("1", versionInfo.getPatch());
|
||||
assertEquals("3", versionInfo.getHotfix());
|
||||
assertEquals("r123456-b0", versionInfo.getLabel());
|
||||
assertEquals(10051, versionInfo.getSchema());
|
||||
assertEquals("5.2.1.3 (r123456-b0) schema 10051", versionInfo.getDisplay());
|
||||
|
||||
// Check license info
|
||||
LicenseInfo licenseInfo = repositoryInfo.getLicense();
|
||||
assertNotNull(licenseInfo);
|
||||
assertEquals(LicenseMode.ENTERPRISE.name(), licenseInfo.getMode());
|
||||
assertEquals(licenseIssuedAt.toString(), licenseInfo.getIssuedAt().toString());
|
||||
assertEquals(licenseExpiresAt.toString(), licenseInfo.getExpiresAt().toString());
|
||||
assertEquals(Integer.valueOf(5), licenseInfo.getRemainingDays());
|
||||
assertEquals("Alfresco Dev Test", licenseInfo.getHolder());
|
||||
LicenseEntitlement entitlements = licenseInfo.getEntitlements();
|
||||
assertNotNull(entitlements);
|
||||
assertNotNull(entitlements.getMaxUsers());
|
||||
assertEquals(20L, entitlements.getMaxUsers().longValue());
|
||||
assertNotNull(entitlements.getMaxDocs());
|
||||
assertEquals(1000L, entitlements.getMaxDocs().longValue());
|
||||
assertTrue(entitlements.getIsClusterEnabled());
|
||||
assertFalse(entitlements.getIsCryptodocEnabled());
|
||||
|
||||
// Check status
|
||||
StatusInfo statusInfo = repositoryInfo.getStatus();
|
||||
assertNotNull(statusInfo);
|
||||
assertFalse(statusInfo.getIsReadOnly());
|
||||
assertTrue(statusInfo.getIsAuditEnabled());
|
||||
assertTrue(statusInfo.getIsQuickShareEnabled());
|
||||
|
||||
// Check modules
|
||||
List<ModulePackage> modulePackageList = repositoryInfo.getModules();
|
||||
assertNotNull(modulePackageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests get discovery.
|
||||
* <p>GET:</p>
|
||||
* {@literal <host>:<port>/alfresco/api/discovery}
|
||||
*/
|
||||
@Test
|
||||
public void testGetDiscovery_hotfixValue() throws Exception
|
||||
{
|
||||
/*
|
||||
* The agreement was that if the hotfix value (versionLabel) does not follow the standard
|
||||
* of "dot then digits" or just "digits", the API should return zero.
|
||||
*/
|
||||
|
||||
when(serverDescriptor.getVersionLabel()).thenReturn("4");
|
||||
setRequestContext(null, user1, null);
|
||||
HttpResponse response = get("discovery", null, 200);
|
||||
|
||||
DiscoveryDetails discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
RepositoryInfo repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
assertEquals("Enterprise", repositoryInfo.getEdition());
|
||||
|
||||
// Check version info
|
||||
VersionInfo versionInfo = repositoryInfo.getVersion();
|
||||
assertNotNull(versionInfo);
|
||||
assertEquals("5", versionInfo.getMajor());
|
||||
assertEquals("2", versionInfo.getMinor());
|
||||
assertEquals("1", versionInfo.getPatch());
|
||||
assertEquals("4", versionInfo.getHotfix());
|
||||
assertEquals("r123456-b0", versionInfo.getLabel());
|
||||
assertEquals(10051, versionInfo.getSchema());
|
||||
assertEquals("5.2.1.4 (r123456-b0) schema 10051", versionInfo.getDisplay());
|
||||
|
||||
when(serverDescriptor.getVersionLabel()).thenReturn("d");
|
||||
response = get("discovery", null, 200);
|
||||
|
||||
discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
// Check version info
|
||||
versionInfo = repositoryInfo.getVersion();
|
||||
assertNotNull(versionInfo);
|
||||
assertEquals("5", versionInfo.getMajor());
|
||||
assertEquals("2", versionInfo.getMinor());
|
||||
assertEquals("1", versionInfo.getPatch());
|
||||
assertEquals("0", versionInfo.getHotfix());
|
||||
assertEquals("r123456-b0", versionInfo.getLabel());
|
||||
assertEquals(10051, versionInfo.getSchema());
|
||||
assertEquals("5.2.1.0 (r123456-b0) schema 10051", versionInfo.getDisplay());
|
||||
|
||||
when(serverDescriptor.getVersionLabel()).thenReturn("39.4");
|
||||
response = get("discovery", null, 200);
|
||||
|
||||
discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
// Check version info
|
||||
versionInfo = repositoryInfo.getVersion();
|
||||
assertNotNull(versionInfo);
|
||||
assertEquals("5", versionInfo.getMajor());
|
||||
assertEquals("2", versionInfo.getMinor());
|
||||
assertEquals("1", versionInfo.getPatch());
|
||||
assertEquals("0", versionInfo.getHotfix());
|
||||
assertEquals("r123456-b0", versionInfo.getLabel());
|
||||
assertEquals(10051, versionInfo.getSchema());
|
||||
assertEquals("5.2.1.0 (r123456-b0) schema 10051", versionInfo.getDisplay());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests get discovery.
|
||||
* <p>GET:</p>
|
||||
* {@literal <host>:<port>/alfresco/api/discovery}
|
||||
*/
|
||||
@Test
|
||||
public void testGetDiscovery_licenseEntitlement() throws Exception
|
||||
{
|
||||
// Override maxUsers
|
||||
when(licenseDescriptorMock.getMaxUsers()).thenReturn(null);
|
||||
|
||||
setRequestContext(null, user1, null);
|
||||
HttpResponse response = get("discovery", null, 200);
|
||||
|
||||
DiscoveryDetails discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
RepositoryInfo repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
assertEquals("Enterprise", repositoryInfo.getEdition());
|
||||
|
||||
// Check license info
|
||||
LicenseInfo licenseInfo = repositoryInfo.getLicense();
|
||||
assertNotNull(licenseInfo);
|
||||
assertEquals(LicenseMode.ENTERPRISE.name(), licenseInfo.getMode());
|
||||
assertEquals(licenseIssuedAt.toString(), licenseInfo.getIssuedAt().toString());
|
||||
assertEquals(licenseExpiresAt.toString(), licenseInfo.getExpiresAt().toString());
|
||||
assertEquals(Integer.valueOf(5), licenseInfo.getRemainingDays());
|
||||
assertEquals("Alfresco Dev Test", licenseInfo.getHolder());
|
||||
LicenseEntitlement entitlements = licenseInfo.getEntitlements();
|
||||
assertNotNull(entitlements);
|
||||
assertNull(entitlements.getMaxUsers());
|
||||
assertEquals(1000L, entitlements.getMaxDocs().longValue());
|
||||
assertTrue(entitlements.getIsClusterEnabled());
|
||||
assertFalse(entitlements.getIsCryptodocEnabled());
|
||||
|
||||
// Override entitlements
|
||||
when(licenseDescriptorMock.getMaxDocs()).thenReturn(null);
|
||||
when(licenseDescriptorMock.isClusterEnabled()).thenReturn(false);
|
||||
when(licenseDescriptorMock.isCryptodocEnabled()).thenReturn(true);
|
||||
|
||||
response = get("discovery", null, 200);
|
||||
|
||||
discoveryDetails = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), DiscoveryDetails.class);
|
||||
assertNotNull(discoveryDetails);
|
||||
repositoryInfo = discoveryDetails.getRepository();
|
||||
assertNotNull(repositoryInfo);
|
||||
|
||||
// Check license info
|
||||
licenseInfo = repositoryInfo.getLicense();
|
||||
assertNotNull(licenseInfo);
|
||||
entitlements = licenseInfo.getEntitlements();
|
||||
assertNotNull(entitlements);
|
||||
assertNull(entitlements.getMaxUsers());
|
||||
assertNull(entitlements.getMaxDocs());
|
||||
assertFalse(entitlements.getIsClusterEnabled());
|
||||
assertTrue(entitlements.getIsCryptodocEnabled());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user