/*
* 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.ConfigurationSchemaDto;
import org.kaaproject.kaa.common.dto.EndpointProfileSchemaDto;
import org.kaaproject.kaa.common.dto.NotificationSchemaDto;
import org.kaaproject.kaa.common.dto.admin.SdkPlatform;
import org.kaaproject.kaa.common.dto.admin.SdkProfileDto;
import org.kaaproject.kaa.common.dto.event.ApplicationEventFamilyMapDto;
import org.kaaproject.kaa.common.dto.file.FileData;
import org.kaaproject.kaa.common.dto.logs.LogSchemaDto;
import java.util.Collections;
import java.util.List;
/**
* The Class ControlServerSdkIT.
*/
public class ControlServerSdkIT extends AbstractTestControlServer {
/**
* Test generate java sdk.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdk() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), null,
logSchema.getVersion(), null).getId(), SdkPlatform.JAVA);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.JAVA.getContentType(), sdk.getContentType());
}
/**
* Test generate java sdk with event support.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdkWithEventSupport() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
ApplicationEventFamilyMapDto aefMap = createApplicationEventFamilyMap(application.getApplicationToken(), null, 1);
List<String> aefMapIds = Collections.singletonList(aefMap.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), aefMapIds,
logSchema.getVersion(), null).getId(), SdkPlatform.JAVA);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.JAVA.getContentType(), sdk.getContentType());
}
/**
* Test generate android sdk with event support.
*
* @throws Exception the exception
*/
@Test
public void testGenerateAndroidSdkWithEventSupport() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
ApplicationEventFamilyMapDto aefMap = createApplicationEventFamilyMap(application.getApplicationToken(), null, 1);
List<String> aefMapIds = Collections.singletonList(aefMap.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), aefMapIds,
logSchema.getVersion(), null).getId(), SdkPlatform.ANDROID);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.ANDROID.getContentType(), sdk.getContentType());
}
/**
* Test generate cpp sdk.
*
* @throws Exception the exception
*/
@Test
public void testGenerateCppSdk() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), null,
logSchema.getVersion(), null).getId(), SdkPlatform.CPP);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.CPP.getContentType(), sdk.getContentType());
}
/**
* Test generate cpp sdk with event support.
*
* @throws Exception the exception
*/
@Test
public void testGenerateCppSdkWithEventSupport() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
ApplicationEventFamilyMapDto aefMap = createApplicationEventFamilyMap(application.getApplicationToken(), null, 1);
List<String> aefMapIds = Collections.singletonList(aefMap.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), aefMapIds,
logSchema.getVersion(), null).getId(), SdkPlatform.CPP);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.CPP.getContentType(), sdk.getContentType());
}
/**
* Test generate c sdk.
*
* @throws Exception the exception
*/
@Test
public void testGenerateCSdk() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(),
profileSchema.getVersion(),
configSchema.getVersion(),
notificationSchema.getVersion(),
null, logSchema.getVersion(), null).getId(),
SdkPlatform.C);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.C.getContentType(), sdk.getContentType());
}
/**
* Test generate c sdk with event support.
*
* @throws Exception the exception
*/
@Test
public void testGenerateCSdkWithEventSupport() throws Exception {
ApplicationDto application = createApplication(tenantAdminDto);
EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
NotificationSchemaDto notificationSchema = createUserNotificationSchema(application.getId());
LogSchemaDto logSchema = createLogSchema(application.getId());
ApplicationEventFamilyMapDto aefMap = createApplicationEventFamilyMap(application.getApplicationToken(), null, 1);
List<String> aefMapIds = Collections.singletonList(aefMap.getId());
FileData sdk = client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), notificationSchema.getVersion(), aefMapIds,
logSchema.getVersion(), null).getId(), SdkPlatform.C);
Assert.assertNotNull(sdk);
Assert.assertFalse(strIsEmpty(sdk.getFileName()));
Assert.assertNotNull(sdk.getFileData());
Assert.assertEquals(SdkPlatform.C.getContentType(), sdk.getContentType());
}
/**
* Test generate java sdk with invalid application.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdkWithInvalidApplication() throws Exception {
checkNotFound(new TestRestCall() {
@Override
public void executeRestCall() throws Exception {
client.downloadSdk(getSdkProfile("123", 1, 1, 1, null, 0, null).getId(), SdkPlatform.JAVA);
}
});
}
/**
* Test generate java sdk with invalid profile schema.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdkWithInvalidProfileSchema() throws Exception {
final ApplicationDto application = createApplication(tenantAdminDto);
loginTenantDeveloper(tenantDeveloperUser);
checkNotFound(new TestRestCall() {
@Override
public void executeRestCall() throws Exception {
client.downloadSdk(getSdkProfile(application.getId(), 2, 2, 2, null, 0, null).getId(), SdkPlatform.JAVA);
}
});
}
/**
* Test generate java sdk with invalid configuration schema.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdkWithInvalidConfigurationSchema() throws Exception {
final ApplicationDto application = createApplication(tenantAdminDto);
loginTenantDeveloper(tenantDeveloperUser);
final EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
checkNotFound(new TestRestCall() {
@Override
public void executeRestCall() throws Exception {
client.downloadSdk(getSdkProfile(application.getId(),
profileSchema.getVersion(), 2, 2, null, 0, null).getId(), SdkPlatform.JAVA);
}
});
}
/**
* Test generate java sdk with invalid notification schema.
*
* @throws Exception the exception
*/
@Test
public void testGenerateJavaSdkWithInvalidNotificationSchema() throws Exception {
final ApplicationDto application = createApplication(tenantAdminDto);
loginTenantDeveloper(tenantDeveloperUser);
final EndpointProfileSchemaDto profileSchema = createEndpointProfileSchema(application.getId(), null);
final ConfigurationSchemaDto configSchema = createConfigurationSchema(application.getId(), null);
checkNotFound(new TestRestCall() {
@Override
public void executeRestCall() throws Exception {
client.downloadSdk(getSdkProfile(application.getId(), profileSchema.getVersion(),
configSchema.getVersion(), 2, null, 0, null).getId(), SdkPlatform.JAVA);
}
});
}
private SdkProfileDto getSdkProfile(String appId,
Integer profileSchemaVersion, Integer configSchemaVersion,
Integer notificationSchemaVersion, List<String> aefMapIds,
Integer logSchemaVersion, String defaultVerifierToken) throws Exception {
return client.createSdkProfile(new SdkProfileDto(appId, configSchemaVersion, profileSchemaVersion,
notificationSchemaVersion, logSchemaVersion, aefMapIds, defaultVerifierToken, null,
"devuser", 100000L, "someName"));
}
}