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.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -2
  3. data/.travis.yml +6 -3
  4. data/CHANGELOG.md +6 -0
  5. data/CONTRIBUTING.md +10 -52
  6. data/Gemfile +4 -6
  7. data/RELEASING.md +88 -0
  8. data/Rakefile +23 -0
  9. data/UPGRADING.md +1 -0
  10. data/app/models/mdm/api_key.rb +41 -1
  11. data/app/models/mdm/client.rb +41 -1
  12. data/app/models/mdm/cred.rb +116 -28
  13. data/app/models/mdm/event.rb +47 -0
  14. data/app/models/mdm/exploit_attempt.rb +65 -16
  15. data/app/models/mdm/exploited_host.rb +27 -0
  16. data/app/models/mdm/host_detail.rb +44 -0
  17. data/app/models/mdm/host_tag.rb +6 -8
  18. data/app/models/mdm/listener.rb +52 -0
  19. data/app/models/mdm/macro.rb +42 -0
  20. data/app/models/mdm/mod_ref.rb +21 -1
  21. data/app/models/mdm/module/action.rb +15 -0
  22. data/app/models/mdm/module/arch.rb +10 -0
  23. data/app/models/mdm/module/author.rb +17 -1
  24. data/app/models/mdm/module/mixin.rb +13 -0
  25. data/app/models/mdm/module/platform.rb +11 -0
  26. data/app/models/mdm/module/target.rb +18 -0
  27. data/app/models/mdm/nexpose_console.rb +82 -4
  28. data/app/models/mdm/profile.rb +36 -0
  29. data/app/models/mdm/route.rb +16 -4
  30. data/app/models/mdm/session_event.rb +32 -0
  31. data/app/models/mdm/tag.rb +48 -9
  32. data/app/models/mdm/task.rb +85 -46
  33. data/app/models/mdm/task_cred.rb +29 -0
  34. data/app/models/mdm/task_host.rb +25 -0
  35. data/app/models/mdm/task_service.rb +25 -0
  36. data/app/models/mdm/task_session.rb +25 -0
  37. data/app/models/mdm/user.rb +192 -6
  38. data/app/models/mdm/vuln_attempt.rb +37 -12
  39. data/app/models/mdm/vuln_detail.rb +138 -5
  40. data/app/models/mdm/vuln_ref.rb +3 -0
  41. data/app/models/mdm/web_form.rb +34 -0
  42. data/app/models/mdm/web_page.rb +69 -0
  43. data/app/models/mdm/web_site.rb +50 -0
  44. data/app/models/mdm/wmap_request.rb +85 -0
  45. data/app/models/mdm/wmap_target.rb +40 -0
  46. data/app/models/mdm/workspace.rb +160 -17
  47. data/app/models/metasploit_data_models/automatic_exploitation/match.rb +13 -23
  48. data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +25 -4
  49. data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +15 -4
  50. data/app/models/metasploit_data_models/automatic_exploitation/run.rb +7 -3
  51. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
  52. data/app/models/metasploit_data_models/module_run.rb +1 -1
  53. data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
  54. data/app/validators/ip_format_validator.rb +4 -0
  55. data/app/validators/parameters_validator.rb +12 -0
  56. data/app/validators/password_is_strong_validator.rb +10 -1
  57. data/lib/mdm/host/operating_system_normalization.rb +7 -10
  58. data/lib/metasploit_data_models.rb +4 -0
  59. data/lib/metasploit_data_models/automatic_exploitation.rb +25 -0
  60. data/lib/metasploit_data_models/engine.rb +2 -0
  61. data/lib/metasploit_data_models/serialized_prefs.rb +6 -0
  62. data/lib/metasploit_data_models/version.rb +30 -7
  63. data/metasploit_data_models.gemspec +9 -2
  64. data/spec/app/models/mdm/api_key_spec.rb +1 -3
  65. data/spec/app/models/mdm/client_spec.rb +9 -11
  66. data/spec/app/models/mdm/cred_spec.rb +42 -54
  67. data/spec/app/models/mdm/event_spec.rb +22 -24
  68. data/spec/app/models/mdm/exploit_attempt_spec.rb +19 -21
  69. data/spec/app/models/mdm/exploited_host_spec.rb +11 -13
  70. data/spec/app/models/mdm/host_detail_spec.rb +15 -17
  71. data/spec/app/models/mdm/host_spec.rb +262 -260
  72. data/spec/app/models/mdm/host_tag_spec.rb +6 -8
  73. data/spec/app/models/mdm/listener_spec.rb +30 -32
  74. data/spec/app/models/mdm/loot_spec.rb +21 -23
  75. data/spec/app/models/mdm/macro_spec.rb +1 -3
  76. data/spec/app/models/mdm/mod_ref_spec.rb +1 -3
  77. data/spec/app/models/mdm/module/action_spec.rb +8 -10
  78. data/spec/app/models/mdm/module/arch_spec.rb +8 -10
  79. data/spec/app/models/mdm/module/author_spec.rb +19 -14
  80. data/spec/app/models/mdm/module/detail_spec.rb +184 -75
  81. data/spec/app/models/mdm/module/mixin_spec.rb +8 -10
  82. data/spec/app/models/mdm/module/platform_spec.rb +8 -10
  83. data/spec/app/models/mdm/module/ref_spec.rb +8 -10
  84. data/spec/app/models/mdm/module/target_spec.rb +10 -12
  85. data/spec/app/models/mdm/nexpose_console_spec.rb +35 -37
  86. data/spec/app/models/mdm/note_spec.rb +23 -25
  87. data/spec/app/models/mdm/profile_spec.rb +1 -3
  88. data/spec/app/models/mdm/ref_spec.rb +9 -12
  89. data/spec/app/models/mdm/route_spec.rb +6 -8
  90. data/spec/app/models/mdm/service_spec.rb +38 -40
  91. data/spec/app/models/mdm/session_event_spec.rb +10 -12
  92. data/spec/app/models/mdm/session_spec.rb +13 -15
  93. data/spec/app/models/mdm/tag_spec.rb +29 -30
  94. data/spec/app/models/mdm/task_cred_spec.rb +9 -11
  95. data/spec/app/models/mdm/task_host_spec.rb +9 -11
  96. data/spec/app/models/mdm/task_service_spec.rb +9 -11
  97. data/spec/app/models/mdm/task_session_spec.rb +7 -9
  98. data/spec/app/models/mdm/task_spec.rb +27 -29
  99. data/spec/app/models/mdm/user_spec.rb +17 -19
  100. data/spec/app/models/mdm/vuln_attempt_spec.rb +14 -16
  101. data/spec/app/models/mdm/vuln_detail_spec.rb +26 -28
  102. data/spec/app/models/mdm/vuln_ref_spec.rb +8 -10
  103. data/spec/app/models/mdm/vuln_spec.rb +24 -26
  104. data/spec/app/models/mdm/web_form_spec.rb +11 -13
  105. data/spec/app/models/mdm/web_page_spec.rb +19 -21
  106. data/spec/app/models/mdm/web_site_spec.rb +21 -23
  107. data/spec/app/models/mdm/web_vuln_spec.rb +63 -65
  108. data/spec/app/models/mdm/wmap_request_spec.rb +1 -3
  109. data/spec/app/models/mdm/wmap_target_spec.rb +1 -3
  110. data/spec/app/models/mdm/workspace_spec.rb +97 -100
  111. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +3 -5
  112. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +13 -15
  113. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +1 -3
  114. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +1 -3
  115. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +10 -12
  116. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +4 -6
  117. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +21 -23
  118. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +9 -11
  119. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +21 -23
  120. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +4 -6
  121. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +22 -15
  122. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +4 -6
  123. data/spec/app/models/metasploit_data_models/module_run_spec.rb +1 -3
  124. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +18 -20
  125. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +6 -8
  126. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +8 -10
  127. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +8 -10
  128. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +2 -4
  129. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +8 -10
  130. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +6 -8
  131. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +9 -11
  132. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +5 -7
  133. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +17 -19
  134. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +5 -7
  135. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +61 -23
  136. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +8 -10
  137. data/spec/app/validators/parameters_validator_spec.rb +29 -29
  138. data/spec/app/validators/password_is_strong_validator_spec.rb +54 -46
  139. data/spec/lib/base64_serializer_spec.rb +19 -21
  140. data/spec/lib/ipaddr_spec.rb +1 -3
  141. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +18 -12
  142. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +4 -6
  143. data/spec/lib/metasploit_data_models/match/child_spec.rb +2 -4
  144. data/spec/lib/metasploit_data_models/match/parent_spec.rb +4 -6
  145. data/spec/lib/metasploit_data_models/version_spec.rb +3 -139
  146. data/spec/lib/metasploit_data_models_spec.rb +4 -0
  147. data/spec/spec_helper.rb +86 -12
  148. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
  149. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
  150. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
  151. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
  152. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
  153. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
  154. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +7 -6
  155. metadata +74 -14
  156. data/app/models/metasploit_data_models/automatic_exploitation.rb +0 -16
  157. data/lib/tasks/yard.rake +0 -33
