Path: blob/master/spec/lib/finders/dynamic_finder/version/query_parameter_spec.rb
1469 views
# frozen_string_literal: true12describe WPScan::Finders::DynamicFinder::Version::QueryParameter do3module WPScan4module Finders5module Version6# Needed to be able to test the below7module Rspec8end9end10end11end1213let(:finder_module) { WPScan::Finders::Version::Rspec }14let(:finder_class) { WPScan::Finders::Version::Rspec::QueryParameter }15let(:finder_config) { { 'files' => %w[f1 f2] } }16let(:default) { { 'pattern' => /(?:v|ver|version)=(?<v>\d+\.[.\d]+)/i, 'confidence_per_occurence' => 10 } }1718before { described_class.create_child_class(finder_module, :QueryParameter, finder_config) }19after { finder_module.send(:remove_const, :QueryParameter) }2021describe '.create_child_class' do22context 'when no XPATH, PATTERN and CONFIDENCE_PER_OCCURENCE ' do23it 'contains the expected constants to their default values' do24expect(finder_class::FILES).to eql finder_config['files']2526expect(finder_class::PATTERN).to eql default['pattern']27expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']28expect(finder_class::XPATH).to eql nil29expect(finder_class::PATH).to eql nil30end31end3233context 'when XPATH' do34let(:finder_config) { super().merge('xpath' => '//xpath') }3536it 'contains the expected constants' do37expect(finder_class::FILES).to eql finder_config['files']38expect(finder_class::XPATH).to eql finder_config['xpath']3940expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']41expect(finder_class::PATTERN).to eql default['pattern']42expect(finder_class::PATH).to eql nil43end44end4546context 'when PATTERN' do47let(:finder_config) { super().merge('pattern' => /pattern/i) }4849it 'contains the expected constants' do50expect(finder_class::FILES).to eql finder_config['files']51expect(finder_class::PATTERN).to eql finder_config['pattern']5253expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']54expect(finder_class::XPATH).to eql nil55expect(finder_class::PATH).to eql nil56end57end5859context 'when CONFIDENCE_PER_OCCURENCE' do60let(:finder_config) { super().merge('confidence_per_occurence' => 30) }6162it 'contains the expected constants' do63expect(finder_class::FILES).to eql finder_config['files']64expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql finder_config['confidence_per_occurence']6566expect(finder_class::PATTERN).to eql default['pattern']67expect(finder_class::XPATH).to eql nil68expect(finder_class::PATH).to eql nil69end70end7172context 'when PATH' do73let(:finder_config) { super().merge('path' => 'file.html') }7475it 'contains the expected constants' do76expect(finder_class::FILES).to eql finder_config['files']77expect(finder_class::PATH).to eql finder_config['path']7879expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']80expect(finder_class::XPATH).to eql nil81expect(finder_class::PATTERN).to eql default['pattern']82end83end84end8586describe '#passive, #aggressive' do87# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec88end89end909192