metasploit_data_models 1.0.0.pre.rails.pre.4.0b → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -2
- data/.travis.yml +6 -3
- data/CHANGELOG.md +6 -0
- data/CONTRIBUTING.md +10 -52
- data/Gemfile +4 -6
- data/RELEASING.md +88 -0
- data/Rakefile +23 -0
- data/UPGRADING.md +1 -0
- data/app/models/mdm/api_key.rb +41 -1
- data/app/models/mdm/client.rb +41 -1
- data/app/models/mdm/cred.rb +116 -28
- data/app/models/mdm/event.rb +47 -0
- data/app/models/mdm/exploit_attempt.rb +65 -16
- data/app/models/mdm/exploited_host.rb +27 -0
- data/app/models/mdm/host_detail.rb +44 -0
- data/app/models/mdm/host_tag.rb +6 -8
- data/app/models/mdm/listener.rb +52 -0
- data/app/models/mdm/macro.rb +42 -0
- data/app/models/mdm/mod_ref.rb +21 -1
- data/app/models/mdm/module/action.rb +15 -0
- data/app/models/mdm/module/arch.rb +10 -0
- data/app/models/mdm/module/author.rb +17 -1
- data/app/models/mdm/module/mixin.rb +13 -0
- data/app/models/mdm/module/platform.rb +11 -0
- data/app/models/mdm/module/target.rb +18 -0
- data/app/models/mdm/nexpose_console.rb +82 -4
- data/app/models/mdm/profile.rb +36 -0
- data/app/models/mdm/route.rb +16 -4
- data/app/models/mdm/session_event.rb +32 -0
- data/app/models/mdm/tag.rb +48 -9
- data/app/models/mdm/task.rb +85 -46
- data/app/models/mdm/task_cred.rb +29 -0
- data/app/models/mdm/task_host.rb +25 -0
- data/app/models/mdm/task_service.rb +25 -0
- data/app/models/mdm/task_session.rb +25 -0
- data/app/models/mdm/user.rb +192 -6
- data/app/models/mdm/vuln_attempt.rb +37 -12
- data/app/models/mdm/vuln_detail.rb +138 -5
- data/app/models/mdm/vuln_ref.rb +3 -0
- data/app/models/mdm/web_form.rb +34 -0
- data/app/models/mdm/web_page.rb +69 -0
- data/app/models/mdm/web_site.rb +50 -0
- data/app/models/mdm/wmap_request.rb +85 -0
- data/app/models/mdm/wmap_target.rb +40 -0
- data/app/models/mdm/workspace.rb +160 -17
- data/app/models/metasploit_data_models/automatic_exploitation/match.rb +13 -23
- data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +25 -4
- data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +15 -4
- data/app/models/metasploit_data_models/automatic_exploitation/run.rb +7 -3
- data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
- data/app/models/metasploit_data_models/module_run.rb +1 -1
- data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
- data/app/validators/ip_format_validator.rb +4 -0
- data/app/validators/parameters_validator.rb +12 -0
- data/app/validators/password_is_strong_validator.rb +10 -1
- data/lib/mdm/host/operating_system_normalization.rb +7 -10
- data/lib/metasploit_data_models.rb +4 -0
- data/lib/metasploit_data_models/automatic_exploitation.rb +25 -0
- data/lib/metasploit_data_models/engine.rb +2 -0
- data/lib/metasploit_data_models/serialized_prefs.rb +6 -0
- data/lib/metasploit_data_models/version.rb +30 -7
- data/metasploit_data_models.gemspec +9 -2
- data/spec/app/models/mdm/api_key_spec.rb +1 -3
- data/spec/app/models/mdm/client_spec.rb +9 -11
- data/spec/app/models/mdm/cred_spec.rb +42 -54
- data/spec/app/models/mdm/event_spec.rb +22 -24
- data/spec/app/models/mdm/exploit_attempt_spec.rb +19 -21
- data/spec/app/models/mdm/exploited_host_spec.rb +11 -13
- data/spec/app/models/mdm/host_detail_spec.rb +15 -17
- data/spec/app/models/mdm/host_spec.rb +262 -260
- data/spec/app/models/mdm/host_tag_spec.rb +6 -8
- data/spec/app/models/mdm/listener_spec.rb +30 -32
- data/spec/app/models/mdm/loot_spec.rb +21 -23
- data/spec/app/models/mdm/macro_spec.rb +1 -3
- data/spec/app/models/mdm/mod_ref_spec.rb +1 -3
- data/spec/app/models/mdm/module/action_spec.rb +8 -10
- data/spec/app/models/mdm/module/arch_spec.rb +8 -10
- data/spec/app/models/mdm/module/author_spec.rb +19 -14
- data/spec/app/models/mdm/module/detail_spec.rb +184 -75
- data/spec/app/models/mdm/module/mixin_spec.rb +8 -10
- data/spec/app/models/mdm/module/platform_spec.rb +8 -10
- data/spec/app/models/mdm/module/ref_spec.rb +8 -10
- data/spec/app/models/mdm/module/target_spec.rb +10 -12
- data/spec/app/models/mdm/nexpose_console_spec.rb +35 -37
- data/spec/app/models/mdm/note_spec.rb +23 -25
- data/spec/app/models/mdm/profile_spec.rb +1 -3
- data/spec/app/models/mdm/ref_spec.rb +9 -12
- data/spec/app/models/mdm/route_spec.rb +6 -8
- data/spec/app/models/mdm/service_spec.rb +38 -40
- data/spec/app/models/mdm/session_event_spec.rb +10 -12
- data/spec/app/models/mdm/session_spec.rb +13 -15
- data/spec/app/models/mdm/tag_spec.rb +29 -30
- data/spec/app/models/mdm/task_cred_spec.rb +9 -11
- data/spec/app/models/mdm/task_host_spec.rb +9 -11
- data/spec/app/models/mdm/task_service_spec.rb +9 -11
- data/spec/app/models/mdm/task_session_spec.rb +7 -9
- data/spec/app/models/mdm/task_spec.rb +27 -29
- data/spec/app/models/mdm/user_spec.rb +17 -19
- data/spec/app/models/mdm/vuln_attempt_spec.rb +14 -16
- data/spec/app/models/mdm/vuln_detail_spec.rb +26 -28
- data/spec/app/models/mdm/vuln_ref_spec.rb +8 -10
- data/spec/app/models/mdm/vuln_spec.rb +24 -26
- data/spec/app/models/mdm/web_form_spec.rb +11 -13
- data/spec/app/models/mdm/web_page_spec.rb +19 -21
- data/spec/app/models/mdm/web_site_spec.rb +21 -23
- data/spec/app/models/mdm/web_vuln_spec.rb +63 -65
- data/spec/app/models/mdm/wmap_request_spec.rb +1 -3
- data/spec/app/models/mdm/wmap_target_spec.rb +1 -3
- data/spec/app/models/mdm/workspace_spec.rb +97 -100
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +3 -5
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +13 -15
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +1 -3
- data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +1 -3
- data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +10 -12
- data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +4 -6
- data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +21 -23
- data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +9 -11
- data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +21 -23
- data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +4 -6
- data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +22 -15
- data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +4 -6
- data/spec/app/models/metasploit_data_models/module_run_spec.rb +1 -3
- data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +18 -20
- data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +6 -8
- data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +8 -10
- data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +8 -10
- data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +2 -4
- data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +8 -10
- data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +6 -8
- data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +9 -11
- data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +5 -7
- data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +17 -19
- data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +5 -7
- data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +61 -23
- data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +8 -10
- data/spec/app/validators/parameters_validator_spec.rb +29 -29
- data/spec/app/validators/password_is_strong_validator_spec.rb +54 -46
- data/spec/lib/base64_serializer_spec.rb +19 -21
- data/spec/lib/ipaddr_spec.rb +1 -3
- data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +18 -12
- data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +4 -6
- data/spec/lib/metasploit_data_models/match/child_spec.rb +2 -4
- data/spec/lib/metasploit_data_models/match/parent_spec.rb +4 -6
- data/spec/lib/metasploit_data_models/version_spec.rb +3 -139
- data/spec/lib/metasploit_data_models_spec.rb +4 -0
- data/spec/spec_helper.rb +86 -12
- data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
- data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
- data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
- data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
- data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
- data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
- data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +7 -6
- metadata +74 -14
- data/app/models/metasploit_data_models/automatic_exploitation.rb +0 -16
- data/lib/tasks/yard.rake +0 -33
data/spec/spec_helper.rb
CHANGED
@@ -22,7 +22,6 @@ end
|
|
22
22
|
|
23
23
|
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
24
24
|
require 'rspec/rails'
|
25
|
-
require 'rspec/autorun'
|
26
25
|
|
27
26
|
# full backtrace in logs so its easier to trace errors
|
28
27
|
Rails.backtrace_cleaner.remove_silencers!
|
@@ -30,27 +29,102 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
30
29
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
31
30
|
# in spec/support/ and its subdirectories.
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
# Use find_all_by_name instead of find_by_name as find_all_by_name will return pre-release versions
|
33
|
+
gem_specification = Gem::Specification.find_all_by_name('metasploit-version').first
|
34
|
+
|
35
|
+
Dir[File.join(gem_specification.gem_dir, 'spec', 'support', '**', '*.rb')].each do |f|
|
36
|
+
require f
|
37
|
+
end
|
38
|
+
|
39
|
+
roots = [
|
40
|
+
gem_specification.gem_dir,
|
41
|
+
Metasploit::Concern::Engine.root,
|
42
|
+
Metasploit::Model::Engine.root,
|
43
|
+
MetasploitDataModels::Engine.root
|
37
44
|
]
|
38
45
|
|
39
|
-
|
40
|
-
support_glob =
|
46
|
+
roots.each do |root|
|
47
|
+
support_glob = File.join(root, 'spec', 'support', '**', '*.rb')
|
41
48
|
|
42
49
|
Dir.glob(support_glob) do |path|
|
43
50
|
require path
|
44
51
|
end
|
45
52
|
end
|
46
53
|
|
54
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
47
55
|
RSpec.configure do |config|
|
48
|
-
config.
|
49
|
-
|
50
|
-
|
56
|
+
# rspec-expectations config goes here. You can use an alternate
|
57
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
58
|
+
# assertions if you prefer.
|
59
|
+
config.expect_with :rspec do |expectations|
|
60
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
61
|
+
# and `failure_message` of custom matchers include text for helper methods
|
62
|
+
# defined using `chain`, e.g.:
|
63
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
64
|
+
# # => "be bigger than 2 and smaller than 4"
|
65
|
+
# ...rather than:
|
66
|
+
# # => "be bigger than 2"
|
67
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
51
68
|
end
|
52
69
|
|
53
|
-
config.
|
54
|
-
|
70
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
71
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
72
|
+
config.mock_with :rspec do |mocks|
|
73
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
74
|
+
# a real object. This is generally recommended, and will default to
|
75
|
+
# `true` in RSpec 4.
|
76
|
+
mocks.verify_partial_doubles = true
|
77
|
+
end
|
78
|
+
|
79
|
+
# These two settings work together to allow you to limit a spec run
|
80
|
+
# to individual examples or groups you care about by tagging them with
|
81
|
+
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
82
|
+
# get run.
|
83
|
+
config.filter_run :focus
|
84
|
+
config.run_all_when_everything_filtered = true
|
85
|
+
|
86
|
+
# Limits the available syntax to the non-monkey patched syntax that is
|
87
|
+
# recommended. For more details, see:
|
88
|
+
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
89
|
+
# - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
90
|
+
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
91
|
+
config.disable_monkey_patching!
|
92
|
+
|
93
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
94
|
+
# be too noisy due to issues in dependencies.
|
95
|
+
config.warnings = true
|
96
|
+
|
97
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
98
|
+
# file, and it's useful to allow more verbose output when running an
|
99
|
+
# individual spec file.
|
100
|
+
if config.files_to_run.one?
|
101
|
+
# Use the documentation formatter for detailed output,
|
102
|
+
# unless a formatter has already been configured
|
103
|
+
# (e.g. via a command-line flag).
|
104
|
+
config.default_formatter = 'doc'
|
105
|
+
end
|
106
|
+
|
107
|
+
# Print the 10 slowest examples and example groups at the
|
108
|
+
# end of the spec run, to help surface which specs are running
|
109
|
+
# particularly slow.
|
110
|
+
config.profile_examples = 10
|
111
|
+
|
112
|
+
# Run specs in random order to surface order dependencies. If you find an
|
113
|
+
# order dependency and want to debug it, you can fix the order by providing
|
114
|
+
# the seed, which is printed after each run.
|
115
|
+
# --seed 1234
|
55
116
|
config.order = :random
|
117
|
+
|
118
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
119
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
120
|
+
# test failures related to randomization by passing the same `--seed` value
|
121
|
+
# as the one that triggered the failure.
|
122
|
+
Kernel.srand config.seed
|
123
|
+
|
124
|
+
config.use_transactional_fixtures = true
|
125
|
+
|
126
|
+
config.before(:each) do
|
127
|
+
# Rex is only available when testing with metasploit-framework or pro, so stub out the methods that require it
|
128
|
+
allow_any_instance_of(Mdm::Workspace).to receive(:valid_ip_or_range?).and_return(true)
|
129
|
+
end
|
56
130
|
end
|
@@ -6,7 +6,7 @@ shared_examples_for 'Mdm::Module::Detail does not support stance with mtype' do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it 'should return false for supports_stance?' do
|
9
|
-
detail.supports_stance
|
9
|
+
expect(detail.supports_stance?).to eq(false)
|
10
10
|
end
|
11
11
|
|
12
12
|
context 'with nil stance' do
|
@@ -14,7 +14,7 @@ shared_examples_for 'Mdm::Module::Detail does not support stance with mtype' do
|
|
14
14
|
nil
|
15
15
|
end
|
16
16
|
|
17
|
-
it {
|
17
|
+
it { is_expected.to be_valid }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -6,7 +6,7 @@ shared_examples_for 'Mdm::Module::Detail supports stance with mtype' do |mtype|
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it 'should return true for supports_stance?' do
|
9
|
-
detail.supports_stance
|
9
|
+
expect(detail.supports_stance?).to eq(true)
|
10
10
|
end
|
11
11
|
|
12
12
|
context 'with nil stance' do
|
@@ -14,7 +14,7 @@ shared_examples_for 'Mdm::Module::Detail supports stance with mtype' do |mtype|
|
|
14
14
|
nil
|
15
15
|
end
|
16
16
|
|
17
|
-
it {
|
17
|
+
it { is_expected.to be_invalid }
|
18
18
|
end
|
19
19
|
|
20
20
|
context "with 'aggresive' stance" do
|
@@ -22,7 +22,7 @@ shared_examples_for 'Mdm::Module::Detail supports stance with mtype' do |mtype|
|
|
22
22
|
'aggressive'
|
23
23
|
end
|
24
24
|
|
25
|
-
it {
|
25
|
+
it { is_expected.to be_valid }
|
26
26
|
end
|
27
27
|
|
28
28
|
context "with 'passive' stance" do
|
@@ -30,7 +30,7 @@ shared_examples_for 'Mdm::Module::Detail supports stance with mtype' do |mtype|
|
|
30
30
|
'passive'
|
31
31
|
end
|
32
32
|
|
33
|
-
it {
|
33
|
+
it { is_expected.to be_valid }
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb
CHANGED
@@ -11,7 +11,7 @@ shared_examples_for 'MetasploitDataModels::Search::Operation::IPAddress::*.match
|
|
11
11
|
|
12
12
|
shared_examples_for 'match' do |boolean|
|
13
13
|
if boolean
|
14
|
-
it {
|
14
|
+
it { is_expected.to be_a described_class }
|
15
15
|
|
16
16
|
it 'does not set #operator' do
|
17
17
|
expect(match.operator).to be_nil
|
@@ -21,7 +21,7 @@ shared_examples_for 'MetasploitDataModels::Search::Operation::IPAddress::*.match
|
|
21
21
|
expect(match.value).not_to be_nil
|
22
22
|
end
|
23
23
|
else
|
24
|
-
it {
|
24
|
+
it { is_expected.to be_nil }
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -13,10 +13,10 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Includes#visit with
|
|
13
13
|
|
14
14
|
it 'should visit each child' do
|
15
15
|
# needed for call to visit subject
|
16
|
-
visitor.
|
16
|
+
expect(visitor).to receive(:visit).with(node).and_call_original
|
17
17
|
|
18
18
|
children.each do |child|
|
19
|
-
visitor.
|
19
|
+
expect(visitor).to receive(:visit).with(child).and_return([])
|
20
20
|
end
|
21
21
|
|
22
22
|
visit
|
@@ -25,14 +25,14 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Includes#visit with
|
|
25
25
|
it 'should return Array of all child visits' do
|
26
26
|
child_visits = []
|
27
27
|
|
28
|
-
visitor.
|
28
|
+
expect(visitor).to receive(:visit).with(node).and_call_original
|
29
29
|
|
30
30
|
children.each_with_index do |child, i|
|
31
31
|
child_visit = ["Visited Child #{i}"]
|
32
|
-
visitor.
|
32
|
+
allow(visitor).to receive(:visit).with(child).and_return(child_visit)
|
33
33
|
child_visits.concat(child_visit)
|
34
34
|
end
|
35
35
|
|
36
|
-
visit.
|
36
|
+
expect(visit).to eq(child_visits)
|
37
37
|
end
|
38
38
|
end
|
@@ -10,17 +10,17 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Includes#visit with
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'should visit operator' do
|
13
|
-
visitor.
|
14
|
-
visitor.
|
13
|
+
expect(visitor).to receive(:visit).with(node).and_call_original
|
14
|
+
expect(visitor).to receive(:visit).with(operator).and_return([])
|
15
15
|
|
16
16
|
visit
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should return operator visit' do
|
20
20
|
operator_visit = ["Visited Operator"]
|
21
|
-
visitor.
|
22
|
-
visitor.
|
21
|
+
expect(visitor).to receive(:visit).with(node).and_call_original
|
22
|
+
allow(visitor).to receive(:visit).with(operator).and_return(operator_visit)
|
23
23
|
|
24
|
-
visit.
|
24
|
+
expect(visit).to eq(operator_visit)
|
25
25
|
end
|
26
26
|
end
|
data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb
CHANGED
@@ -18,16 +18,16 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with equ
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'should visit operation.operator with attribute_visitor' do
|
21
|
-
visitor.attribute_visitor.
|
21
|
+
expect(visitor.attribute_visitor).to receive(:visit).with(operator).and_call_original
|
22
22
|
|
23
23
|
visit
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should call eq on Arel::Attributes::Attribute from attribute_visitor' do
|
27
27
|
attribute = double('Visited Operator')
|
28
|
-
visitor.attribute_visitor.
|
28
|
+
allow(visitor.attribute_visitor).to receive(:visit).with(operator).and_return(attribute)
|
29
29
|
|
30
|
-
attribute.
|
30
|
+
expect(attribute).to receive(:eq).with(value)
|
31
31
|
|
32
32
|
visit
|
33
33
|
end
|
@@ -16,22 +16,22 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with Met
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should visit each child' do
|
19
|
-
visitor.
|
19
|
+
expect(visitor).to receive(:visit).with(node).and_call_original
|
20
20
|
|
21
21
|
children.each do |child|
|
22
|
-
visitor.
|
22
|
+
expect(visitor).to receive(:visit).with(child).and_return(Arel::Nodes::Equality.new(1, 1))
|
23
23
|
end
|
24
24
|
|
25
25
|
visit
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should combine children AREL with #{arel_class}" do
|
29
|
-
visitor.
|
29
|
+
allow(visitor).to receive(:visit).with(node).and_call_original
|
30
30
|
child_visits = []
|
31
31
|
|
32
32
|
children.each_with_index do |child, i|
|
33
33
|
child_visit = Arel::Nodes::Equality.new(i, i)
|
34
|
-
visitor.
|
34
|
+
allow(visitor).to receive(:visit).with(child).and_return(child_visit)
|
35
35
|
child_visits << child_visit
|
36
36
|
end
|
37
37
|
|
@@ -43,8 +43,9 @@ shared_examples_for 'MetasploitDataModels::Search::Visitor::Where#visit with Met
|
|
43
43
|
arel_pair = root
|
44
44
|
end
|
45
45
|
|
46
|
-
arel_pair.
|
46
|
+
expect(arel_pair).to be_a arel_class
|
47
47
|
|
48
|
-
expect(
|
48
|
+
expect(arel_pair.left).to eq(child_visits[0])
|
49
|
+
expect(arel_pair.right).to eq(child_visits[1])
|
49
50
|
end
|
50
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metasploit_data_models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Huckins
|
@@ -11,8 +11,64 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-
|
14
|
+
date: 2015-05-11 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: metasploit-version
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.1.3
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.1.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: metasploit-yard
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '1.0'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '1.0'
|
44
|
+
- !ruby/object:Gem::Dependency
|
45
|
+
name: yard-activerecord
|
46
|
+
requirement: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.0.14
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 0.0.14
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: yard-metasploit-erd
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - "~>"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.1.0
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - "~>"
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 0.1.0
|
16
72
|
- !ruby/object:Gem::Dependency
|
17
73
|
name: rake
|
18
74
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,30 +155,30 @@ dependencies:
|
|
99
155
|
name: metasploit-concern
|
100
156
|
requirement: !ruby/object:Gem::Requirement
|
101
157
|
requirements:
|
102
|
-
- -
|
158
|
+
- - "~>"
|
103
159
|
- !ruby/object:Gem::Version
|
104
|
-
version: 1.0
|
160
|
+
version: '1.0'
|
105
161
|
type: :runtime
|
106
162
|
prerelease: false
|
107
163
|
version_requirements: !ruby/object:Gem::Requirement
|
108
164
|
requirements:
|
109
|
-
- -
|
165
|
+
- - "~>"
|
110
166
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.0
|
167
|
+
version: '1.0'
|
112
168
|
- !ruby/object:Gem::Dependency
|
113
169
|
name: metasploit-model
|
114
170
|
requirement: !ruby/object:Gem::Requirement
|
115
171
|
requirements:
|
116
|
-
- -
|
172
|
+
- - "~>"
|
117
173
|
- !ruby/object:Gem::Version
|
118
|
-
version: 1.0
|
174
|
+
version: '1.0'
|
119
175
|
type: :runtime
|
120
176
|
prerelease: false
|
121
177
|
version_requirements: !ruby/object:Gem::Requirement
|
122
178
|
requirements:
|
123
|
-
- -
|
179
|
+
- - "~>"
|
124
180
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.0
|
181
|
+
version: '1.0'
|
126
182
|
- !ruby/object:Gem::Dependency
|
127
183
|
name: railties
|
128
184
|
requirement: !ruby/object:Gem::Requirement
|
@@ -231,11 +287,14 @@ files:
|
|
231
287
|
- ".simplecov"
|
232
288
|
- ".travis.yml"
|
233
289
|
- ".yardopts"
|
290
|
+
- CHANGELOG.md
|
234
291
|
- CONTRIBUTING.md
|
235
292
|
- Gemfile
|
236
293
|
- LICENSE
|
237
294
|
- README.md
|
295
|
+
- RELEASING.md
|
238
296
|
- Rakefile
|
297
|
+
- UPGRADING.md
|
239
298
|
- app/models/mdm/api_key.rb
|
240
299
|
- app/models/mdm/client.rb
|
241
300
|
- app/models/mdm/cred.rb
|
@@ -283,7 +342,6 @@ files:
|
|
283
342
|
- app/models/mdm/wmap_request.rb
|
284
343
|
- app/models/mdm/wmap_target.rb
|
285
344
|
- app/models/mdm/workspace.rb
|
286
|
-
- app/models/metasploit_data_models/automatic_exploitation.rb
|
287
345
|
- app/models/metasploit_data_models/automatic_exploitation/match.rb
|
288
346
|
- app/models/metasploit_data_models/automatic_exploitation/match_result.rb
|
289
347
|
- app/models/metasploit_data_models/automatic_exploitation/match_set.rb
|
@@ -447,6 +505,7 @@ files:
|
|
447
505
|
- lib/mdm/host/operating_system_normalization.rb
|
448
506
|
- lib/mdm/module.rb
|
449
507
|
- lib/metasploit_data_models.rb
|
508
|
+
- lib/metasploit_data_models/automatic_exploitation.rb
|
450
509
|
- lib/metasploit_data_models/base64_serializer.rb
|
451
510
|
- lib/metasploit_data_models/change_required_columns_to_null_false.rb
|
452
511
|
- lib/metasploit_data_models/engine.rb
|
@@ -467,7 +526,6 @@ files:
|
|
467
526
|
- lib/metasploit_data_models/search/visitor.rb
|
468
527
|
- lib/metasploit_data_models/serialized_prefs.rb
|
469
528
|
- lib/metasploit_data_models/version.rb
|
470
|
-
- lib/tasks/yard.rake
|
471
529
|
- metasploit_data_models.gemspec
|
472
530
|
- script/rails
|
473
531
|
- spec/app/models/mdm/api_key_spec.rb
|
@@ -638,6 +696,7 @@ files:
|
|
638
696
|
- spec/lib/metasploit_data_models/match/child_spec.rb
|
639
697
|
- spec/lib/metasploit_data_models/match/parent_spec.rb
|
640
698
|
- spec/lib/metasploit_data_models/version_spec.rb
|
699
|
+
- spec/lib/metasploit_data_models_spec.rb
|
641
700
|
- spec/spec_helper.rb
|
642
701
|
- spec/support/matchers/match_regex_exactly.rb
|
643
702
|
- spec/support/shared/contexts/rex/text.rb
|
@@ -666,9 +725,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
666
725
|
version: '2.1'
|
667
726
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
668
727
|
requirements:
|
669
|
-
- - "
|
728
|
+
- - ">="
|
670
729
|
- !ruby/object:Gem::Version
|
671
|
-
version:
|
730
|
+
version: '0'
|
672
731
|
requirements: []
|
673
732
|
rubyforge_project:
|
674
733
|
rubygems_version: 2.4.3
|
@@ -844,6 +903,7 @@ test_files:
|
|
844
903
|
- spec/lib/metasploit_data_models/match/child_spec.rb
|
845
904
|
- spec/lib/metasploit_data_models/match/parent_spec.rb
|
846
905
|
- spec/lib/metasploit_data_models/version_spec.rb
|
906
|
+
- spec/lib/metasploit_data_models_spec.rb
|
847
907
|
- spec/spec_helper.rb
|
848
908
|
- spec/support/matchers/match_regex_exactly.rb
|
849
909
|
- spec/support/shared/contexts/rex/text.rb
|