Path: blob/master/spec/shared_examples/views/wp_version.rb
485 views
# frozen_string_literal: true12shared_examples 'App::Views::WpVersion' do3let(:controller) { WPScan::Controller::WpVersion.new }4let(:tpl_vars) { { url: target_url } }56describe 'version' do7let(:view) { 'version' }89context 'when the version is nil' do10let(:expected_view) { 'not_found' }1112it 'outputs the expected string' do13@tpl_vars = tpl_vars.merge(version: nil)14end15end1617context 'when the version is not nil' do18let(:version) { WPScan::Model::WpVersion.new('4.0', found_by: 'rspec') }19before { allow(version).to receive(:db_data).and_return(vuln_api_data_for('wordpresses/40')) }2021context 'when confirmed_by is empty' do22context 'when no interesting_entries' do23let(:expected_view) { 'not_confirmed_no_entries' }2425it 'outputs the expected string' do26@tpl_vars = tpl_vars.merge(version: version)27end28end2930context 'when interesting_entries' do31let(:expected_view) { 'not_confirmed_entries' }3233it 'outputs the expected string' do34version.interesting_entries << 'IE1' << 'IE2'3536@tpl_vars = tpl_vars.merge(version: version)37end38end39end4041context 'when confirmed_by is not empty' do42let(:confirmed1) do43v = version.dup44v.found_by = 'Confirmed 1'45v.interesting_entries << 'IE1'46v47end4849let(:confirmed2) do50v = version.dup51v.found_by = 'Confirmed 2'52v.interesting_entries << 'IE1' << 'IE2'53v54end5556context 'when one confirmed_by' do57let(:expected_view) { 'confirmed_one' }5859it 'outputs the expected string' do60f = WPScan::Finders::Findings.new << version << confirmed16162@tpl_vars = tpl_vars.merge(version: f.first)63end64end6566context 'when multiple confirmed_by' do67let(:expected_view) { 'confirmed_multiples' }6869it 'outputs the expected string' do70f = WPScan::Finders::Findings.new << version << confirmed1 << confirmed27172@tpl_vars = tpl_vars.merge(version: f.first)73end74end75end76end7778context 'when the version is vulnerable' do79let(:expected_view) { 'with_vulns' }80let(:version) { WPScan::Model::WpVersion.new('3.8.1', found_by: 'rspec') }8182before { allow(version).to receive(:db_data).and_return(vuln_api_data_for('wordpresses/381')) }8384it 'outputs the expected string' do85@tpl_vars = tpl_vars.merge(version: version)86end87end88end89end909192