91 lines
2.6 KiB
Ruby
91 lines
2.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
shared_examples 'App::Views::WpVersion' do
|
|
let(:controller) { WPScan::Controller::WpVersion.new }
|
|
let(:tpl_vars) { { url: target_url } }
|
|
|
|
describe 'version' do
|
|
let(:view) { 'version' }
|
|
|
|
context 'when the version is nil' do
|
|
let(:expected_view) { 'not_found' }
|
|
|
|
it 'outputs the expected string' do
|
|
@tpl_vars = tpl_vars.merge(version: nil)
|
|
end
|
|
end
|
|
|
|
context 'when the version is not nil' do
|
|
let(:version) { WPScan::Model::WpVersion.new('4.0', found_by: 'rspec') }
|
|
before { allow(version).to receive(:db_data).and_return(vuln_api_data_for('wordpresses/40')) }
|
|
|
|
context 'when confirmed_by is empty' do
|
|
context 'when no interesting_entries' do
|
|
let(:expected_view) { 'not_confirmed_no_entries' }
|
|
|
|
it 'outputs the expected string' do
|
|
@tpl_vars = tpl_vars.merge(version: version)
|
|
end
|
|
end
|
|
|
|
context 'when interesting_entries' do
|
|
let(:expected_view) { 'not_confirmed_entries' }
|
|
|
|
it 'outputs the expected string' do
|
|
version.interesting_entries << 'IE1' << 'IE2'
|
|
|
|
@tpl_vars = tpl_vars.merge(version: version)
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when confirmed_by is not empty' do
|
|
let(:confirmed_1) do
|
|
v = version.dup
|
|
v.found_by = 'Confirmed 1'
|
|
v.interesting_entries << 'IE1'
|
|
v
|
|
end
|
|
|
|
let(:confirmed_2) do
|
|
v = version.dup
|
|
v.found_by = 'Confirmed 2'
|
|
v.interesting_entries << 'IE1' << 'IE2'
|
|
v
|
|
end
|
|
|
|
context 'when one confirmed_by' do
|
|
let(:expected_view) { 'confirmed_one' }
|
|
|
|
it 'outputs the expected string' do
|
|
f = WPScan::Finders::Findings.new << version << confirmed_1
|
|
|
|
@tpl_vars = tpl_vars.merge(version: f.first)
|
|
end
|
|
end
|
|
|
|
context 'when multiple confirmed_by' do
|
|
let(:expected_view) { 'confirmed_multiples' }
|
|
|
|
it 'outputs the expected string' do
|
|
f = WPScan::Finders::Findings.new << version << confirmed_1 << confirmed_2
|
|
|
|
@tpl_vars = tpl_vars.merge(version: f.first)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when the version is vulnerable' do
|
|
let(:expected_view) { 'with_vulns' }
|
|
let(:version) { WPScan::Model::WpVersion.new('3.8.1', found_by: 'rspec') }
|
|
|
|
before { allow(version).to receive(:db_data).and_return(vuln_api_data_for('wordpresses/381')) }
|
|
|
|
it 'outputs the expected string' do
|
|
@tpl_vars = tpl_vars.merge(version: version)
|
|
end
|
|
end
|
|
end
|
|
end
|