1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.hack23.sonar.cloudformation.reports.process;
21
22 import java.io.IOException;
23 import java.nio.charset.StandardCharsets;
24 import java.nio.file.FileSystems;
25 import java.nio.file.Files;
26 import java.util.Arrays;
27 import java.util.Optional;
28
29 import org.junit.Assert;
30 import org.junit.Test;
31 import org.sonar.api.batch.fs.internal.DefaultFileSystem;
32 import org.sonar.api.batch.fs.internal.DefaultInputFile;
33 import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
34 import org.sonar.api.batch.rule.ActiveRules;
35 import org.sonar.api.batch.rule.internal.DefaultActiveRules;
36 import org.sonar.api.batch.rule.internal.NewActiveRule;
37 import org.sonar.api.batch.sensor.internal.SensorContextTester;
38 import org.sonar.api.rule.RuleKey;
39 import org.sonar.api.scan.filesystem.PathResolver;
40
41
42
43
44 public class CheckovProcessReportsTest extends Assert {
45
46
47
48
49
50
51 @Test
52 public void executeSimpleCheckovReportTest() throws IOException {
53 final DefaultFileSystem fileSystem = new DefaultFileSystem(
54 FileSystems.getDefault().getPath(".").toAbsolutePath());
55
56 final DefaultInputFile inputFile = new TestInputFileBuilder("key",
57 "src/test/resources/checkov/cia-dist-cloudformation.json")
58 .setLanguage("json")
59 .initMetadata(new String(Files.readAllBytes(FileSystems.getDefault()
60 .getPath("src/test/resources/checkov/cia-dist-cloudformation.json"))))
61 .setCharset(StandardCharsets.UTF_8).build();
62 fileSystem.add(inputFile);
63
64 final CheckovProcessReports cloudformationSensor = new CheckovProcessReports(fileSystem, new PathResolver());
65
66 final SensorContextTester sensorContext = SensorContextTester
67 .create(FileSystems.getDefault().getPath(".").toAbsolutePath());
68 sensorContext.fileSystem().add(inputFile);
69 final ActiveRules activeRules = new DefaultActiveRules(Arrays.asList(new NewActiveRule.Builder().setRuleKey(RuleKey.of("cloudformation-plugin-cfn","cloudformation-CKV_AWS_157")).build()));
70 sensorContext.setActiveRules(activeRules);
71
72
73 cloudformationSensor.processCheckovReport(sensorContext,
74 Optional.of("src/test/resources/checkov/cia-dist-cloudformation.checkov-report"));
75 assertFalse(sensorContext.allIssues().isEmpty());
76 assertEquals(1,sensorContext.allIssues().size());
77 }
78
79
80
81
82
83
84 @Test
85 public void executeSimpleCheckovReportFoundNoTemplateTest() throws IOException {
86 final DefaultFileSystem fileSystem = new DefaultFileSystem(
87 FileSystems.getDefault().getPath(".").toAbsolutePath());
88
89 final CheckovProcessReports cloudformationSensor = new CheckovProcessReports(fileSystem, new PathResolver());
90
91 final SensorContextTester sensorContext = SensorContextTester
92 .create(FileSystems.getDefault().getPath(".").toAbsolutePath());
93
94 final ActiveRules activeRules = new DefaultActiveRules(Arrays.asList(new NewActiveRule.Builder().setRuleKey(RuleKey.of("cfn-yaml","cloudformation-CKV_AWS_111")).build()));
95 sensorContext.setActiveRules(activeRules);
96
97 cloudformationSensor.processCheckovReport(sensorContext,
98 Optional.of("src/test/resources/checkov/cia-dist-cloudformation.checkov-report"));
99 assertTrue(sensorContext.allIssues().isEmpty());
100 }
101
102 }