/*
* Copyright 2014-2016 CyberVision, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kaaproject.kaa.server.control;
import org.junit.Assert;
import org.junit.Test;
import org.kaaproject.kaa.common.dto.ApplicationDto;
import org.kaaproject.kaa.common.dto.ConfigurationDto;
import org.kaaproject.kaa.common.dto.ConfigurationRecordDto;
import org.kaaproject.kaa.common.dto.ConfigurationSchemaDto;
import org.kaaproject.kaa.common.dto.EndpointGroupDto;
import org.kaaproject.kaa.common.dto.UpdateStatus;
import org.kaaproject.kaa.common.dto.VersionDto;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.List;
/**
* The Class ControlServerConfigurationIT.
*/
public class ControlServerConfigurationIT extends AbstractTestControlServer {
private static final Charset DECODING_CHARSET = Charset.forName("ISO-8859-1");
/**
* Test create configuration.
*
* @throws Exception the exception
*/
@Test
public void testCreateConfiguration() throws Exception {
ConfigurationDto configuration = createConfiguration();
Assert.assertFalse(strIsEmpty(configuration.getId()));
Assert.assertFalse(strIsEmpty(configuration.getApplicationId()));
Assert.assertFalse(configuration.getProtocolSchema().isEmpty());
}
/**
* Test get configuration record.
*
* @throws Exception the exception
*/
@Test
public void testGetConfigurationRecord() throws Exception {
ConfigurationDto configuration = createConfiguration();
ConfigurationRecordDto configurationRecord = client.getConfigurationRecord(configuration.getSchemaId(), configuration.getEndpointGroupId());
Assert.assertNotNull(configurationRecord);
Assert.assertNotNull(configurationRecord.getInactiveStructureDto());
assertConfigurationsEquals(configuration, configurationRecord.getInactiveStructureDto());
}
/**
* Test get configuration record body.
*
* @throws Exception the exception
*/
@Test
public void testGetConfigurationRecordBody() throws Exception {
ConfigurationDto configuration = createConfiguration();
ConfigurationDto activatedConfiguration = client.activateConfiguration(configuration.getId());
ConfigurationRecordDto configurationRecord = client.getConfigurationRecord(activatedConfiguration.getSchemaId(), configuration.getEndpointGroupId());
String configurationRecordBody = client.getConfigurationRecordBody(activatedConfiguration.getSchemaId(), activatedConfiguration.getEndpointGroupId());
Assert.assertNotNull(configurationRecordBody);
String expectedConfigurationRecordBody = new String(configurationRecord.getActiveStructureDto().getBody().getBytes(), DECODING_CHARSET);
Assert.assertEquals(expectedConfigurationRecordBody, configurationRecordBody);
}
/**
* Test get configuration records by endpoint group id.
*
* @throws Exception the exception
*/
@Test
public void testGetConfigurationRecordsByEndpointGroupId() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
loginTenantDeveloper(tenantDeveloperDto.getUsername());
EndpointGroupDto endpointGroup = createEndpointGroup(application.getId());
ConfigurationDto configuration1 = createConfiguration(null, endpointGroup.getId(), application.getId());
ConfigurationDto configuration2 = createConfiguration(null, endpointGroup.getId(), application.getId());
List<ConfigurationRecordDto> configurationRecords = client.getConfigurationRecords(endpointGroup.getId(), false);
Assert.assertNotNull(configurationRecords);
Assert.assertEquals(2, configurationRecords.size());
assertConfigurationsEquals(configuration1, configurationRecords.get(0).getInactiveStructureDto());
assertConfigurationsEquals(configuration2, configurationRecords.get(1).getInactiveStructureDto());
}
/**
* Test delete configuration record.
*
* @throws Exception the exception
*/
@Test
public void testDeleteConfigurationRecord() throws Exception {
EndpointGroupDto endpointGroup = createEndpointGroup();
ConfigurationDto configuration1 = createConfiguration(null, endpointGroup.getId());
ConfigurationDto configuration2 = createConfiguration(null, endpointGroup.getId());
client.activateConfiguration(configuration2.getId());
client.deleteConfigurationRecord(configuration2.getSchemaId(), endpointGroup.getId());
List<ConfigurationRecordDto> configurationRecords = client.getConfigurationRecords(endpointGroup.getId(), false);
Assert.assertNotNull(configurationRecords);
Assert.assertEquals(1, configurationRecords.size());
assertConfigurationsEquals(configuration1, configurationRecords.get(0).getInactiveStructureDto());
client.deleteConfigurationRecord(configuration1.getSchemaId(), endpointGroup.getId());
configurationRecords = client.getConfigurationRecords(endpointGroup.getId(), false);
Assert.assertNotNull(configurationRecords);
Assert.assertEquals(0, configurationRecords.size());
}
/**
* Test get vacant schemas by endpoint group id.
*
* @throws Exception the exception
*/
@Test
public void testGetVacantSchemasByEndpointGroupId() throws Exception {
EndpointGroupDto endpointGroup = createEndpointGroup();
ConfigurationSchemaDto configurationSchema1 = createConfigurationSchema(endpointGroup.getApplicationId(), null);
ConfigurationSchemaDto configurationSchema2 = createConfigurationSchema(endpointGroup.getApplicationId(), null);
ConfigurationSchemaDto configurationSchema3 = createConfigurationSchema(endpointGroup.getApplicationId(), null);
createConfiguration(configurationSchema1.getId(), endpointGroup.getId());
createConfiguration(configurationSchema2.getId(), endpointGroup.getId());
List<VersionDto> schemas = client.getVacantConfigurationSchemasByEndpointGroupId(endpointGroup.getId());
Assert.assertNotNull(schemas);
Assert.assertEquals(2, schemas.size());
Collections.sort(schemas);
VersionDto schema = schemas.get(1);
Assert.assertNotNull(schema);
Assert.assertEquals(configurationSchema3.getId(), schema.getId());
Assert.assertEquals(configurationSchema3.getVersion(), schema.getVersion());
}
/**
* Test update configuration.
*
* @throws Exception the exception
*/
@Test
public void testUpdateConfiguration() throws Exception {
ConfigurationDto configuration = createConfiguration();
String configUpdated = getResourceAsString(TEST_CONFIGURATION_UPDATED);
configuration.setBody(configUpdated);
ConfigurationDto updatedConfiguration = client
.editConfiguration(configuration);
Assert.assertNotEquals(updatedConfiguration, configuration);
}
/**
* Test activate configuration.
*
* @throws Exception the exception
*/
@Test
public void testActivateConfiguration() throws Exception {
ConfigurationDto configuration = createConfiguration();
ConfigurationDto activatedConfiguration = client.activateConfiguration(configuration.getId());
Assert.assertEquals(configuration.getId(), activatedConfiguration.getId());
Assert.assertEquals(configuration.getSchemaId(), activatedConfiguration.getSchemaId());
Assert.assertEquals(configuration.getEndpointGroupId(), activatedConfiguration.getEndpointGroupId());
Assert.assertEquals(configuration.getBody(), activatedConfiguration.getBody());
Assert.assertEquals(configuration.getProtocolSchema(), activatedConfiguration.getProtocolSchema());
Assert.assertEquals(configuration.getApplicationId(), activatedConfiguration.getApplicationId());
Assert.assertEquals(activatedConfiguration.getStatus(), UpdateStatus.ACTIVE);
}
/**
* Test deactivate configuration.
*
* @throws Exception the exception
*/
@Test
public void testDeactivateConfiguration() throws Exception {
ConfigurationDto configuration = createConfiguration();
client.activateConfiguration(configuration.getId());
ConfigurationDto deactivatedConfiguration = client.deactivateConfiguration(configuration.getId());
Assert.assertEquals(configuration.getId(), deactivatedConfiguration.getId());
Assert.assertEquals(configuration.getSchemaId(), deactivatedConfiguration.getSchemaId());
Assert.assertEquals(configuration.getEndpointGroupId(), deactivatedConfiguration.getEndpointGroupId());
Assert.assertEquals(configuration.getBody(), deactivatedConfiguration.getBody());
Assert.assertEquals(configuration.getProtocolSchema(), deactivatedConfiguration.getProtocolSchema());
Assert.assertEquals(configuration.getApplicationId(), deactivatedConfiguration.getApplicationId());
Assert.assertEquals(UpdateStatus.DEPRECATED, deactivatedConfiguration.getStatus());
}
/**
* Assert configurations equals.
*
* @param configuration the configuration
* @param storedConfiguration the stored configuration
*/
private void assertConfigurationsEquals(ConfigurationDto configuration, ConfigurationDto storedConfiguration) {
Assert.assertEquals(configuration.getId(), storedConfiguration.getId());
Assert.assertEquals(configuration.getSchemaId(), storedConfiguration.getSchemaId());
Assert.assertEquals(configuration.getEndpointGroupId(), storedConfiguration.getEndpointGroupId());
Assert.assertEquals(configuration.getBody(), storedConfiguration.getBody());
Assert.assertEquals(configuration.getProtocolSchema(), storedConfiguration.getProtocolSchema());
Assert.assertEquals(configuration.getApplicationId(), storedConfiguration.getApplicationId());
Assert.assertEquals(configuration.getStatus(), storedConfiguration.getStatus());
}
}