Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/spec/lib/finders/dynamic_finder/version/header_pattern_spec.rb
1469 views
1
# frozen_string_literal: true
2
3
describe WPScan::Finders::DynamicFinder::Version::HeaderPattern do
4
module WPScan
5
module Finders
6
module Version
7
# Needed to be able to test the below
8
module Rspec
9
end
10
end
11
end
12
end
13
14
let(:finder_module) { WPScan::Finders::Version::Rspec }
15
let(:finder_class) { WPScan::Finders::Version::Rspec::HeaderPattern }
16
let(:finder_config) { { 'header' => 'Location' } }
17
let(:default) { { 'confidence' => 60 } }
18
19
before { described_class.create_child_class(finder_module, :HeaderPattern, finder_config) }
20
after { finder_module.send(:remove_const, :HeaderPattern) }
21
22
describe '.create_child_class' do
23
context 'when no PATH and CONFIDENCE' do
24
it 'contains the expected constants to their default values' do
25
# Doesn't work, dunno why
26
# expect(finder_module.const_get(:HeaderPattern)).to be_a described_class
27
# expect(finder_class.is_a?(described_class)).to eql true
28
# expect(finder_class).to be_a described_class
29
30
expect(finder_class::HEADER).to eql finder_config['header']
31
32
expect(finder_class::PATTERN).to eql nil
33
expect(finder_class::CONFIDENCE).to eql default['confidence']
34
expect(finder_class::PATH).to eql nil
35
end
36
end
37
38
context 'when CONFIDENCE' do
39
let(:finder_config) { super().merge('confidence' => 50) }
40
41
it 'contains the expected constants' do
42
expect(finder_class::HEADER).to eql finder_config['header']
43
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
44
45
expect(finder_class::PATTERN).to eql nil
46
expect(finder_class::PATH).to eql nil
47
end
48
end
49
50
context 'when PATH' do
51
let(:finder_config) { super().merge('path' => 'index.php') }
52
53
it 'contains the expected constants' do
54
expect(finder_class::HEADER).to eql finder_config['header']
55
expect(finder_class::PATH).to eql finder_config['path']
56
57
expect(finder_class::PATTERN).to eql nil
58
expect(finder_class::CONFIDENCE).to eql default['confidence']
59
end
60
end
61
62
context 'when PATTERN' do
63
let(:finder_config) { super().merge('pattern' => /Version: (?<v>[\d.]+)/i) }
64
65
it 'contains the expected constants' do
66
expect(finder_class::HEADER).to eql finder_config['header']
67
expect(finder_class::PATTERN).to eql finder_config['pattern']
68
69
expect(finder_class::PATH).to eql nil
70
expect(finder_class::CONFIDENCE).to eql default['confidence']
71
end
72
end
73
end
74
75
describe '#passive, #aggressive' do
76
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
77
end
78
end
79
80