View Javadoc
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 }