1 package org.owasp.dependencycheck;
2
3 import mockit.Expectations;
4 import mockit.Mocked;
5 import mockit.Verifications;
6 import org.junit.Test;
7 import org.owasp.dependencycheck.analyzer.FileTypeAnalyzer;
8 import org.owasp.dependencycheck.analyzer.HintAnalyzer;
9 import org.owasp.dependencycheck.dependency.Dependency;
10
11 import java.io.File;
12
13 import static org.junit.Assert.assertFalse;
14 import static org.junit.Assert.assertTrue;
15
16 public class AnalysisTaskTest {
17
18 @Mocked
19 FileTypeAnalyzer fileTypeAnalyzer;
20
21 @Mocked
22 Dependency dependency;
23
24 @Mocked
25 Engine engine;
26
27
28 @Test
29 public void shouldAnalyzeReturnsTrueForNonFileTypeAnalyzers() {
30 AnalysisTask instance = new AnalysisTask(new HintAnalyzer(), null, null, null);
31 boolean shouldAnalyze = instance.shouldAnalyze();
32 assertTrue(shouldAnalyze);
33 }
34
35 @Test
36 public void shouldAnalyzeReturnsTrueIfTheFileTypeAnalyzersAcceptsTheDependency() {
37 final File dependencyFile = new File("");
38 new Expectations() {{
39 dependency.getActualFile();
40 result = dependencyFile;
41
42 fileTypeAnalyzer.accept(dependencyFile);
43 result = true;
44 }};
45
46 AnalysisTask analysisTask = new AnalysisTask(fileTypeAnalyzer, dependency, null, null);
47
48 boolean shouldAnalyze = analysisTask.shouldAnalyze();
49 assertTrue(shouldAnalyze);
50 }
51
52 @Test
53 public void shouldAnalyzeReturnsFalseIfTheFileTypeAnalyzerDoesNotAcceptTheDependency() {
54 final File dependencyFile = new File("");
55 new Expectations() {{
56 dependency.getActualFile();
57 result = dependencyFile;
58
59 fileTypeAnalyzer.accept(dependencyFile);
60 result = false;
61 }};
62
63 AnalysisTask analysisTask = new AnalysisTask(fileTypeAnalyzer, dependency, null, null);
64
65 boolean shouldAnalyze = analysisTask.shouldAnalyze();
66 assertFalse(shouldAnalyze);
67 }
68
69 @Test
70 public void taskAnalyzes() throws Exception {
71 final AnalysisTask analysisTask = new AnalysisTask(fileTypeAnalyzer, dependency, engine, null);
72 new Expectations(analysisTask) {{
73 analysisTask.shouldAnalyze();
74 result = true;
75 }};
76
77 analysisTask.call();
78
79 new Verifications() {{
80 fileTypeAnalyzer.analyze(dependency, engine);
81 times = 1;
82 }};
83 }
84
85 @Test
86 public void taskDoesNothingIfItShouldNotAnalyze() throws Exception {
87 final AnalysisTask analysisTask = new AnalysisTask(fileTypeAnalyzer, dependency, engine, null);
88 new Expectations(analysisTask) {{
89 analysisTask.shouldAnalyze();
90 result = false;
91 }};
92
93 analysisTask.call();
94
95 new Verifications() {{
96 fileTypeAnalyzer.analyze(dependency, engine);
97 times = 0;
98 }};
99 }
100 }