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