Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wpscanteam
GitHub Repository: wpscanteam/wpscan
Path: blob/master/spec/lib/finders/dynamic_finder/version/query_parameter_spec.rb
1469 views
1
# frozen_string_literal: true
2
3
describe WPScan::Finders::DynamicFinder::Version::QueryParameter 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::QueryParameter }
16
let(:finder_config) { { 'files' => %w[f1 f2] } }
17
let(:default) { { 'pattern' => /(?:v|ver|version)=(?<v>\d+\.[.\d]+)/i, 'confidence_per_occurence' => 10 } }
18
19
before { described_class.create_child_class(finder_module, :QueryParameter, finder_config) }
20
after { finder_module.send(:remove_const, :QueryParameter) }
21
22
describe '.create_child_class' do
23
context 'when no XPATH, PATTERN and CONFIDENCE_PER_OCCURENCE ' do
24
it 'contains the expected constants to their default values' do
25
expect(finder_class::FILES).to eql finder_config['files']
26
27
expect(finder_class::PATTERN).to eql default['pattern']
28
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
29
expect(finder_class::XPATH).to eql nil
30
expect(finder_class::PATH).to eql nil
31
end
32
end
33
34
context 'when XPATH' do
35
let(:finder_config) { super().merge('xpath' => '//xpath') }
36
37
it 'contains the expected constants' do
38
expect(finder_class::FILES).to eql finder_config['files']
39
expect(finder_class::XPATH).to eql finder_config['xpath']
40
41
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
42
expect(finder_class::PATTERN).to eql default['pattern']
43
expect(finder_class::PATH).to eql nil
44
end
45
end
46
47
context 'when PATTERN' do
48
let(:finder_config) { super().merge('pattern' => /pattern/i) }
49
50
it 'contains the expected constants' do
51
expect(finder_class::FILES).to eql finder_config['files']
52
expect(finder_class::PATTERN).to eql finder_config['pattern']
53
54
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
55
expect(finder_class::XPATH).to eql nil
56
expect(finder_class::PATH).to eql nil
57
end
58
end
59
60
context 'when CONFIDENCE_PER_OCCURENCE' do
61
let(:finder_config) { super().merge('confidence_per_occurence' => 30) }
62
63
it 'contains the expected constants' do
64
expect(finder_class::FILES).to eql finder_config['files']
65
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql finder_config['confidence_per_occurence']
66
67
expect(finder_class::PATTERN).to eql default['pattern']
68
expect(finder_class::XPATH).to eql nil
69
expect(finder_class::PATH).to eql nil
70
end
71
end
72
73
context 'when PATH' do
74
let(:finder_config) { super().merge('path' => 'file.html') }
75
76
it 'contains the expected constants' do
77
expect(finder_class::FILES).to eql finder_config['files']
78
expect(finder_class::PATH).to eql finder_config['path']
79
80
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
81
expect(finder_class::XPATH).to eql nil
82
expect(finder_class::PATTERN).to eql default['pattern']
83
end
84
end
85
end
86
87
describe '#passive, #aggressive' do
88
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
89
end
90
end
91
92