1 /*
2  * This file is part of dependency-check-core.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * Copyright (c) 2017 Jeremy Long. All Rights Reserved.
17  */
18 package org.owasp.dependencycheck.analyzer;
19 
20 import org.junit.Test;
21 import static org.junit.Assert.*;
22 import org.owasp.dependencycheck.BaseTest;
23 import org.owasp.dependencycheck.dependency.Confidence;
24 import org.owasp.dependencycheck.dependency.Dependency;
25 import org.owasp.dependencycheck.dependency.EvidenceType;
26 import org.owasp.dependencycheck.utils.Settings;
27 
28 /**
29  *
30  * @author jerem
31  */
32 public class VersionFilterAnalyzerTest extends BaseTest {
33 
34     /**
35      * Test of getName method, of class VersionFilterAnalyzer.
36      */
37     @Test
testGetName()38     public void testGetName() {
39         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
40         String expResult = "Version Filter Analyzer";
41         String result = instance.getName();
42         assertEquals(expResult, result);
43     }
44 
45     /**
46      * Test of getAnalysisPhase method, of class VersionFilterAnalyzer.
47      */
48     @Test
testGetAnalysisPhase()49     public void testGetAnalysisPhase() {
50         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
51         instance.initialize(getSettings());
52         AnalysisPhase expResult = AnalysisPhase.POST_INFORMATION_COLLECTION;
53         AnalysisPhase result = instance.getAnalysisPhase();
54         assertEquals(expResult, result);
55     }
56 
57     /**
58      * Test of getAnalyzerEnabledSettingKey method, of class
59      * VersionFilterAnalyzer.
60      */
61     @Test
testGetAnalyzerEnabledSettingKey()62     public void testGetAnalyzerEnabledSettingKey() {
63         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
64         instance.initialize(getSettings());
65         String expResult = Settings.KEYS.ANALYZER_VERSION_FILTER_ENABLED;
66         String result = instance.getAnalyzerEnabledSettingKey();
67         assertEquals(expResult, result);
68     }
69 
70     /**
71      * Test of analyzeDependency method, of class VersionFilterAnalyzer.
72      */
73     @Test
testAnalyzeDependency()74     public void testAnalyzeDependency() throws Exception {
75         Dependency dependency = new Dependency();
76 
77         dependency.addEvidence(EvidenceType.VERSION, "util", "version", "33.3", Confidence.HIGHEST);
78         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
79         dependency.addEvidence(EvidenceType.VERSION, "other", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
80 
81         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
82         instance.initialize(getSettings());
83 
84         instance.analyzeDependency(dependency, null);
85         assertEquals(3, dependency.getEvidence(EvidenceType.VERSION).size());
86 
87         dependency.addEvidence(EvidenceType.VERSION, "pom", "version", "1.2.3", Confidence.HIGHEST);
88 
89         instance.analyzeDependency(dependency, null);
90         assertEquals(4, dependency.getEvidence(EvidenceType.VERSION).size());
91 
92         dependency.addEvidence(EvidenceType.VERSION, "file", "version", "1.2.3", Confidence.HIGHEST);
93         instance.analyzeDependency(dependency, null);
94         assertEquals(2, dependency.getEvidence(EvidenceType.VERSION).size());
95 
96         dependency.addEvidence(EvidenceType.VERSION, "Manifest", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
97         instance.analyzeDependency(dependency, null);
98         assertEquals(3, dependency.getEvidence(EvidenceType.VERSION).size());
99 
100         dependency.addEvidence(EvidenceType.VERSION, "nexus", "version", "1.2.3", Confidence.HIGHEST);
101         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
102         instance.analyzeDependency(dependency, null);
103         assertEquals(4, dependency.getEvidence(EvidenceType.VERSION).size());
104 
105         dependency.addEvidence(EvidenceType.VERSION, "central", "version", "1.2.3", Confidence.HIGHEST);
106         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
107         instance.analyzeDependency(dependency, null);
108         assertEquals(5, dependency.getEvidence(EvidenceType.VERSION).size());
109     }
110 
111     /**
112      * Test of analyzeDependency method, of class VersionFilterAnalyzer.
113      */
114     @Test
testAnalyzeDependencyFilePom()115     public void testAnalyzeDependencyFilePom() throws Exception {
116         Dependency dependency = new Dependency();
117 
118         dependency.addEvidence(EvidenceType.VERSION, "util", "version", "33.3", Confidence.HIGHEST);
119         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
120         dependency.addEvidence(EvidenceType.VERSION, "other", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
121 
122         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
123         instance.initialize(getSettings());
124 
125         instance.analyzeDependency(dependency, null);
126         assertEquals(3, dependency.getEvidence(EvidenceType.VERSION).size());
127 
128         dependency.addEvidence(EvidenceType.VERSION, "pom", "version", "1.2.3", Confidence.HIGHEST);
129 
130         instance.analyzeDependency(dependency, null);
131         assertEquals(4, dependency.getEvidence(EvidenceType.VERSION).size());
132 
133         dependency.addEvidence(EvidenceType.VERSION, "file", "version", "1.2.3", Confidence.HIGHEST);
134         instance.analyzeDependency(dependency, null);
135         assertEquals(2, dependency.getEvidence(EvidenceType.VERSION).size());
136 
137         dependency.addEvidence(EvidenceType.VERSION, "nexus", "version", "1.2.3", Confidence.HIGHEST);
138         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
139         instance.analyzeDependency(dependency, null);
140         assertEquals(3, dependency.getEvidence(EvidenceType.VERSION).size());
141 
142         dependency.addEvidence(EvidenceType.VERSION, "central", "version", "1.2.3", Confidence.HIGHEST);
143         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
144         instance.analyzeDependency(dependency, null);
145         assertEquals(4, dependency.getEvidence(EvidenceType.VERSION).size());
146     }
147 
148     /**
149      * Test of analyzeDependency method, of class VersionFilterAnalyzer.
150      */
151     @Test
testAnalyzeDependencyFileManifest()152     public void testAnalyzeDependencyFileManifest() throws Exception {
153         Dependency dependency = new Dependency();
154 
155         dependency.addEvidence(EvidenceType.VERSION, "util", "version", "33.3", Confidence.HIGHEST);
156         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
157         dependency.addEvidence(EvidenceType.VERSION, "other", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
158 
159         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
160         instance.initialize(getSettings());
161 
162         instance.analyzeDependency(dependency, null);
163         assertEquals(3,  dependency.getEvidence(EvidenceType.VERSION).size());
164 
165         dependency.addEvidence(EvidenceType.VERSION, "Manifest", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
166 
167         instance.analyzeDependency(dependency, null);
168         assertEquals(4,  dependency.getEvidence(EvidenceType.VERSION).size());
169 
170         dependency.addEvidence(EvidenceType.VERSION, "file", "version", "1.2.3", Confidence.HIGHEST);
171         instance.analyzeDependency(dependency, null);
172         assertEquals(2,  dependency.getEvidence(EvidenceType.VERSION).size());
173     }
174 
175     /**
176      * Test of analyzeDependency method, of class VersionFilterAnalyzer.
177      */
178     @Test
testAnalyzeDependencyPomManifest()179     public void testAnalyzeDependencyPomManifest() throws Exception {
180         Dependency dependency = new Dependency();
181 
182         dependency.addEvidence(EvidenceType.VERSION, "util", "version", "33.3", Confidence.HIGHEST);
183         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
184         dependency.addEvidence(EvidenceType.VERSION, "other", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
185 
186         VersionFilterAnalyzer instance = new VersionFilterAnalyzer();
187         instance.initialize(getSettings());
188 
189         instance.analyzeDependency(dependency, null);
190         assertEquals(3,  dependency.getEvidence(EvidenceType.VERSION).size());
191 
192         dependency.addEvidence(EvidenceType.VERSION, "pom", "version", "1.2.3", Confidence.HIGHEST);
193 
194         instance.analyzeDependency(dependency, null);
195         assertEquals(4,  dependency.getEvidence(EvidenceType.VERSION).size());
196 
197         dependency.addEvidence(EvidenceType.VERSION, "Manifest", "Implementation-Version", "1.2.3", Confidence.HIGHEST);
198         instance.analyzeDependency(dependency, null);
199         assertEquals(2,  dependency.getEvidence(EvidenceType.VERSION).size());
200 
201         dependency.addEvidence(EvidenceType.VERSION, "nexus", "version", "1.2.3", Confidence.HIGHEST);
202         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
203         instance.analyzeDependency(dependency, null);
204         assertEquals(3,  dependency.getEvidence(EvidenceType.VERSION).size());
205 
206         dependency.addEvidence(EvidenceType.VERSION, "central", "version", "1.2.3", Confidence.HIGHEST);
207         dependency.addEvidence(EvidenceType.VERSION, "other", "version", "alpha", Confidence.HIGHEST);
208         instance.analyzeDependency(dependency, null);
209         assertEquals(4,  dependency.getEvidence(EvidenceType.VERSION).size());
210     }
211 }
212