Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/spec/app/finders/plugins/header_pattern_spec.rb
2178 views
1
# frozen_string_literal: true
2
3
describe WPScan::Finders::Plugins::HeaderPattern do
4
subject(:finder) { described_class.new(target) }
5
let(:target) { WPScan::Target.new(url) }
6
let(:url) { 'http://wp.lab/' }
7
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
8
9
def plugin(slug)
10
WPScan::Model::Plugin.new(slug, target)
11
end
12
13
describe '#passive' do
14
after do
15
stub_request(:get, target.url).to_return(headers: headers)
16
17
found = finder.passive
18
19
expect(found).to match_array @expected
20
expect(found.first.found_by).to eql 'Header Pattern (Passive Detection)' unless found.empty?
21
end
22
23
context 'when empty headers' do
24
let(:headers) { {} }
25
26
it 'returns an empty array' do
27
@expected = []
28
end
29
end
30
31
context 'when headers' do
32
before { expect(target).to receive(:content_dir).and_return('wp-content') }
33
34
let(:headers) { JSON.parse(File.read(fixtures.join('header_pattern_passive_all.html'))) }
35
36
it 'returns the expected plugins' do
37
@expected = []
38
39
WPScan::DB::DynamicFinders::Plugin.passive_header_pattern_finder_configs.each_key do |slug|
40
@expected << plugin(slug)
41
end
42
end
43
end
44
end
45
end
46
47