@@ -0,0 +1,4 @@
1
+ RSpec.describe MetasploitDataModels do
2
+ it_should_behave_like 'Metasploit::Version GEM_VERSION constant'
3
+ it_should_behave_like 'Metasploit::Version VERSION constant'
4
+ end
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
- engines = [
34
- Metasploit::Concern::Engine,
35
- Metasploit::Model::Engine,
36
- MetasploitDataModels::Engine
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
- engines.each do |engine|
40
- support_glob = engine.root.join('spec', 'support', '**', '*.rb')
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.before(:each) do
49
- # Rex is only available when testing with metasploit-framework or pro, so stub out the methods that require it
50
- Mdm::Workspace.any_instance.stub(:valid_ip_or_range? => true)
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.mock_with :rspec
54
- config.use_transactional_fixtures = true
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?.should be_false
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 { should be_valid }
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?.should be_true
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 { should be_invalid }
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 { should be_valid }
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 { should be_valid }
33
+ it { is_expected.to be_valid }
34
34
  end
35
35
  end
36
36
  end
@@ -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 { should be_a described_class }
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 { should be_nil }
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.should_receive(:visit).with(node).and_call_original
16
+ expect(visitor).to receive(:visit).with(node).and_call_original
17
17
 
18
18
  children.each do |child|
19
- visitor.should_receive(:visit).with(child).and_return([])
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.should_receive(:visit).with(node).and_call_original
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.stub(:visit).with(child).and_return(child_visit)
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.should == child_visits
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.should_receive(:visit).with(node).and_call_original
14
- visitor.should_receive(:visit).with(operator).and_return([])
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.should_receive(:visit).with(node).and_call_original
22
- visitor.stub(:visit).with(operator).and_return(operator_visit)
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.should == operator_visit
24
+ expect(visit).to eq(operator_visit)
25
25
  end
26
26
  end
@@ -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.should_receive(:visit).with(operator).and_call_original
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.stub(:visit).with(operator).and_return(attribute)
28
+ allow(visitor.attribute_visitor).to receive(:visit).with(operator).and_return(attribute)
29
29
 
30
- attribute.should_receive(:eq).with(value)
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.should_receive(:visit).with(node).and_call_original
19
+ expect(visitor).to receive(:visit).with(node).and_call_original
20
20
 
21
21
  children.each do |child|
22
- visitor.should_receive(:visit).with(child).and_return(Arel::Nodes::Equality.new(1, 1))
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.stub(:visit).with(node).and_call_original
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.stub(:visit).with(child).and_return(child_visit)
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.should be_a arel_class
46
+ expect(arel_pair).to be_a arel_class
47
47
 
48
- expect([arel_pair.left, arel_pair.right]).to match_array(child_visits)
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.pre.rails.pre.4.0b
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-04-30 00:00:00.000000000 Z
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.0.pre.rails.pre.4.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.0.pre.rails.pre.4.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.0.pre.rails.pre.4.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.0.pre.rails.pre.4.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: 1.3.1
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