commit
c28b6a54d4
|
@ -16,8 +16,6 @@ rvm:
|
||||||
- '2.4.1'
|
- '2.4.1'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# TODO: restore these tests when the code passes them!
|
|
||||||
# - CMD='bundle exec rake cucumber cucumber:boot CREATE_BINSTUBS=true'
|
|
||||||
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content"'
|
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content"'
|
||||||
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag ~content"'
|
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag ~content"'
|
||||||
|
|
||||||
|
|
8
Gemfile
8
Gemfile
|
@ -37,14 +37,6 @@ group :development, :test do
|
||||||
end
|
end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
# cucumber extension for testing command line applications, like msfconsole
|
|
||||||
gem 'aruba'
|
|
||||||
# cucumber + automatic database cleaning with database_cleaner
|
|
||||||
gem 'cucumber-rails', :require => false
|
|
||||||
gem 'shoulda-matchers'
|
|
||||||
# Manipulate Time.now in specs
|
# Manipulate Time.now in specs
|
||||||
gem 'timecop'
|
gem 'timecop'
|
||||||
# Needed to work around a regression between capybara 2.7.1 and xpath 2.1
|
|
||||||
# XXX remove when capybara is updated to work with xpath 2.1
|
|
||||||
gem 'xpath', '2.0'
|
|
||||||
end
|
end
|
||||||
|
|
48
Gemfile.lock
48
Gemfile.lock
|
@ -102,46 +102,12 @@ GEM
|
||||||
arel (6.0.4)
|
arel (6.0.4)
|
||||||
arel-helpers (2.4.0)
|
arel-helpers (2.4.0)
|
||||||
activerecord (>= 3.1.0, < 6)
|
activerecord (>= 3.1.0, < 6)
|
||||||
aruba (0.14.2)
|
|
||||||
childprocess (~> 0.5.6)
|
|
||||||
contracts (~> 0.9)
|
|
||||||
cucumber (>= 1.3.19)
|
|
||||||
ffi (~> 1.9.10)
|
|
||||||
rspec-expectations (>= 2.99)
|
|
||||||
thor (~> 0.19)
|
|
||||||
backports (3.8.0)
|
backports (3.8.0)
|
||||||
bcrypt (3.1.11)
|
bcrypt (3.1.11)
|
||||||
bindata (2.4.0)
|
bindata (2.4.0)
|
||||||
bit-struct (0.16)
|
bit-struct (0.16)
|
||||||
builder (3.2.3)
|
builder (3.2.3)
|
||||||
capybara (2.14.4)
|
|
||||||
addressable
|
|
||||||
mime-types (>= 1.16)
|
|
||||||
nokogiri (>= 1.3.3)
|
|
||||||
rack (>= 1.0.0)
|
|
||||||
rack-test (>= 0.5.4)
|
|
||||||
xpath (~> 2.0)
|
|
||||||
childprocess (0.5.9)
|
|
||||||
ffi (~> 1.0, >= 1.0.11)
|
|
||||||
coderay (1.1.1)
|
coderay (1.1.1)
|
||||||
contracts (0.16.0)
|
|
||||||
cucumber (2.4.0)
|
|
||||||
builder (>= 2.1.2)
|
|
||||||
cucumber-core (~> 1.5.0)
|
|
||||||
cucumber-wire (~> 0.0.1)
|
|
||||||
diff-lcs (>= 1.1.3)
|
|
||||||
gherkin (~> 4.0)
|
|
||||||
multi_json (>= 1.7.5, < 2.0)
|
|
||||||
multi_test (>= 0.1.2)
|
|
||||||
cucumber-core (1.5.0)
|
|
||||||
gherkin (~> 4.0)
|
|
||||||
cucumber-rails (1.5.0)
|
|
||||||
capybara (>= 1.1.2, < 3)
|
|
||||||
cucumber (>= 1.3.8, < 4)
|
|
||||||
mime-types (>= 1.17, < 4)
|
|
||||||
nokogiri (~> 1.5)
|
|
||||||
railties (>= 4, < 5.2)
|
|
||||||
cucumber-wire (0.0.1)
|
|
||||||
diff-lcs (1.3)
|
diff-lcs (1.3)
|
||||||
dnsruby (1.60.1)
|
dnsruby (1.60.1)
|
||||||
docile (1.1.5)
|
docile (1.1.5)
|
||||||
|
@ -153,10 +119,8 @@ GEM
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
faraday (0.12.1)
|
faraday (0.12.1)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
ffi (1.9.18)
|
|
||||||
filesize (0.1.1)
|
filesize (0.1.1)
|
||||||
fivemat (1.3.5)
|
fivemat (1.3.5)
|
||||||
gherkin (4.1.3)
|
|
||||||
google-protobuf (3.3.0)
|
google-protobuf (3.3.0)
|
||||||
googleauth (0.5.1)
|
googleauth (0.5.1)
|
||||||
faraday (~> 0.9)
|
faraday (~> 0.9)
|
||||||
|
@ -216,14 +180,10 @@ GEM
|
||||||
recog (~> 2.0)
|
recog (~> 2.0)
|
||||||
metasploit_payloads-mettle (0.1.10)
|
metasploit_payloads-mettle (0.1.10)
|
||||||
method_source (0.8.2)
|
method_source (0.8.2)
|
||||||
mime-types (3.1)
|
|
||||||
mime-types-data (~> 3.2015)
|
|
||||||
mime-types-data (3.2016.0521)
|
|
||||||
mini_portile2 (2.2.0)
|
mini_portile2 (2.2.0)
|
||||||
minitest (5.10.2)
|
minitest (5.10.2)
|
||||||
msgpack (1.1.0)
|
msgpack (1.1.0)
|
||||||
multi_json (1.12.1)
|
multi_json (1.12.1)
|
||||||
multi_test (0.1.2)
|
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
nessus_rest (0.1.6)
|
nessus_rest (0.1.6)
|
||||||
net-ssh (4.1.0)
|
net-ssh (4.1.0)
|
||||||
|
@ -358,8 +318,6 @@ GEM
|
||||||
sawyer (0.8.1)
|
sawyer (0.8.1)
|
||||||
addressable (>= 2.3.5, < 2.6)
|
addressable (>= 2.3.5, < 2.6)
|
||||||
faraday (~> 0.8, < 1.0)
|
faraday (~> 0.8, < 1.0)
|
||||||
shoulda-matchers (3.1.2)
|
|
||||||
activesupport (>= 4.0.0)
|
|
||||||
signet (0.7.3)
|
signet (0.7.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
faraday (~> 0.9)
|
faraday (~> 0.9)
|
||||||
|
@ -386,16 +344,12 @@ GEM
|
||||||
activemodel (>= 4.2.7)
|
activemodel (>= 4.2.7)
|
||||||
activesupport (>= 4.2.7)
|
activesupport (>= 4.2.7)
|
||||||
xmlrpc (0.3.0)
|
xmlrpc (0.3.0)
|
||||||
xpath (2.0.0)
|
|
||||||
nokogiri (~> 1.3)
|
|
||||||
yard (0.9.9)
|
yard (0.9.9)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
aruba
|
|
||||||
cucumber-rails
|
|
||||||
factory_girl_rails
|
factory_girl_rails
|
||||||
fivemat
|
fivemat
|
||||||
metasploit-aggregator
|
metasploit-aggregator
|
||||||
|
@ -406,10 +360,8 @@ DEPENDENCIES
|
||||||
redcarpet
|
redcarpet
|
||||||
rspec-rails
|
rspec-rails
|
||||||
rspec-rerun
|
rspec-rerun
|
||||||
shoulda-matchers
|
|
||||||
simplecov
|
simplecov
|
||||||
timecop
|
timecop
|
||||||
xpath (= 2.0)
|
|
||||||
yard
|
yard
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
|
|
79
LICENSE_GEMS
79
LICENSE_GEMS
|
@ -1,71 +1,62 @@
|
||||||
This file is auto-generated by tools/dev/update_gem_licenses.sh
|
This file is auto-generated by tools/dev/update_gem_licenses.sh
|
||||||
actionpack, 4.2.8, MIT
|
Ascii85, 1.0.2, MIT
|
||||||
actionview, 4.2.8, MIT
|
actionpack, 4.2.9, MIT
|
||||||
activemodel, 4.2.8, MIT
|
actionview, 4.2.9, MIT
|
||||||
activerecord, 4.2.8, MIT
|
activemodel, 4.2.9, MIT
|
||||||
activesupport, 4.2.8, MIT
|
activerecord, 4.2.9, MIT
|
||||||
|
activesupport, 4.2.9, MIT
|
||||||
addressable, 2.5.1, "Apache 2.0"
|
addressable, 2.5.1, "Apache 2.0"
|
||||||
|
afm, 0.2.2, MIT
|
||||||
arel, 6.0.4, MIT
|
arel, 6.0.4, MIT
|
||||||
arel-helpers, 2.4.0, unknown
|
arel-helpers, 2.4.0, unknown
|
||||||
aruba, 0.14.2, MIT
|
|
||||||
backports, 3.8.0, MIT
|
backports, 3.8.0, MIT
|
||||||
bcrypt, 3.1.11, MIT
|
bcrypt, 3.1.11, MIT
|
||||||
bindata, 2.4.0, ruby
|
bindata, 2.4.0, ruby
|
||||||
bit-struct, 0.16, ruby
|
bit-struct, 0.16, ruby
|
||||||
builder, 3.2.3, MIT
|
builder, 3.2.3, MIT
|
||||||
bundler, 1.15.0, MIT
|
bundler, 1.15.1, MIT
|
||||||
capybara, 2.14.0, MIT
|
|
||||||
childprocess, 0.5.9, MIT
|
|
||||||
coderay, 1.1.1, MIT
|
coderay, 1.1.1, MIT
|
||||||
contracts, 0.16.0, "Simplified BSD"
|
|
||||||
cucumber, 2.4.0, MIT
|
|
||||||
cucumber-core, 1.5.0, MIT
|
|
||||||
cucumber-rails, 1.5.0, MIT
|
|
||||||
cucumber-wire, 0.0.1, MIT
|
|
||||||
diff-lcs, 1.3, "MIT, Artistic-2.0, GPL-2.0+"
|
diff-lcs, 1.3, "MIT, Artistic-2.0, GPL-2.0+"
|
||||||
|
dnsruby, 1.60.1, "Apache 2.0"
|
||||||
docile, 1.1.5, MIT
|
docile, 1.1.5, MIT
|
||||||
erubis, 2.7.0, MIT
|
erubis, 2.7.0, MIT
|
||||||
factory_girl, 4.8.0, MIT
|
factory_girl, 4.8.0, MIT
|
||||||
factory_girl_rails, 4.8.0, MIT
|
factory_girl_rails, 4.8.0, MIT
|
||||||
faraday, 0.12.1, MIT
|
faraday, 0.12.1, MIT
|
||||||
ffi, 1.9.18, "New BSD"
|
|
||||||
filesize, 0.1.1, MIT
|
filesize, 0.1.1, MIT
|
||||||
fivemat, 1.3.3, MIT
|
fivemat, 1.3.5, MIT
|
||||||
gherkin, 4.1.3, MIT
|
|
||||||
google-protobuf, 3.3.0, "New BSD"
|
google-protobuf, 3.3.0, "New BSD"
|
||||||
googleauth, 0.5.1, "Apache 2.0"
|
googleauth, 0.5.1, "Apache 2.0"
|
||||||
grpc, 1.3.4, "New BSD"
|
grpc, 1.4.1, "New BSD"
|
||||||
i18n, 0.8.1, MIT
|
hashery, 2.1.2, "Simplified BSD"
|
||||||
|
i18n, 0.8.6, MIT
|
||||||
jsobfu, 0.4.2, "New BSD"
|
jsobfu, 0.4.2, "New BSD"
|
||||||
json, 2.1.0, ruby
|
json, 2.1.0, ruby
|
||||||
jwt, 1.5.6, MIT
|
jwt, 1.5.6, MIT
|
||||||
little-plugger, 1.1.4, MIT
|
little-plugger, 1.1.4, MIT
|
||||||
logging, 2.2.2, MIT
|
logging, 2.2.2, MIT
|
||||||
loofah, 2.0.3, MIT
|
loofah, 2.0.3, MIT
|
||||||
memoist, 0.15.0, MIT
|
memoist, 0.16.0, MIT
|
||||||
metasm, 1.0.3, LGPL
|
metasm, 1.0.3, LGPL
|
||||||
metasploit-aggregator, 0.2.1, "New BSD"
|
metasploit-aggregator, 0.2.1, "New BSD"
|
||||||
metasploit-concern, 2.0.4, "New BSD"
|
metasploit-concern, 2.0.5, "New BSD"
|
||||||
metasploit-credential, 2.0.9, "New BSD"
|
metasploit-credential, 2.0.10, "New BSD"
|
||||||
metasploit-framework, 4.14.23, "New BSD"
|
metasploit-framework, 4.15.0, "New BSD"
|
||||||
metasploit-model, 2.0.4, "New BSD"
|
metasploit-model, 2.0.4, "New BSD"
|
||||||
metasploit-payloads, 1.2.29, "3-clause (or ""modified"") BSD"
|
metasploit-payloads, 1.2.37, "3-clause (or ""modified"") BSD"
|
||||||
metasploit_data_models, 2.0.14, "New BSD"
|
metasploit_data_models, 2.0.15, "New BSD"
|
||||||
metasploit_payloads-mettle, 0.1.9, "3-clause (or ""modified"") BSD"
|
metasploit_payloads-mettle, 0.1.10, "3-clause (or ""modified"") BSD"
|
||||||
method_source, 0.8.2, MIT
|
method_source, 0.8.2, MIT
|
||||||
mime-types, 3.1, MIT
|
mini_portile2, 2.2.0, MIT
|
||||||
mime-types-data, 3.2016.0521, MIT
|
|
||||||
mini_portile2, 2.1.0, MIT
|
|
||||||
minitest, 5.10.2, MIT
|
minitest, 5.10.2, MIT
|
||||||
msgpack, 1.1.0, "Apache 2.0"
|
msgpack, 1.1.0, "Apache 2.0"
|
||||||
multi_json, 1.12.1, MIT
|
multi_json, 1.12.1, MIT
|
||||||
multi_test, 0.1.2, MIT
|
|
||||||
multipart-post, 2.0.0, MIT
|
multipart-post, 2.0.0, MIT
|
||||||
nessus_rest, 0.1.6, MIT
|
nessus_rest, 0.1.6, MIT
|
||||||
net-ssh, 4.1.0, MIT
|
net-ssh, 4.1.0, MIT
|
||||||
network_interface, 0.0.1, MIT
|
network_interface, 0.0.1, MIT
|
||||||
nexpose, 6.0.0, BSD
|
nexpose, 6.1.0, BSD
|
||||||
nokogiri, 1.7.2, MIT
|
nokogiri, 1.8.0, MIT
|
||||||
octokit, 4.7.0, MIT
|
octokit, 4.7.0, MIT
|
||||||
openssl-ccm, 1.2.1, MIT
|
openssl-ccm, 1.2.1, MIT
|
||||||
openvas-omp, 0.0.4, MIT
|
openvas-omp, 0.0.4, MIT
|
||||||
|
@ -73,6 +64,7 @@ os, 0.9.6, MIT
|
||||||
packetfu, 1.1.13, BSD
|
packetfu, 1.1.13, BSD
|
||||||
patch_finder, 1.0.2, "New BSD"
|
patch_finder, 1.0.2, "New BSD"
|
||||||
pcaprub, 0.12.4, LGPL-2.1
|
pcaprub, 0.12.4, LGPL-2.1
|
||||||
|
pdf-reader, 2.0.0, MIT
|
||||||
pg, 0.20.0, "New BSD"
|
pg, 0.20.0, "New BSD"
|
||||||
pg_array_parser, 0.0.9, unknown
|
pg_array_parser, 0.0.9, unknown
|
||||||
postgres_ext, 3.0.0, MIT
|
postgres_ext, 3.0.0, MIT
|
||||||
|
@ -83,14 +75,14 @@ rack-test, 0.6.3, MIT
|
||||||
rails-deprecated_sanitizer, 1.0.3, MIT
|
rails-deprecated_sanitizer, 1.0.3, MIT
|
||||||
rails-dom-testing, 1.0.8, MIT
|
rails-dom-testing, 1.0.8, MIT
|
||||||
rails-html-sanitizer, 1.0.3, MIT
|
rails-html-sanitizer, 1.0.3, MIT
|
||||||
railties, 4.2.8, MIT
|
railties, 4.2.9, MIT
|
||||||
rake, 12.0.0, MIT
|
rake, 12.0.0, MIT
|
||||||
rb-readline, 0.5.4, BSD
|
rb-readline, 0.5.4, BSD
|
||||||
recog, 2.1.8, unknown
|
recog, 2.1.11, unknown
|
||||||
redcarpet, 3.4.0, MIT
|
redcarpet, 3.4.0, MIT
|
||||||
rex-arch, 0.1.4, "New BSD"
|
rex-arch, 0.1.9, "New BSD"
|
||||||
rex-bin_tools, 0.1.3, "New BSD"
|
rex-bin_tools, 0.1.4, "New BSD"
|
||||||
rex-core, 0.1.10, "New BSD"
|
rex-core, 0.1.11, "New BSD"
|
||||||
rex-encoder, 0.1.4, "New BSD"
|
rex-encoder, 0.1.4, "New BSD"
|
||||||
rex-exploitation, 0.1.14, "New BSD"
|
rex-exploitation, 0.1.14, "New BSD"
|
||||||
rex-java, 0.1.5, "New BSD"
|
rex-java, 0.1.5, "New BSD"
|
||||||
|
@ -101,23 +93,25 @@ rex-powershell, 0.1.72, "New BSD"
|
||||||
rex-random_identifier, 0.1.2, "New BSD"
|
rex-random_identifier, 0.1.2, "New BSD"
|
||||||
rex-registry, 0.1.3, "New BSD"
|
rex-registry, 0.1.3, "New BSD"
|
||||||
rex-rop_builder, 0.1.3, "New BSD"
|
rex-rop_builder, 0.1.3, "New BSD"
|
||||||
rex-socket, 0.1.6, "New BSD"
|
rex-socket, 0.1.8, "New BSD"
|
||||||
rex-sslscan, 0.1.4, "New BSD"
|
rex-sslscan, 0.1.4, "New BSD"
|
||||||
rex-struct2, 0.1.2, "New BSD"
|
rex-struct2, 0.1.2, "New BSD"
|
||||||
rex-text, 0.2.15, "New BSD"
|
rex-text, 0.2.15, "New BSD"
|
||||||
rex-zip, 0.1.3, "New BSD"
|
rex-zip, 0.1.3, "New BSD"
|
||||||
rkelly-remix, 0.0.7, MIT
|
rkelly-remix, 0.0.7, MIT
|
||||||
robots, 0.10.1, MIT
|
robots, 0.10.1, MIT
|
||||||
|
rspec, 3.6.0, MIT
|
||||||
rspec-core, 3.6.0, MIT
|
rspec-core, 3.6.0, MIT
|
||||||
rspec-expectations, 3.6.0, MIT
|
rspec-expectations, 3.6.0, MIT
|
||||||
rspec-mocks, 3.6.0, MIT
|
rspec-mocks, 3.6.0, MIT
|
||||||
rspec-rails, 3.6.0, MIT
|
rspec-rails, 3.6.0, MIT
|
||||||
|
rspec-rerun, 1.1.0, MIT
|
||||||
rspec-support, 3.6.0, MIT
|
rspec-support, 3.6.0, MIT
|
||||||
ruby_smb, 0.0.17, "New BSD"
|
ruby-rc4, 0.1.5, MIT
|
||||||
|
ruby_smb, 0.0.18, "New BSD"
|
||||||
rubyntlm, 0.6.2, MIT
|
rubyntlm, 0.6.2, MIT
|
||||||
rubyzip, 1.2.1, "Simplified BSD"
|
rubyzip, 1.2.1, "Simplified BSD"
|
||||||
sawyer, 0.8.1, MIT
|
sawyer, 0.8.1, MIT
|
||||||
shoulda-matchers, 3.1.1, MIT
|
|
||||||
signet, 0.7.3, "Apache 2.0"
|
signet, 0.7.3, "Apache 2.0"
|
||||||
simplecov, 0.14.1, MIT
|
simplecov, 0.14.1, MIT
|
||||||
simplecov-html, 0.10.1, MIT
|
simplecov-html, 0.10.1, MIT
|
||||||
|
@ -126,10 +120,11 @@ sqlite3, 1.3.13, "New BSD"
|
||||||
sshkey, 1.9.0, MIT
|
sshkey, 1.9.0, MIT
|
||||||
thor, 0.19.4, MIT
|
thor, 0.19.4, MIT
|
||||||
thread_safe, 0.3.6, "Apache 2.0"
|
thread_safe, 0.3.6, "Apache 2.0"
|
||||||
timecop, 0.8.1, MIT
|
timecop, 0.9.1, MIT
|
||||||
|
ttfunk, 1.5.1, "Nonstandard, GPL-2.0, GPL-3.0"
|
||||||
tzinfo, 1.2.3, MIT
|
tzinfo, 1.2.3, MIT
|
||||||
tzinfo-data, 1.2017.2, MIT
|
tzinfo-data, 1.2017.2, MIT
|
||||||
windows_error, 0.1.2, BSD
|
windows_error, 0.1.2, BSD
|
||||||
|
xdr, 2.0.0, "Apache 2.0"
|
||||||
xmlrpc, 0.3.0, ruby
|
xmlrpc, 0.3.0, ruby
|
||||||
xpath, 2.1.0, MIT
|
|
||||||
yard, 0.9.9, MIT
|
yard, 0.9.9, MIT
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
Feature: Help command
|
|
||||||
|
|
||||||
Background:
|
|
||||||
Given I run `msfconsole --defer-module-loads -q -x help -x exit`
|
|
||||||
|
|
||||||
Scenario: The 'help' command's output
|
|
||||||
Then the output should contain:
|
|
||||||
"""
|
|
||||||
Core Commands
|
|
||||||
=============
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
? Help menu
|
|
||||||
banner Display an awesome metasploit banner
|
|
||||||
cd Change the current working directory
|
|
||||||
color Toggle color
|
|
||||||
connect Communicate with a host
|
|
||||||
exit Exit the console
|
|
||||||
get Gets the value of a context-specific variable
|
|
||||||
getg Gets the value of a global variable
|
|
||||||
grep Grep the output of another command
|
|
||||||
help Help menu
|
|
||||||
history Show command history
|
|
||||||
irb Drop into irb scripting mode
|
|
||||||
load Load a framework plugin
|
|
||||||
quit Exit the console
|
|
||||||
route Route traffic through a session
|
|
||||||
save Saves the active datastores
|
|
||||||
sessions Dump session listings and display information about sessions
|
|
||||||
set Sets a context-specific variable to a value
|
|
||||||
setg Sets a global variable to a value
|
|
||||||
sleep Do nothing for the specified number of seconds
|
|
||||||
spool Write console output into a file as well the screen
|
|
||||||
threads View and manipulate background threads
|
|
||||||
unload Unload a framework plugin
|
|
||||||
unset Unsets one or more context-specific variables
|
|
||||||
unsetg Unsets one or more global variables
|
|
||||||
version Show the framework and console library version numbers
|
|
||||||
|
|
||||||
|
|
||||||
Module Commands
|
|
||||||
===============
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
advanced Displays advanced options for one or more modules
|
|
||||||
back Move back from the current context
|
|
||||||
edit Edit the current module with the preferred editor
|
|
||||||
info Displays information about one or more modules
|
|
||||||
loadpath Searches for and loads modules from a path
|
|
||||||
options Displays global options or for one or more modules
|
|
||||||
popm Pops the latest module off the stack and makes it active
|
|
||||||
previous Sets the previously loaded module as the current module
|
|
||||||
pushm Pushes the active or list of modules onto the module stack
|
|
||||||
reload_all Reloads all modules from all defined module paths
|
|
||||||
search Searches module names and descriptions
|
|
||||||
show Displays modules of a given type, or all modules
|
|
||||||
use Selects a module by name
|
|
||||||
|
|
||||||
|
|
||||||
Job Commands
|
|
||||||
============
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
handler Start a payload handler as job
|
|
||||||
jobs Displays and manages jobs
|
|
||||||
kill Kill a job
|
|
||||||
rename_job Rename a job
|
|
||||||
|
|
||||||
|
|
||||||
Resource Script Commands
|
|
||||||
========================
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
makerc Save commands entered since start to a file
|
|
||||||
resource Run the commands stored in a file
|
|
||||||
|
|
||||||
|
|
||||||
Database Backend Commands
|
|
||||||
=========================
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
db_connect Connect to an existing database
|
|
||||||
db_disconnect Disconnect from the current database instance
|
|
||||||
db_export Export a file containing the contents of the database
|
|
||||||
db_import Import a scan result file (filetype will be auto-detected)
|
|
||||||
db_nmap Executes nmap and records the output automatically
|
|
||||||
db_rebuild_cache Rebuilds the database-stored module cache
|
|
||||||
db_status Show the current database status
|
|
||||||
hosts List all hosts in the database
|
|
||||||
loot List all loot in the database
|
|
||||||
notes List all notes in the database
|
|
||||||
services List all services in the database
|
|
||||||
vulns List all vulnerabilities in the database
|
|
||||||
workspace Switch between database workspaces
|
|
||||||
|
|
||||||
|
|
||||||
Credentials Backend Commands
|
|
||||||
============================
|
|
||||||
|
|
||||||
Command Description
|
|
||||||
------- -----------
|
|
||||||
creds List all credentials in the database
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
@targets @db
|
|
||||||
Feature: MS08-067 netapi
|
|
||||||
|
|
||||||
Background:
|
|
||||||
Given a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
|
|
||||||
Scenario: The MS08-067 should get a session with bind_tcp
|
|
||||||
Given I ready the windows targets
|
|
||||||
Given a file named "ms08-067-bind.rc" with:
|
|
||||||
"""
|
|
||||||
<ruby>
|
|
||||||
self.run_single("spool #{Rails.root.join('tmp', 'console.log')}")
|
|
||||||
hosts = YAML.load File.open Rails.root.join('features', 'support', 'targets.yml')
|
|
||||||
payload_name = 'windows/meterpreter/bind_tcp'
|
|
||||||
exploited_hosts = []
|
|
||||||
failed_hosts = []
|
|
||||||
|
|
||||||
hosts.each do |host|
|
|
||||||
print_status("Trying MS08-067 against #{host['ipAddress']}")
|
|
||||||
mod = framework.exploits.create('windows/smb/ms08_067_netapi')
|
|
||||||
mod.datastore['PAYLOAD'] = payload_name
|
|
||||||
mod.datastore['RHOST'] = host['ipAddress']
|
|
||||||
m = mod.exploit_simple(
|
|
||||||
'LocalInput' => nil,
|
|
||||||
'LocalOutput' => nil,
|
|
||||||
'Payload' => payload_name,
|
|
||||||
'RunAsJob' => false
|
|
||||||
)
|
|
||||||
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
if m
|
|
||||||
exploited_hosts << host['ipAddress']
|
|
||||||
else
|
|
||||||
failed_hosts << host['ipAddress']
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
print_status("Exploited hosts: #{exploited_hosts.inspect}")
|
|
||||||
print_status("Failed hosts: #{failed_hosts.inspect}")
|
|
||||||
self.run_single('sessions -K')
|
|
||||||
</ruby>
|
|
||||||
"""
|
|
||||||
When I successfully run `msfconsole --environment test -q -r ms08-067-bind.rc -x exit` for up to 100 seconds
|
|
||||||
Then the 'Mdm::Host' table contains the expected targets
|
|
||||||
|
|
|
@ -1,153 +0,0 @@
|
||||||
@boot
|
|
||||||
Feature: `msfconsole` `database.yml`
|
|
||||||
|
|
||||||
In order to connect to the database in `msfconsole`
|
|
||||||
As a user calling `msfconsole` from a terminal
|
|
||||||
I want to be able to set the path of the `database.yml` in one of 4 locations (in order of precedence):
|
|
||||||
|
|
||||||
1. An explicit argument to the `-y` flag to `msfconsole`
|
|
||||||
2. The MSF_DATABASE_CONFIG environment variable
|
|
||||||
3. The user's `~/.msf4/database.yml`
|
|
||||||
4. `config/database.yml` in the metasploit-framework checkout location.
|
|
||||||
|
|
||||||
Scenario: With all 4 locations, --yaml wins
|
|
||||||
Given a file named "command_line.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: command_line_metasploit_framework_test
|
|
||||||
username: command_line_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And a file named "msf_database_config.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: environment_metasploit_framework_test
|
|
||||||
username: environment_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And I set the environment variables to:
|
|
||||||
| variable | value |
|
|
||||||
| MSF_DATABASE_CONFIG | msf_database_config.yml |
|
|
||||||
And a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
And a directory named ".msf4"
|
|
||||||
And I cd to ".msf4"
|
|
||||||
And a file named "database.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: user_metasploit_framework_test
|
|
||||||
username: user_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And I cd to "../.."
|
|
||||||
And the project "database.yml" exists with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: project_metasploit_framework_test
|
|
||||||
username: project_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit --yaml command_line.yml`
|
|
||||||
Then the output should contain "command_line_metasploit_framework_test"
|
|
||||||
|
|
||||||
Scenario: Without --yaml, MSF_DATABASE_CONFIG wins
|
|
||||||
Given a file named "msf_database_config.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: environment_metasploit_framework_test
|
|
||||||
username: environment_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And I set the environment variables to:
|
|
||||||
| variable | value |
|
|
||||||
| MSF_DATABASE_CONFIG | msf_database_config.yml |
|
|
||||||
And a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
And a directory named ".msf4"
|
|
||||||
And I cd to ".msf4"
|
|
||||||
And a file named "database.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: user_metasploit_framework_test
|
|
||||||
username: user_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And I cd to "../.."
|
|
||||||
And the project "database.yml" exists with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: project_metasploit_framework_test
|
|
||||||
username: project_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
|
|
||||||
Then the output should contain "environment_metasploit_framework_test"
|
|
||||||
|
|
||||||
Scenario: Without --yaml or MSF_DATABASE_CONFIG, ~/.msf4/database.yml wins
|
|
||||||
Given I unset the environment variables:
|
|
||||||
| variable |
|
|
||||||
| MSF_DATABASE_CONFIG |
|
|
||||||
And a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
And a directory named ".msf4"
|
|
||||||
And I cd to ".msf4"
|
|
||||||
And a file named "database.yml" with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: user_metasploit_framework_test
|
|
||||||
username: user_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
And I cd to "../.."
|
|
||||||
And the project "database.yml" exists with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: project_metasploit_framework_test
|
|
||||||
username: project_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
|
|
||||||
Then the output should contain "user_metasploit_framework_test"
|
|
||||||
|
|
||||||
Scenario: Without --yaml, MSF_DATABASE_CONFIG or ~/.msf4/database.yml, project "database.yml" wins
|
|
||||||
Given I unset the environment variables:
|
|
||||||
| variable |
|
|
||||||
| MSF_DATABASE_CONFIG |
|
|
||||||
And a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
And I cd to "../.."
|
|
||||||
And the project "database.yml" exists with:
|
|
||||||
"""
|
|
||||||
test:
|
|
||||||
adapter: postgresql
|
|
||||||
database: project_metasploit_framework_test
|
|
||||||
username: project_metasploit_framework_test
|
|
||||||
"""
|
|
||||||
When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
|
|
||||||
Then the output should contain "project_metasploit_framework_test"
|
|
||||||
|
|
||||||
|
|
||||||
Scenario: Without --yaml, MSF_DATABASE_CONFIG, ~/.msf4/database.yml, or project "database.yml", no database connection
|
|
||||||
Given I unset the environment variables:
|
|
||||||
| variable |
|
|
||||||
| MSF_DATABASE_CONFIG |
|
|
||||||
And a directory named "home"
|
|
||||||
And I cd to "home"
|
|
||||||
And a mocked home directory
|
|
||||||
And I cd to "../.."
|
|
||||||
And the project "database.yml" does not exist
|
|
||||||
When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
|
|
||||||
Then the output should not contain "command_line_metasploit_framework_test"
|
|
||||||
And the output should not contain "environment_metasploit_framework_test"
|
|
||||||
And the output should not contain "user_metasploit_framework_test"
|
|
||||||
And the output should not contain "project_metasploit_framework_test"
|
|
||||||
And the output should contain "[*] postgresql selected, no connection"
|
|
||||||
|
|
||||||
Scenario: Starting `msfconsole` with a valid database.yml
|
|
||||||
When I run `msfconsole -q --defer-module-loads --execute-command db_status --execute-command exit`
|
|
||||||
Then the output should contain "[*] postgresql connected to metasploit_framework_test"
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
Given /^I unset the environment variables:$/ do |table|
|
|
||||||
table.hashes.each do |row|
|
|
||||||
variable = row['variable'].to_s.upcase
|
|
||||||
|
|
||||||
# @todo add extension to Announcer
|
|
||||||
announcer.instance_eval do
|
|
||||||
if @options[:env]
|
|
||||||
print "$ unset #{variable}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
current_value = ENV.delete(variable)
|
|
||||||
|
|
||||||
# if original_env already has the key, then the true original was already recorded from a previous unset or set,
|
|
||||||
# so don't record the current value as it will cause ENV not to be restored after the Scenario.
|
|
||||||
unless original_env.key? variable
|
|
||||||
original_env[variable] = current_value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,14 +0,0 @@
|
||||||
require 'metasploit/framework/database/cucumber'
|
|
||||||
|
|
||||||
Given /^the project "database.yml" does not exist$/ do
|
|
||||||
Metasploit::Framework::Database::Cucumber.backup_project_configurations
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^the project "database.yml" exists with:$/ do |file_content|
|
|
||||||
Metasploit::Framework::Database::Cucumber.backup_project_configurations
|
|
||||||
File.open(Metasploit::Framework::Database::Cucumber.project_configurations_path, 'wb') { |file| file.write(file_content) }
|
|
||||||
end
|
|
||||||
|
|
||||||
After do
|
|
||||||
Metasploit::Framework::Database::Cucumber.restore_project_configurations
|
|
||||||
end
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
case ARGV[0]
|
|
||||||
when 'size'
|
|
||||||
puts "30 134"
|
|
||||||
when '-a'
|
|
||||||
puts <<EOS
|
|
||||||
speed 38400 baud; 30 rows; 134 columns;
|
|
||||||
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
|
|
||||||
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
|
|
||||||
-extproc
|
|
||||||
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
|
|
||||||
-ignbrk brkint -inpck -ignpar -parmrk
|
|
||||||
oflags: opost onlcr -oxtabs -onocr -onlret
|
|
||||||
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
|
|
||||||
-dtrflow -mdmbuf
|
|
||||||
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
|
|
||||||
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
|
|
||||||
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
|
|
||||||
stop = ^S; susp = ^Z; time = 0; werase = ^W;
|
|
||||||
EOS
|
|
||||||
when '-g'
|
|
||||||
puts "gfmt1:cflag=4b00:iflag=6b02:lflag=200005cf:oflag=3:discard=f:dsusp=19:eof=4:eol=ff:eol2=ff:erase=7f:intr=3:kill=15:lnext=16:min=1:quit=1c:reprint=12:start=11:status=14:stop=13:susp=1a:time=0:werase=17:ispeed=38400:ospeed=38400"
|
|
||||||
end
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,34 +0,0 @@
|
||||||
# @note `require 'simplecov'` is not used here because all features currently use external `msfconsole` process, so only
|
|
||||||
# that child process needs to load 'simplecov'.
|
|
||||||
|
|
||||||
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
|
||||||
# It is recommended to regenerate this file in the future when you upgrade to a
|
|
||||||
# newer version of cucumber-rails. Consider adding your own code to a new file
|
|
||||||
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
|
||||||
# files.
|
|
||||||
|
|
||||||
require 'cucumber/rails'
|
|
||||||
require 'aruba/cucumber'
|
|
||||||
|
|
||||||
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
|
||||||
# order to ease the transition to Capybara we set the default here. If you'd
|
|
||||||
# prefer to use XPath just remove this line and adjust any selectors in your
|
|
||||||
# steps to use the XPath syntax.
|
|
||||||
Capybara.default_selector = :css
|
|
||||||
|
|
||||||
# By default, any exception happening in your Rails application will bubble up
|
|
||||||
# to Cucumber so that your scenario will fail. This is a different from how
|
|
||||||
# your application behaves in the production environment, where an error page will
|
|
||||||
# be rendered instead.
|
|
||||||
#
|
|
||||||
# Sometimes we want to override this default behaviour and allow Rails to rescue
|
|
||||||
# exceptions and display an error page (just like when the app is running in production).
|
|
||||||
# Typical scenarios where you want to do this is when you test your error pages.
|
|
||||||
# There are two ways to allow Rails to rescue exceptions:
|
|
||||||
#
|
|
||||||
# 1) Tag your scenario (or feature) with @allow-rescue
|
|
||||||
#
|
|
||||||
# 2) Set the value below to true. Beware that doing this globally is not
|
|
||||||
# recommended as it will mask a lot of errors for you!
|
|
||||||
#
|
|
||||||
ActionController::Base.allow_rescue = false
|
|
|
@ -1,39 +0,0 @@
|
||||||
Before do
|
|
||||||
set_env('MSF_DATBASE_CONFIG', Rails.configuration.paths['config/database'].existent.first)
|
|
||||||
set_env('RAILS_ENV', 'test')
|
|
||||||
@aruba_timeout_seconds = 8.minutes
|
|
||||||
end
|
|
||||||
|
|
||||||
Before('@db') do |scenario|
|
|
||||||
dbconfig = YAML::load(File.open(Metasploit::Framework::Database.configurations_pathname))
|
|
||||||
ActiveRecord::Base.establish_connection(dbconfig["test"])
|
|
||||||
end
|
|
||||||
|
|
||||||
# don't setup child processes to load simplecov_setup.rb if simplecov isn't installed
|
|
||||||
# unless Bundler.settings.without.include?(:coverage)
|
|
||||||
# Before do |scenario|
|
|
||||||
# command_name = case scenario
|
|
||||||
# when Cucumber::Ast::Scenario, Cucumber::Ast::ScenarioOutline
|
|
||||||
# "#{scenario.feature.title} #{scenario.name}"
|
|
||||||
# when Cucumber::Ast::OutlineTable::ExampleRow
|
|
||||||
# scenario_outline = scenario.scenario_outline
|
|
||||||
#
|
|
||||||
# "#{scenario_outline.feature.title} #{scenario_outline.name} #{scenario.name}"
|
|
||||||
# else
|
|
||||||
# raise TypeError, "Don't know how to extract command name from #{scenario.class}"
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# # Used in simplecov_setup so that each scenario has a different name and their coverage results are merged instead
|
|
||||||
# # of overwriting each other as 'Cucumber Features'
|
|
||||||
# set_env('SIMPLECOV_COMMAND_NAME', command_name)
|
|
||||||
#
|
|
||||||
# simplecov_setup_pathname = Pathname.new(__FILE__).expand_path.parent.join('simplecov_setup')
|
|
||||||
# # set environment variable so child processes will merge their coverage data with parent process's coverage data.
|
|
||||||
# set_env('RUBYOPT', "#{ENV['RUBYOPT']} -r#{simplecov_setup_pathname}")
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# Before('@db') do |scenario|
|
|
||||||
# dbconfig = YAML::load(File.open(Metasploit::Framework::Database.configurations_pathname))
|
|
||||||
# ActiveRecord::Base.establish_connection(dbconfig["test"])
|
|
||||||
# end
|
|
||||||
# end
|
|
|
@ -1,16 +0,0 @@
|
||||||
# @note this file is loaded in env.rb to setup simplecov using RUBYOPTs for child processes
|
|
||||||
|
|
||||||
simplecov_command_name = ENV['SIMPLECOV_COMMAND_NAME']
|
|
||||||
|
|
||||||
# will not be set if hook does not run because `bundle install --without coverage`
|
|
||||||
if simplecov_command_name
|
|
||||||
require 'simplecov'
|
|
||||||
|
|
||||||
require 'pathname'
|
|
||||||
|
|
||||||
root = Pathname(__FILE__).expand_path.parent.parent.parent
|
|
||||||
|
|
||||||
SimpleCov.command_name(simplecov_command_name)
|
|
||||||
SimpleCov.root(root)
|
|
||||||
load root.join('.simplecov')
|
|
||||||
end
|
|
|
@ -1,11 +0,0 @@
|
||||||
require 'pathname'
|
|
||||||
|
|
||||||
support = Pathname.new(__FILE__).realpath.parent
|
|
||||||
|
|
||||||
paths = [
|
|
||||||
# adds support/bin at the front of the path so that the support/bin/stty script will be used to fake system stty
|
|
||||||
# output.
|
|
||||||
support.join('bin').to_path,
|
|
||||||
ENV['PATH']
|
|
||||||
]
|
|
||||||
ENV['PATH'] = paths.join(File::PATH_SEPARATOR)
|
|
|
@ -1,7 +0,0 @@
|
||||||
windows:
|
|
||||||
-
|
|
||||||
hostname: wxpsp0
|
|
||||||
ip: 127.0.0.100
|
|
||||||
-
|
|
||||||
hostname: wxpsp2
|
|
||||||
ip: 127.0.0.101
|
|
|
@ -1,36 +0,0 @@
|
||||||
require 'metasploit/framework/database'
|
|
||||||
|
|
||||||
module Metasploit::Framework::Database::Cucumber
|
|
||||||
def self.project_configurations_path
|
|
||||||
Rails.root.join('config', 'database.yml').to_path
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.backup_project_configurations
|
|
||||||
if File.exist?(project_configurations_path)
|
|
||||||
# assume that the backup file is from a previously aborted run and it contains the real database.yml data, so
|
|
||||||
# just delete the fake database.yml and the After hook will restore the real database.yml from the backup location
|
|
||||||
if File.exist?(backup_project_configurations_path)
|
|
||||||
File.delete(project_configurations_path)
|
|
||||||
else
|
|
||||||
# project contains the real database.yml and there was no previous, aborted run.
|
|
||||||
File.rename(project_configurations_path, backup_project_configurations_path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.backup_project_configurations_path
|
|
||||||
"#{project_configurations_path}.cucumber.bak"
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.restore_project_configurations
|
|
||||||
if File.exist?(backup_project_configurations_path)
|
|
||||||
if File.exist?(project_configurations_path)
|
|
||||||
# Remove fake, leftover database.yml
|
|
||||||
File.delete(project_configurations_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
File.rename(backup_project_configurations_path, project_configurations_path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
|
|
||||||
# It is recommended to regenerate this file in the future when you upgrade to a
|
|
||||||
# newer version of cucumber-rails. Consider adding your own code to a new file
|
|
||||||
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
|
|
||||||
# files.
|
|
||||||
|
|
||||||
|
|
||||||
unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
|
|
||||||
|
|
||||||
vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
|
|
||||||
$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
|
|
||||||
|
|
||||||
begin
|
|
||||||
require 'cucumber/rake/task'
|
|
||||||
|
|
||||||
namespace :cucumber do
|
|
||||||
Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
|
|
||||||
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
|
|
||||||
t.fork = true # You may get faster startup if you set this to false
|
|
||||||
t.profile = 'default'
|
|
||||||
end
|
|
||||||
|
|
||||||
Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
|
|
||||||
t.binary = vendored_cucumber_bin
|
|
||||||
t.fork = true # You may get faster startup if you set this to false
|
|
||||||
t.profile = 'wip'
|
|
||||||
end
|
|
||||||
|
|
||||||
Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
|
|
||||||
t.binary = vendored_cucumber_bin
|
|
||||||
t.fork = true # You may get faster startup if you set this to false
|
|
||||||
t.profile = 'rerun'
|
|
||||||
end
|
|
||||||
|
|
||||||
desc 'Run all features'
|
|
||||||
task :all => [:ok, :wip]
|
|
||||||
|
|
||||||
task :statsetup do
|
|
||||||
require 'rails/code_statistics'
|
|
||||||
::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
|
|
||||||
::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
desc 'Alias for cucumber:ok'
|
|
||||||
task :cucumber => 'cucumber:ok'
|
|
||||||
|
|
||||||
task :default => :cucumber
|
|
||||||
|
|
||||||
task :features => :cucumber do
|
|
||||||
STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
|
|
||||||
end
|
|
||||||
|
|
||||||
# In case we don't have ActiveRecord, append a no-op task that we can depend upon.
|
|
||||||
task 'db:test:prepare' do
|
|
||||||
end
|
|
||||||
|
|
||||||
task 'db:config:restore' do
|
|
||||||
require 'metasploit/framework/database/cucumber'
|
|
||||||
Metasploit::Framework::Database::Cucumber.restore_project_configurations
|
|
||||||
end
|
|
||||||
|
|
||||||
# Restore the config/database.yml from config/database.cucumber.yml before attempting to copy development to test
|
|
||||||
# database in order to recover from interrupted cucumber runs
|
|
||||||
task 'environment' => 'db:config:restore'
|
|
||||||
|
|
||||||
task :stats => 'cucumber:statsetup'
|
|
||||||
rescue LoadError
|
|
||||||
desc 'cucumber rake task not available (cucumber not installed)'
|
|
||||||
task :cucumber do
|
|
||||||
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,30 +0,0 @@
|
||||||
unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
|
|
||||||
|
|
||||||
vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
|
|
||||||
$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
|
|
||||||
|
|
||||||
begin
|
|
||||||
require 'cucumber/rake/task'
|
|
||||||
|
|
||||||
namespace :cucumber do
|
|
||||||
Cucumber::Rake::Task.new({:boot => 'db:test:prepare'}, 'Run features that should pass') do |t|
|
|
||||||
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
|
|
||||||
t.fork = true # You may get faster startup if you set this to false
|
|
||||||
t.profile = 'boot'
|
|
||||||
end
|
|
||||||
Cucumber::Rake::Task.new({:exploit => 'db:test:prepare'}, 'Run features that should pass') do |t|
|
|
||||||
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
|
|
||||||
t.fork = true # You may get faster startup if you set this to false
|
|
||||||
t.profile = 'exploit'
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
rescue LoadError
|
|
||||||
desc 'cucumber rake task not available (cucumber not installed)'
|
|
||||||
task :cucumber do
|
|
||||||
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
|
|
||||||
if vendored_cucumber_bin
|
|
||||||
load File.expand_path(vendored_cucumber_bin)
|
|
||||||
else
|
|
||||||
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
|
||||||
require 'cucumber'
|
|
||||||
load Cucumber::BINARY
|
|
||||||
end
|
|
Loading…
Reference in New Issue