Module: Metasploit::Framework::Spec::UntestedPayloads
- Defined in:
- lib/metasploit/framework/spec/untested_payloads.rb
Class Method Summary collapse
-
.define_task ⇒ void
Adds action to ‘spec` tasks so that `rake spec` fails if `log/untested-payloads.log` exists and prints out untested payloads from that log to stderr.
Class Method Details
.define_task ⇒ void
Note:
‘Metasploit::Framework::Spec::UntestedPayloads.define_task` should be run after the normal spec task is defined.
This method returns an undefined value.
Adds action to ‘spec` tasks so that `rake spec` fails if `log/untested-payloads.log` exists and prints out untested payloads from that log to stderr.
# @example Using ‘Metasploit::Framework::Spec::UntestedPayloads.define_task` with ’payload can be instantiated’ shared examples and ‘untested payloads’ shared context
# Rakefile
require 'metasploit/framework/spec/untested_payloads'
# defined spec task with rspec-rails
My::Application.load_tasks
# extends spec task to fail when there are untested payloads
Metasploit::Framework::Spec::UntestedPayloads.define_task
# spec/modules/payloads_spec.rb
require 'spec_helper'
describe 'modules/payloads' do
modules_pathname = Pathname.new(__FILE__).parent.parent.parent.join('modules')
include_context 'untested payloads', modules_pathname: modules_pathname
context 'my/staged/payload/handler' do
it_should_behave_like 'payload can be instantiated',
ancestor_reference_names: [
'stages/my/payload',
'stagers/my/payload/handler'
],
modules_pathname: modules_pathname,
reference_name: 'my/staged/payload/handler'
end
end
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/metasploit/framework/spec/untested_payloads.rb', line 42 def self.define_task Rake::Task.define_task :spec do untested_payloads_pathname = Pathname.new 'log/untested-payloads.log' if untested_payloads_pathname.exist? tool_path = 'tools/modules/missing_payload_tests.rb' $stderr.puts "Untested payload detected. Running `#{tool_path}` to see contexts to add to " \ "`spec/modules/payloads_spec.rb` to test those payload ancestor reference names." system(tool_path) exit 1 end end end |