Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/spec/app/finders/wp_version/readme_spec.rb
1483 views
1
# frozen_string_literal: true
2
3
describe WPScan::Finders::WpVersion::Readme do
4
subject(:finder) { described_class.new(target) }
5
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
6
let(:url) { 'http://ex.lo/' }
7
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'readme') }
8
let(:readme_url) { "#{url}readme.html" }
9
10
describe '#aggressive' do
11
before { stub_request(:get, readme_url).to_return(body: File.read(fixtures.join(file))) }
12
13
after do
14
expect(target).to receive(:sub_dir).and_return(false)
15
expect(finder.aggressive).to eql @expected
16
end
17
18
context 'when no version' do
19
let(:file) { 'no_version.html' }
20
21
it 'returns nil' do
22
@expected = nil
23
end
24
end
25
26
context 'when invalid version number' do
27
let(:file) { 'invalid.html' }
28
29
it 'returns nil' do
30
@expected = nil
31
end
32
end
33
34
context 'when present and valid' do
35
let(:file) { '4.0.html' }
36
37
it 'returns the expected version' do
38
@expected = WPScan::Model::WpVersion.new(
39
'4.0',
40
confidence: 90,
41
found_by: 'Readme (Aggressive Detection)',
42
interesting_entries: [
43
"#{readme_url}, Match: 'Version 4.0'"
44
]
45
)
46
end
47
end
48
end
49
end
50
51