WpTheme::Vulnerable specs

This commit is contained in:
erwanlr
2013-03-26 16:16:22 +01:00
parent ba0af6edda
commit da1c556896
4 changed files with 55 additions and 0 deletions

View File

@@ -2,6 +2,8 @@
class WpTheme < WpItem class WpTheme < WpItem
module Vulnerable module Vulnerable
# @return [ String ] The path to the file containing vulnerabilities
def vulns_file def vulns_file
unless @vulns_file unless @vulns_file
@vulns_file = THEMES_VULNS_FILE @vulns_file = THEMES_VULNS_FILE
@@ -9,8 +11,10 @@ class WpTheme < WpItem
@vulns_file @vulns_file
end end
# @return [ String ]
def vulns_xpath def vulns_xpath
"//theme[@name='#{@name}']/vulnerability" "//theme[@name='#{@name}']/vulnerability"
end end
end end
end end

View File

@@ -4,6 +4,12 @@ require 'spec_helper'
describe WpTheme do describe WpTheme do
it_behaves_like 'WpTheme::Versionable' it_behaves_like 'WpTheme::Versionable'
it_behaves_like 'WpTheme::Vulnerable'
it_behaves_like 'WpItem::Vulnerable' do
let(:options) { { name: 'the-oracle' } }
let(:vulns_file) { MODELS_FIXTURES + '/wp_theme/vulnerable/themes_vulns.xml' }
let(:expected_vulns) { Vulnerabilities.new << Vulnerability.new('I see you', 'FPD', ['http://ref.com']) }
end
subject(:wp_theme) { WpTheme.new(uri, options) } subject(:wp_theme) { WpTheme.new(uri, options) }
let(:uri) { URI.parse('http://example.com/') } let(:uri) { URI.parse('http://example.com/') }

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<vulnerabilities>
<theme name="not-this-one">
<vulnerability>
<title>I should not appear in the results</title>
<reference>http://some-ref.com</reference>
<type>SQLI</type>
</vulnerability>
</theme>
<theme name="the-oracle">
<vulnerability>
<title>I see you</title>
<reference>http://ref.com</reference>
<type>FPD</type>
</vulnerability>
</theme>
</vulnerabilities>

View File

@@ -0,0 +1,26 @@
# encoding: UTF-8
shared_examples 'WpTheme::Vulnerable' do
describe '#vulns_file' do
after { subject.vulns_file.should == @expected }
context 'when :vulns_file is no set' do
it 'returns the default one' do
@expected = THEMES_VULNS_FILE
end
end
context 'when the :vulns_file is already set' do
it 'returns it' do
@expected = 'test.xml'
subject.vulns_file = @expected
end
end
end
describe '#vulns_xpath' do
its(:vulns_xpath) { should == "//theme[@name='theme-name']/vulnerability" }
end
end