1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.owasp.dependencycheck.analyzer;
19
20 import org.junit.After;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.owasp.dependencycheck.BaseTest;
24 import org.owasp.dependencycheck.analyzer.exception.AnalysisException;
25 import org.owasp.dependencycheck.dependency.Dependency;
26
27 import java.io.File;
28
29 import static org.hamcrest.CoreMatchers.containsString;
30 import static org.hamcrest.CoreMatchers.is;
31 import static org.junit.Assert.*;
32
33
34
35
36
37
38 public class RubyBundlerAnalyzerTest extends BaseTest {
39
40
41
42
43 RubyBundlerAnalyzer analyzer;
44
45
46
47
48
49
50 @Before
51 public void setUp() throws Exception {
52 analyzer = new RubyBundlerAnalyzer();
53 analyzer.setFilesMatched(true);
54 analyzer.initialize();
55 }
56
57
58
59
60
61
62 @After
63 public void tearDown() throws Exception {
64 analyzer.close();
65 analyzer = null;
66 }
67
68
69
70
71 @Test
72 public void testGetName() {
73 assertThat(analyzer.getName(), is("Ruby Bundler Analyzer"));
74 }
75
76
77
78
79 @Test
80 public void testSupportsFiles() {
81 assertThat(analyzer.accept(new File("test.gemspec")), is(false));
82 assertThat(analyzer.accept(new File("specifications" + File.separator + "test.gemspec")), is(true));
83 }
84
85
86
87
88
89
90 @Test
91 public void testAnalyzeGemspec() throws AnalysisException {
92 final Dependency result = new Dependency(BaseTest.getResourceAsFile(this,
93 "ruby/vulnerable/gems/rails-4.1.15/vendor/bundle/ruby/2.2.0/specifications/dalli-2.7.5.gemspec"));
94 analyzer.analyze(result, null);
95
96 final String vendorString = result.getVendorEvidence().toString();
97 assertThat(vendorString, containsString("Peter M. Goldstein"));
98 assertThat(vendorString, containsString("Mike Perham"));
99 assertThat(vendorString, containsString("peter.m.goldstein@gmail.com"));
100 assertThat(vendorString, containsString("https://github.com/petergoldstein/dalli"));
101 assertThat(vendorString, containsString("MIT"));
102 assertThat(result.getProductEvidence().toString(), containsString("dalli"));
103 assertThat(result.getProductEvidence().toString(), containsString("High performance memcached client for Ruby"));
104 assertThat(result.getVersionEvidence().toString(), containsString("2.7.5"));
105 }
106 }