50 lines
1.3 KiB
Ruby
50 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe WPScan::Finders::WpVersion::Readme do
|
|
subject(:finder) { described_class.new(target) }
|
|
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
|
|
let(:url) { 'http://ex.lo/' }
|
|
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'readme') }
|
|
let(:readme_url) { "#{url}readme.html" }
|
|
|
|
describe '#aggressive' do
|
|
before { stub_request(:get, readme_url).to_return(body: File.read(fixtures.join(file))) }
|
|
|
|
after do
|
|
expect(target).to receive(:sub_dir).and_return(false)
|
|
expect(finder.aggressive).to eql @expected
|
|
end
|
|
|
|
context 'when no version' do
|
|
let(:file) { 'no_version.html' }
|
|
|
|
it 'returns nil' do
|
|
@expected = nil
|
|
end
|
|
end
|
|
|
|
context 'when invalid version number' do
|
|
let(:file) { 'invalid.html' }
|
|
|
|
it 'returns nil' do
|
|
@expected = nil
|
|
end
|
|
end
|
|
|
|
context 'when present and valid' do
|
|
let(:file) { '4.0.html' }
|
|
|
|
it 'returns the expected version' do
|
|
@expected = WPScan::Model::WpVersion.new(
|
|
'4.0',
|
|
confidence: 90,
|
|
found_by: 'Readme (Aggressive Detection)',
|
|
interesting_entries: [
|
|
"#{readme_url}, Match: 'Version 4.0'"
|
|
]
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|