/*******************************************************************************
* (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0 which accompany this distribution.
*
* The Apache License is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package io.cloudslang.lang.compiler.parser;
import io.cloudslang.lang.compiler.SlangSource;
import io.cloudslang.lang.compiler.parser.model.ParsedDescriptionData;
import java.net.URI;
import java.util.LinkedHashMap;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class MetadataParserTest {
@InjectMocks
private MetadataParser metadataParser = new MetadataParser();
@Test
public void testParse() throws Exception {
URI executable = getClass().getResource("/metadata/step/step_description_01.sl").toURI();
// flow description
LinkedHashMap<String, String> flowDescription = new LinkedHashMap<>(); // preserver order
flowDescription.put("@description", "Generated flow description");
flowDescription.put(
"@input input_1",
"Generated description flow input 1 line 1" +
System.lineSeparator() +
"Generated description flow input 1 line 2"
);
flowDescription.put("@input input_2", "Generated description flow input 2");
flowDescription.put("@output output_1", "Generated description flow output 1");
flowDescription.put("@result SUCCESS", "Flow completed successfully.");
flowDescription.put("@result FAILURE", "Failure occurred during execution.");
ParsedDescriptionData parseResult = metadataParser.parse(SlangSource.fromFile(executable));
Assert.assertTrue(parseResult.getTopLevelDescriptions().size() == 1);
Assert.assertEquals(flowDescription, parseResult.getTopLevelDescriptions().get(0).getData());
// step description
LinkedHashMap<String, String> stepDescription = new LinkedHashMap<>();
stepDescription.put("@input step_input_1", "description step input 1");
stepDescription.put(
"@input step_input_2",
"description step input 2 line 1" +
System.lineSeparator() +
"description step input 2 line 2"
);
stepDescription.put("@output step_output_1", "description step output 1");
stepDescription.put("@output step_output_2", "description step output 2");
Assert.assertTrue(parseResult.getStepDescriptions().size() == 1);
Assert.assertTrue(parseResult.getStepDescriptions().containsKey("step_1"));
Assert.assertEquals(stepDescription, parseResult.getStepDescriptions().get("step_1").getData());
Assert.assertTrue(parseResult.getErrors().size() == 0);
}
@Test
public void testParseNoDescription() throws Exception {
URI executable = getClass().getResource("/metadata/step/step_description_03.sl").toURI();
ParsedDescriptionData parseResult = metadataParser.parse(SlangSource.fromFile(executable));
Assert.assertTrue(parseResult.getTopLevelDescriptions().size() == 0);
Assert.assertTrue(parseResult.getStepDescriptions().size() == 0);
Assert.assertTrue(parseResult.getErrors().size() == 0);
}
@Test
public void testParseEmptySource() throws Exception {
URI executable = getClass().getResource("/metadata/step/step_description_04.sl").toURI();
ParsedDescriptionData parseResult = metadataParser.parse(SlangSource.fromFile(executable));
Assert.assertTrue(parseResult.getTopLevelDescriptions().size() == 0);
Assert.assertTrue(parseResult.getStepDescriptions().size() == 0);
Assert.assertTrue(parseResult.getErrors().size() == 0);
}
}