Path: blob/master/spec/app/finders/plugins/header_pattern_spec.rb
2178 views
# frozen_string_literal: true12describe WPScan::Finders::Plugins::HeaderPattern do3subject(:finder) { described_class.new(target) }4let(:target) { WPScan::Target.new(url) }5let(:url) { 'http://wp.lab/' }6let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }78def plugin(slug)9WPScan::Model::Plugin.new(slug, target)10end1112describe '#passive' do13after do14stub_request(:get, target.url).to_return(headers: headers)1516found = finder.passive1718expect(found).to match_array @expected19expect(found.first.found_by).to eql 'Header Pattern (Passive Detection)' unless found.empty?20end2122context 'when empty headers' do23let(:headers) { {} }2425it 'returns an empty array' do26@expected = []27end28end2930context 'when headers' do31before { expect(target).to receive(:content_dir).and_return('wp-content') }3233let(:headers) { JSON.parse(File.read(fixtures.join('header_pattern_passive_all.html'))) }3435it 'returns the expected plugins' do36@expected = []3738WPScan::DB::DynamicFinders::Plugin.passive_header_pattern_finder_configs.each_key do |slug|39@expected << plugin(slug)40end41end42end43end44end454647