View Javadoc
1   /*
2    * Copyright 2014 OWASP.
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  package org.owasp.dependencycheck.data.update;
17  
18  import java.text.DateFormat;
19  import java.text.SimpleDateFormat;
20  import java.util.Properties;
21  import mockit.Mock;
22  import mockit.MockUp;
23  import static org.junit.Assert.assertEquals;
24  import static org.junit.Assert.assertTrue;
25  import org.junit.Test;
26  import org.owasp.dependencycheck.BaseTest;
27  import org.owasp.dependencycheck.data.nvdcve.DatabaseProperties;
28  import org.owasp.dependencycheck.data.update.exception.UpdateException;
29  import org.owasp.dependencycheck.utils.DependencyVersion;
30  
31  /**
32   *
33   * @author Jeremy Long
34   */
35  public class EngineVersionCheckTest extends BaseTest {
36  
37  //    /**
38  //     * Test of update method, of class EngineVersionCheck.
39  //     */
40  //    @Test
41  //    public void testUpdate() throws Exception {
42  //        EngineVersionCheck instance = new EngineVersionCheck();
43  //        instance.update();
44  //    }
45      /**
46       * Test of shouldUpdate method, of class EngineVersionCheck.
47       */
48      @Test
49      public void testShouldUpdate() throws Exception {
50          DatabaseProperties properties = new MockUp<DatabaseProperties>() {
51              final private Properties properties = new Properties();
52  
53              @Mock
54              public void save(String key, String value) throws UpdateException {
55                  properties.setProperty(key, value);
56              }
57  
58              @Mock
59              public String getProperty(String key) {
60                  return properties.getProperty(key);
61              }
62  
63          }.getMockInstance();
64  
65          DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
66  
67          String updateToVersion = "1.2.6";
68          String currentVersion = "1.2.6";
69          long lastChecked = df.parse("2014-12-01").getTime();
70          long now = df.parse("2014-12-01").getTime();
71  
72          EngineVersionCheck instance = new EngineVersionCheck();
73          boolean expResult = false;
74          instance.setUpdateToVersion(updateToVersion);
75          boolean result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
76          assertEquals(expResult, result);
77  
78          updateToVersion = "1.2.5";
79          currentVersion = "1.2.5";
80          lastChecked = df.parse("2014-10-01").getTime();
81          now = df.parse("2014-12-01").getTime();
82          expResult = true;
83          instance.setUpdateToVersion(updateToVersion);
84          result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
85          assertEquals(expResult, result);
86          //System.out.println(properties.getProperty(CURRENT_ENGINE_RELEASE));
87  
88          updateToVersion = "1.2.5";
89          currentVersion = "1.2.5";
90          lastChecked = df.parse("2014-12-01").getTime();
91          now = df.parse("2014-12-03").getTime();
92          expResult = false;
93          instance.setUpdateToVersion(updateToVersion);
94          result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
95          assertEquals(expResult, result);
96  
97          updateToVersion = "1.2.6";
98          currentVersion = "1.2.5";
99          lastChecked = df.parse("2014-12-01").getTime();
100         now = df.parse("2014-12-03").getTime();
101         expResult = true;
102         instance.setUpdateToVersion(updateToVersion);
103         result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
104         assertEquals(expResult, result);
105 
106         updateToVersion = "1.2.5";
107         currentVersion = "1.2.6";
108         lastChecked = df.parse("2014-12-01").getTime();
109         now = df.parse("2014-12-08").getTime();
110         expResult = false;
111         instance.setUpdateToVersion(updateToVersion);
112         result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
113         assertEquals(expResult, result);
114 
115         updateToVersion = "";
116         currentVersion = "1.2.5";
117         lastChecked = df.parse("2014-12-01").getTime();
118         now = df.parse("2014-12-03").getTime();
119         expResult = false;
120         instance.setUpdateToVersion(updateToVersion);
121         result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
122         assertEquals(expResult, result);
123 
124         updateToVersion = "";
125         currentVersion = "1.2.5";
126         lastChecked = df.parse("2014-12-01").getTime();
127         now = df.parse("2015-12-08").getTime();
128         expResult = true;
129         instance.setUpdateToVersion(updateToVersion);
130         result = instance.shouldUpdate(lastChecked, now, properties, currentVersion);
131         assertEquals(expResult, result);
132     }
133 
134     /**
135      * Test of getCurrentReleaseVersion method, of class EngineVersionCheck.
136      */
137     @Test
138     public void testGetCurrentReleaseVersion() {
139         EngineVersionCheck instance = new EngineVersionCheck();
140         DependencyVersion minExpResult = new DependencyVersion("1.2.6");
141         String release = instance.getCurrentReleaseVersion();
142         DependencyVersion result = new DependencyVersion(release);
143         assertTrue(minExpResult.compareTo(result) <= 0);
144     }
145 }