aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org/onap/sdc/impl/ToscaParserErrorHandlingTest.java
blob: 1e0dd0a7c772f3a0fdb19ecba87abe5b23e9559e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package org.onap.sdc.impl;

import org.testng.annotations.Test;
import static org.testng.Assert.*;

import java.io.File;

import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
import org.onap.sdc.toscaparser.api.utils.JToscaErrorCodes;



public class ToscaParserErrorHandlingTest extends SdcToscaParserBasicTest {
	
	
	@Test
	public void testMissingMetadata(){
		String csarPath = "csars/service-missing-meta-file.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}
	
	
	@Test
	public void testInvalidYamlContentMeta(){
		String csarPath = "csars/service-invalid-yaml-content-meta.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}
	
	@Test
	public void testEntryDefinitionNotDefined(){
		String csarPath = "csars/service-entry-definition-not-defined.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}

	@Test
	public void testMissingEntryDefinitionFile(){
		String csarPath = "csars/service-missing-entry-definition.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}
	
	//@Test - PA - there are currently no critical erros in JTosca
	public void tesValidationError(){
		String csarPath = "csars/service-invalid-input-args.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}
	
	@Test
	public void testInValidMinConformanceLevelError(){
		String csarPath = "csars/service-invalid-conformence-level.csar";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0003");
	}

	@Test
	public void testIgnoreMaxConformanceLevelNoError(){
		String csarPath = "csars/service-max-conformence-level.csar";
		//TODO: Currently, the conformentce level of the csar for this test is 99 (hard coded). Consider to add ability to replace the configuration in run time.
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
		File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		assertNull(captureThrowable);
	}
	
	@Test
	public void testFileNotFound(){
		Throwable captureThrowable = captureThrowable("csars/XXX.csar");
		testThrowable(captureThrowable, "TP0001");
	}
	
	@Test
	public void testInvalidCsarFormat(){
		String csarPath = "csars/csar-invalid-zip.zip";
		String fileLocationString = ToscaParserErrorHandlingTest.class.getClassLoader().getResource(csarPath).getFile();
        File file = new File(fileLocationString);
		Throwable captureThrowable = captureThrowable(file.getAbsolutePath());
		testThrowable(captureThrowable, "TP0002");
	}

	private static void testThrowable(Throwable captureThrowable, String expectedCode) {
		assertNotNull(captureThrowable);
		assertTrue(captureThrowable instanceof SdcToscaParserException, "Error thrown is of type "+captureThrowable.getClass().getSimpleName());
		assertEquals(((SdcToscaParserException)captureThrowable).getCode(), expectedCode);
	}
	
	public static Throwable captureThrowable(String csarPath) {
		Throwable result = null;
		try {
			factory.getSdcCsarHelper(csarPath);
		} catch( Throwable throwable ) {
			result = throwable;
		}
		return result;
	}
}