From dbef4ee816c8f49df850215c66b105e21e44b08f Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Wed, 12 Jul 2017 08:00:29 -0500 Subject: [PATCH] kill cucumber in framework --- .travis.yml | 2 - Gemfile | 8 - Gemfile.lock | 48 ------ LICENSE_GEMS | 79 +++++---- features/commands/help.feature | 111 ------------- .../exploit/smb/ms08_067_netapi.feature | 48 ------ features/msfconsole/database_yml.feature | 153 ------------------ .../step_definitions/environment_variables.rb | 20 --- features/step_definitions/project.rb | 14 -- features/support/bin/stty | 26 --- features/support/env.rb | 34 ---- features/support/hooks.rb | 39 ----- features/support/simplecov_setup.rb | 16 -- features/support/stty.rb | 11 -- features/support/targets.yml.example | 7 - lib/metasploit/framework/database/cucumber.rb | 36 ----- lib/tasks/cucumber.rake | 74 --------- lib/tasks/custom_cucumber.rake | 30 ---- script/cucumber | 10 -- 19 files changed, 37 insertions(+), 729 deletions(-) delete mode 100644 features/commands/help.feature delete mode 100644 features/modules/exploit/smb/ms08_067_netapi.feature delete mode 100644 features/msfconsole/database_yml.feature delete mode 100644 features/step_definitions/environment_variables.rb delete mode 100644 features/step_definitions/project.rb delete mode 100755 features/support/bin/stty delete mode 100644 features/support/env.rb delete mode 100644 features/support/hooks.rb delete mode 100644 features/support/simplecov_setup.rb delete mode 100644 features/support/stty.rb delete mode 100644 features/support/targets.yml.example delete mode 100644 lib/metasploit/framework/database/cucumber.rb delete mode 100644 lib/tasks/cucumber.rake delete mode 100644 lib/tasks/custom_cucumber.rake delete mode 100755 script/cucumber diff --git a/.travis.yml b/.travis.yml index b6894b2597d0..28f0b510f754 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,8 +16,6 @@ rvm: - '2.4.1' 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"' diff --git a/Gemfile b/Gemfile index 09fe9ccc852e..4dbdbacb6dfe 100755 --- a/Gemfile +++ b/Gemfile @@ -37,14 +37,6 @@ group :development, :test do end 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 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 diff --git a/Gemfile.lock b/Gemfile.lock index 7ae575d04900..6da285dbd249 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -102,46 +102,12 @@ GEM arel (6.0.4) arel-helpers (2.4.0) 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) bcrypt (3.1.11) bindata (2.4.0) bit-struct (0.16) 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) - 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) dnsruby (1.60.1) docile (1.1.5) @@ -153,10 +119,8 @@ GEM railties (>= 3.0.0) faraday (0.12.1) multipart-post (>= 1.2, < 3) - ffi (1.9.18) filesize (0.1.1) fivemat (1.3.5) - gherkin (4.1.3) google-protobuf (3.3.0) googleauth (0.5.1) faraday (~> 0.9) @@ -216,14 +180,10 @@ GEM recog (~> 2.0) metasploit_payloads-mettle (0.1.10) 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) minitest (5.10.2) msgpack (1.1.0) multi_json (1.12.1) - multi_test (0.1.2) multipart-post (2.0.0) nessus_rest (0.1.6) net-ssh (4.1.0) @@ -358,8 +318,6 @@ GEM sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) - shoulda-matchers (3.1.1) - activesupport (>= 4.0.0) signet (0.7.3) addressable (~> 2.3) faraday (~> 0.9) @@ -386,16 +344,12 @@ GEM activemodel (>= 4.2.7) activesupport (>= 4.2.7) xmlrpc (0.3.0) - xpath (2.0.0) - nokogiri (~> 1.3) yard (0.9.9) PLATFORMS ruby DEPENDENCIES - aruba - cucumber-rails factory_girl_rails fivemat metasploit-aggregator @@ -406,10 +360,8 @@ DEPENDENCIES redcarpet rspec-rails rspec-rerun - shoulda-matchers simplecov timecop - xpath (= 2.0) yard BUNDLED WITH diff --git a/LICENSE_GEMS b/LICENSE_GEMS index a4e325a2cfe4..2fe90885c515 100644 --- a/LICENSE_GEMS +++ b/LICENSE_GEMS @@ -1,71 +1,62 @@ This file is auto-generated by tools/dev/update_gem_licenses.sh -actionpack, 4.2.8, MIT -actionview, 4.2.8, MIT -activemodel, 4.2.8, MIT -activerecord, 4.2.8, MIT -activesupport, 4.2.8, MIT +Ascii85, 1.0.2, MIT +actionpack, 4.2.9, MIT +actionview, 4.2.9, MIT +activemodel, 4.2.9, MIT +activerecord, 4.2.9, MIT +activesupport, 4.2.9, MIT addressable, 2.5.1, "Apache 2.0" +afm, 0.2.2, MIT arel, 6.0.4, MIT arel-helpers, 2.4.0, unknown -aruba, 0.14.2, MIT backports, 3.8.0, MIT bcrypt, 3.1.11, MIT bindata, 2.4.0, ruby bit-struct, 0.16, ruby builder, 3.2.3, MIT -bundler, 1.15.0, MIT -capybara, 2.14.0, MIT -childprocess, 0.5.9, MIT +bundler, 1.15.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+" +dnsruby, 1.60.1, "Apache 2.0" docile, 1.1.5, MIT erubis, 2.7.0, MIT factory_girl, 4.8.0, MIT factory_girl_rails, 4.8.0, MIT faraday, 0.12.1, MIT -ffi, 1.9.18, "New BSD" filesize, 0.1.1, MIT -fivemat, 1.3.3, MIT -gherkin, 4.1.3, MIT +fivemat, 1.3.5, MIT google-protobuf, 3.3.0, "New BSD" googleauth, 0.5.1, "Apache 2.0" -grpc, 1.3.4, "New BSD" -i18n, 0.8.1, MIT +grpc, 1.4.1, "New BSD" +hashery, 2.1.2, "Simplified BSD" +i18n, 0.8.6, MIT jsobfu, 0.4.2, "New BSD" json, 2.1.0, ruby jwt, 1.5.6, MIT little-plugger, 1.1.4, MIT logging, 2.2.2, MIT loofah, 2.0.3, MIT -memoist, 0.15.0, MIT +memoist, 0.16.0, MIT metasm, 1.0.3, LGPL metasploit-aggregator, 0.2.1, "New BSD" -metasploit-concern, 2.0.4, "New BSD" -metasploit-credential, 2.0.9, "New BSD" -metasploit-framework, 4.14.23, "New BSD" +metasploit-concern, 2.0.5, "New BSD" +metasploit-credential, 2.0.10, "New BSD" +metasploit-framework, 4.15.0, "New BSD" metasploit-model, 2.0.4, "New BSD" -metasploit-payloads, 1.2.29, "3-clause (or ""modified"") BSD" -metasploit_data_models, 2.0.14, "New BSD" -metasploit_payloads-mettle, 0.1.9, "3-clause (or ""modified"") BSD" +metasploit-payloads, 1.2.37, "3-clause (or ""modified"") BSD" +metasploit_data_models, 2.0.15, "New BSD" +metasploit_payloads-mettle, 0.1.10, "3-clause (or ""modified"") BSD" method_source, 0.8.2, MIT -mime-types, 3.1, MIT -mime-types-data, 3.2016.0521, MIT -mini_portile2, 2.1.0, MIT +mini_portile2, 2.2.0, MIT minitest, 5.10.2, MIT msgpack, 1.1.0, "Apache 2.0" multi_json, 1.12.1, MIT -multi_test, 0.1.2, MIT multipart-post, 2.0.0, MIT nessus_rest, 0.1.6, MIT net-ssh, 4.1.0, MIT network_interface, 0.0.1, MIT -nexpose, 6.0.0, BSD -nokogiri, 1.7.2, MIT +nexpose, 6.1.0, BSD +nokogiri, 1.8.0, MIT octokit, 4.7.0, MIT openssl-ccm, 1.2.1, MIT openvas-omp, 0.0.4, MIT @@ -73,6 +64,7 @@ os, 0.9.6, MIT packetfu, 1.1.13, BSD patch_finder, 1.0.2, "New BSD" pcaprub, 0.12.4, LGPL-2.1 +pdf-reader, 2.0.0, MIT pg, 0.20.0, "New BSD" pg_array_parser, 0.0.9, unknown postgres_ext, 3.0.0, MIT @@ -83,14 +75,14 @@ rack-test, 0.6.3, MIT rails-deprecated_sanitizer, 1.0.3, MIT rails-dom-testing, 1.0.8, MIT rails-html-sanitizer, 1.0.3, MIT -railties, 4.2.8, MIT +railties, 4.2.9, MIT rake, 12.0.0, MIT rb-readline, 0.5.4, BSD -recog, 2.1.8, unknown +recog, 2.1.11, unknown redcarpet, 3.4.0, MIT -rex-arch, 0.1.4, "New BSD" -rex-bin_tools, 0.1.3, "New BSD" -rex-core, 0.1.10, "New BSD" +rex-arch, 0.1.9, "New BSD" +rex-bin_tools, 0.1.4, "New BSD" +rex-core, 0.1.11, "New BSD" rex-encoder, 0.1.4, "New BSD" rex-exploitation, 0.1.14, "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-registry, 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-struct2, 0.1.2, "New BSD" rex-text, 0.2.15, "New BSD" rex-zip, 0.1.3, "New BSD" rkelly-remix, 0.0.7, MIT robots, 0.10.1, MIT +rspec, 3.6.0, MIT rspec-core, 3.6.0, MIT rspec-expectations, 3.6.0, MIT rspec-mocks, 3.6.0, MIT rspec-rails, 3.6.0, MIT +rspec-rerun, 1.1.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 rubyzip, 1.2.1, "Simplified BSD" sawyer, 0.8.1, MIT -shoulda-matchers, 3.1.1, MIT signet, 0.7.3, "Apache 2.0" simplecov, 0.14.1, MIT simplecov-html, 0.10.1, MIT @@ -126,10 +120,11 @@ sqlite3, 1.3.13, "New BSD" sshkey, 1.9.0, MIT thor, 0.19.4, MIT 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-data, 1.2017.2, MIT windows_error, 0.1.2, BSD +xdr, 2.0.0, "Apache 2.0" xmlrpc, 0.3.0, ruby -xpath, 2.1.0, MIT yard, 0.9.9, MIT diff --git a/features/commands/help.feature b/features/commands/help.feature deleted file mode 100644 index f73763436b91..000000000000 --- a/features/commands/help.feature +++ /dev/null @@ -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 - - - """ - diff --git a/features/modules/exploit/smb/ms08_067_netapi.feature b/features/modules/exploit/smb/ms08_067_netapi.feature deleted file mode 100644 index 940ff2a4e6ae..000000000000 --- a/features/modules/exploit/smb/ms08_067_netapi.feature +++ /dev/null @@ -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: - """ - - 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') - - """ - 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 - \ No newline at end of file diff --git a/features/msfconsole/database_yml.feature b/features/msfconsole/database_yml.feature deleted file mode 100644 index f2b40c213baf..000000000000 --- a/features/msfconsole/database_yml.feature +++ /dev/null @@ -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" - diff --git a/features/step_definitions/environment_variables.rb b/features/step_definitions/environment_variables.rb deleted file mode 100644 index c554ca02642b..000000000000 --- a/features/step_definitions/environment_variables.rb +++ /dev/null @@ -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 \ No newline at end of file diff --git a/features/step_definitions/project.rb b/features/step_definitions/project.rb deleted file mode 100644 index 1c24f07254d5..000000000000 --- a/features/step_definitions/project.rb +++ /dev/null @@ -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 \ No newline at end of file diff --git a/features/support/bin/stty b/features/support/bin/stty deleted file mode 100755 index 8ff68bb1c571..000000000000 --- a/features/support/bin/stty +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -case ARGV[0] - when 'size' - puts "30 134" - when '-a' - puts <; - eol2 = ; 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 diff --git a/features/support/env.rb b/features/support/env.rb deleted file mode 100644 index 6d186f405ff6..000000000000 --- a/features/support/env.rb +++ /dev/null @@ -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 diff --git a/features/support/hooks.rb b/features/support/hooks.rb deleted file mode 100644 index 16c5973ef2cb..000000000000 --- a/features/support/hooks.rb +++ /dev/null @@ -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 diff --git a/features/support/simplecov_setup.rb b/features/support/simplecov_setup.rb deleted file mode 100644 index 78cc264fc334..000000000000 --- a/features/support/simplecov_setup.rb +++ /dev/null @@ -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 diff --git a/features/support/stty.rb b/features/support/stty.rb deleted file mode 100644 index a8afb704c46f..000000000000 --- a/features/support/stty.rb +++ /dev/null @@ -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) diff --git a/features/support/targets.yml.example b/features/support/targets.yml.example deleted file mode 100644 index 0752a6cc7ea7..000000000000 --- a/features/support/targets.yml.example +++ /dev/null @@ -1,7 +0,0 @@ -windows: - - - hostname: wxpsp0 - ip: 127.0.0.100 - - - hostname: wxpsp2 - ip: 127.0.0.101 diff --git a/lib/metasploit/framework/database/cucumber.rb b/lib/metasploit/framework/database/cucumber.rb deleted file mode 100644 index 562504c88b92..000000000000 --- a/lib/metasploit/framework/database/cucumber.rb +++ /dev/null @@ -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 - diff --git a/lib/tasks/cucumber.rake b/lib/tasks/cucumber.rake deleted file mode 100644 index ff424fa7b080..000000000000 --- a/lib/tasks/cucumber.rake +++ /dev/null @@ -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 diff --git a/lib/tasks/custom_cucumber.rake b/lib/tasks/custom_cucumber.rake deleted file mode 100644 index 9b8c3fb8ae7d..000000000000 --- a/lib/tasks/custom_cucumber.rake +++ /dev/null @@ -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 \ No newline at end of file diff --git a/script/cucumber b/script/cucumber deleted file mode 100755 index 7fa5c9208675..000000000000 --- a/script/cucumber +++ /dev/null @@ -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