/*******************************************************************************
* Copyright (c) 2016, 2017 Pivotal, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.boot.dash.test.yaml;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.Map;
import org.junit.Test;
import org.springframework.ide.eclipse.boot.dash.cloudfoundry.ApplicationManifestHandler;
import org.springframework.ide.eclipse.boot.dash.cloudfoundry.deployment.CloudApplicationDeploymentProperties;
import org.springsource.ide.eclipse.commons.frameworks.core.util.IOUtil;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.DumperOptions.FlowStyle;
import org.yaml.snakeyaml.DumperOptions.LineBreak;
import org.yaml.snakeyaml.Yaml;
/**
* Tests for generating YAML files from {@link CloudApplicationDeploymentProperties}
*
* @author Alex Boyko
*
*/
public class DeploymentProperties2YamlTest {
private static void testDeploymentProperties(CloudApplicationDeploymentProperties props, String expectedYamlFilePath) throws Exception {
Map<Object, Object> map = ApplicationManifestHandler.toYaml(props, ManifestCompareMergeTests.createCloudDataMap());
DumperOptions options = new DumperOptions();
options.setExplicitStart(true);
options.setCanonical(false);
options.setPrettyFlow(true);
options.setDefaultFlowStyle(FlowStyle.BLOCK);
options.setLineBreak(LineBreak.getPlatformLineBreak());
String generatedManifest = new Yaml(options).dump(map);
File yamlFile = ManifestCompareMergeTests.getTestFile(expectedYamlFilePath);
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(yamlFile);
assertEquals(IOUtil.toString(inputStream).trim(), generatedManifest.trim());
} finally {
if (inputStream != null) {
inputStream.close();
}
}
}
@Test
public void test_no_route_1() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(null);
testDeploymentProperties(props, "manifest-generate-data/no-route-1.yml");
}
@Test
public void test_uri_1() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(Arrays.asList("app.springsource.org"));
testDeploymentProperties(props, "manifest-generate-data/uri-1.yml");
}
@Test
public void test_uri_2() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(Arrays.asList("app-1.springsource.org", "app-2.spring.io"));
testDeploymentProperties(props, "manifest-generate-data/uri-2.yml");
}
@Test
public void test_uri_3() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(Arrays.asList("app-1.springsource.org"));
testDeploymentProperties(props, "manifest-generate-data/uri-3.yml");
}
@Test
public void test_no_hostname_1() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(Arrays.asList("springsource.org"));
testDeploymentProperties(props, "manifest-generate-data/no-hostname-1.yml");
}
@Test
public void test_no_hostname_2() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setUris(Arrays.asList("springsource.org", "spring.io"));
testDeploymentProperties(props, "manifest-generate-data/no-hostname-2.yml");
}
@Test
public void test_command_1() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setCommand("my-command");
props.setUris(Arrays.asList("app.springsource.org"));
testDeploymentProperties(props, "manifest-generate-data/command-1.yml");
}
@Test
public void test_stack_1() throws Exception {
CloudApplicationDeploymentProperties props = new CloudApplicationDeploymentProperties();
props.setAppName("app");
props.setMemory(512);
props.setStack("my-stack");
props.setUris(Arrays.asList("app.springsource.org"));
testDeploymentProperties(props, "manifest-generate-data/stack-1.yml");
}
}