metasploit_data_models 0.24.4 → 0.24.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -3
  3. data/.travis.yml +3 -6
  4. data/CONTRIBUTING.md +52 -10
  5. data/Gemfile +8 -1
  6. data/Rakefile +0 -23
  7. data/app/models/mdm/api_key.rb +1 -41
  8. data/app/models/mdm/client.rb +1 -41
  9. data/app/models/mdm/cred.rb +19 -107
  10. data/app/models/mdm/event.rb +1 -48
  11. data/app/models/mdm/exploit_attempt.rb +16 -65
  12. data/app/models/mdm/exploited_host.rb +1 -28
  13. data/app/models/mdm/host_detail.rb +1 -45
  14. data/app/models/mdm/host_tag.rb +8 -6
  15. data/app/models/mdm/listener.rb +1 -53
  16. data/app/models/mdm/macro.rb +0 -42
  17. data/app/models/mdm/mod_ref.rb +0 -21
  18. data/app/models/mdm/module/action.rb +0 -15
  19. data/app/models/mdm/module/arch.rb +0 -10
  20. data/app/models/mdm/module/author.rb +0 -16
  21. data/app/models/mdm/module/mixin.rb +0 -13
  22. data/app/models/mdm/module/platform.rb +0 -11
  23. data/app/models/mdm/module/target.rb +0 -18
  24. data/app/models/mdm/nexpose_console.rb +4 -82
  25. data/app/models/mdm/profile.rb +0 -36
  26. data/app/models/mdm/route.rb +5 -17
  27. data/app/models/mdm/session_event.rb +1 -33
  28. data/app/models/mdm/tag.rb +10 -49
  29. data/app/models/mdm/task.rb +45 -94
  30. data/app/models/mdm/task_cred.rb +0 -29
  31. data/app/models/mdm/task_host.rb +0 -25
  32. data/app/models/mdm/task_service.rb +0 -25
  33. data/app/models/mdm/task_session.rb +0 -25
  34. data/app/models/mdm/user.rb +6 -188
  35. data/app/models/mdm/vuln_attempt.rb +12 -37
  36. data/app/models/mdm/vuln_detail.rb +5 -139
  37. data/app/models/mdm/vuln_ref.rb +1 -4
  38. data/app/models/mdm/web_form.rb +1 -35
  39. data/app/models/mdm/web_page.rb +1 -70
  40. data/app/models/mdm/web_site.rb +1 -51
  41. data/app/models/mdm/wmap_request.rb +0 -85
  42. data/app/models/mdm/wmap_target.rb +0 -40
  43. data/app/models/mdm/workspace.rb +14 -152
  44. data/app/models/metasploit_data_models/automatic_exploitation.rb +16 -0
  45. data/app/models/metasploit_data_models/automatic_exploitation/match.rb +24 -19
  46. data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +5 -33
  47. data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +4 -22
  48. data/app/models/metasploit_data_models/automatic_exploitation/run.rb +3 -13
  49. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
  50. data/app/models/metasploit_data_models/module_run.rb +1 -1
  51. data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
  52. data/app/validators/ip_format_validator.rb +0 -4
  53. data/app/validators/parameters_validator.rb +0 -12
  54. data/app/validators/password_is_strong_validator.rb +1 -10
  55. data/lib/mdm/host/operating_system_normalization.rb +10 -7
  56. data/lib/metasploit_data_models.rb +0 -4
  57. data/lib/metasploit_data_models/engine.rb +0 -2
  58. data/lib/metasploit_data_models/serialized_prefs.rb +0 -6
  59. data/lib/metasploit_data_models/version.rb +10 -24
  60. data/lib/tasks/yard.rake +33 -0
  61. data/metasploit_data_models.gemspec +2 -9
  62. data/spec/app/models/mdm/api_key_spec.rb +3 -1
  63. data/spec/app/models/mdm/client_spec.rb +11 -9
  64. data/spec/app/models/mdm/cred_spec.rb +54 -42
  65. data/spec/app/models/mdm/event_spec.rb +23 -21
  66. data/spec/app/models/mdm/exploit_attempt_spec.rb +21 -19
  67. data/spec/app/models/mdm/exploited_host_spec.rb +13 -11
  68. data/spec/app/models/mdm/host_detail_spec.rb +17 -15
  69. data/spec/app/models/mdm/host_spec.rb +260 -261
  70. data/spec/app/models/mdm/host_tag_spec.rb +8 -6
  71. data/spec/app/models/mdm/listener_spec.rb +32 -30
  72. data/spec/app/models/mdm/loot_spec.rb +23 -21
  73. data/spec/app/models/mdm/macro_spec.rb +3 -1
  74. data/spec/app/models/mdm/mod_ref_spec.rb +3 -1
  75. data/spec/app/models/mdm/module/action_spec.rb +12 -10
  76. data/spec/app/models/mdm/module/arch_spec.rb +12 -10
  77. data/spec/app/models/mdm/module/author_spec.rb +17 -22
  78. data/spec/app/models/mdm/module/detail_spec.rb +75 -184
  79. data/spec/app/models/mdm/module/mixin_spec.rb +12 -10
  80. data/spec/app/models/mdm/module/platform_spec.rb +12 -10
  81. data/spec/app/models/mdm/module/ref_spec.rb +12 -10
  82. data/spec/app/models/mdm/module/target_spec.rb +15 -13
  83. data/spec/app/models/mdm/nexpose_console_spec.rb +37 -35
  84. data/spec/app/models/mdm/note_spec.rb +25 -23
  85. data/spec/app/models/mdm/profile_spec.rb +3 -1
  86. data/spec/app/models/mdm/ref_spec.rb +12 -10
  87. data/spec/app/models/mdm/route_spec.rb +8 -6
  88. data/spec/app/models/mdm/service_spec.rb +40 -38
  89. data/spec/app/models/mdm/session_event_spec.rb +12 -10
  90. data/spec/app/models/mdm/session_spec.rb +15 -13
  91. data/spec/app/models/mdm/tag_spec.rb +29 -29
  92. data/spec/app/models/mdm/task_cred_spec.rb +11 -9
  93. data/spec/app/models/mdm/task_host_spec.rb +11 -9
  94. data/spec/app/models/mdm/task_service_spec.rb +11 -9
  95. data/spec/app/models/mdm/task_session_spec.rb +9 -7
  96. data/spec/app/models/mdm/task_spec.rb +29 -27
  97. data/spec/app/models/mdm/user_spec.rb +19 -17
  98. data/spec/app/models/mdm/vuln_attempt_spec.rb +16 -14
  99. data/spec/app/models/mdm/vuln_detail_spec.rb +28 -26
  100. data/spec/app/models/mdm/vuln_ref_spec.rb +10 -8
  101. data/spec/app/models/mdm/vuln_spec.rb +26 -24
  102. data/spec/app/models/mdm/web_form_spec.rb +13 -11
  103. data/spec/app/models/mdm/web_page_spec.rb +21 -19
  104. data/spec/app/models/mdm/web_site_spec.rb +23 -21
  105. data/spec/app/models/mdm/web_vuln_spec.rb +65 -63
  106. data/spec/app/models/mdm/wmap_request_spec.rb +3 -1
  107. data/spec/app/models/mdm/wmap_target_spec.rb +3 -1
  108. data/spec/app/models/mdm/workspace_spec.rb +100 -97
  109. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +5 -3
  110. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +15 -13
  111. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +3 -1
  112. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +3 -1
  113. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +12 -10
  114. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +6 -4
  115. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +23 -21
  116. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +11 -9
  117. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +23 -21
  118. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +6 -4
  119. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +15 -22
  120. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +6 -4
  121. data/spec/app/models/metasploit_data_models/module_run_spec.rb +3 -1
  122. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +20 -18
  123. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +8 -6
  124. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +10 -8
  125. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +10 -8
  126. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +4 -2
  127. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +10 -8
  128. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +8 -6
  129. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +11 -9
  130. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +7 -5
  131. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +19 -17
  132. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +7 -5
  133. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +23 -61
  134. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +10 -8
  135. data/spec/app/validators/parameters_validator_spec.rb +29 -29
  136. data/spec/app/validators/password_is_strong_validator_spec.rb +46 -54
  137. data/spec/dummy/db/structure.sql +3403 -0
  138. data/spec/factories/mdm/module/details.rb +1 -1
  139. data/spec/lib/base64_serializer_spec.rb +19 -19
  140. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +12 -18
  141. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +6 -4
  142. data/spec/lib/metasploit_data_models/match/child_spec.rb +4 -2
  143. data/spec/lib/metasploit_data_models/match/parent_spec.rb +6 -4
  144. data/spec/lib/metasploit_data_models/version_spec.rb +141 -3
  145. data/spec/spec_helper.rb +12 -86
  146. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
  147. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
  148. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
  149. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
  150. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
  151. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
  152. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +6 -7
  153. metadata +9 -67
  154. data/CHANGELOG.md +0 -6
  155. data/RELEASING.md +0 -88
  156. data/UPGRADING.md +0 -1
  157. data/lib/metasploit_data_models/automatic_exploitation.rb +0 -25
  158. data/spec/lib/metasploit_data_models_spec.rb +0 -4
@@ -1,3 +1,5 @@
1
- RSpec.describe Mdm::Profile, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Profile do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
  end
@@ -1,4 +1,6 @@
1
- RSpec.describe Mdm::Ref, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Ref do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
@@ -27,23 +29,23 @@ RSpec.describe Mdm::Ref, type: :model do
27
29
  end
28
30
 
29
31
  # @todo https://www.pivotaltracker.com/story/show/48915453
30
- it { is_expected.to have_many(:vulns_refs).class_name('Mdm::VulnRef') }
31
- it { is_expected.to have_many(:vulns).class_name('Mdm::Vuln').through(:vulns_refs) }
32
+ it { should have_many(:vulns_refs).class_name('Mdm::VulnRef') }
33
+ it { should have_many(:vulns).class_name('Mdm::Vuln').through(:vulns_refs) }
32
34
  end
33
35
 
34
36
  context 'database' do
35
37
  context 'columns' do
36
- it { is_expected.to have_db_column(:name).of_type(:string) }
37
- it { is_expected.to have_db_column(:ref_id).of_type(:integer) }
38
+ it { should have_db_column(:name).of_type(:string) }
39
+ it { should have_db_column(:ref_id).of_type(:integer) }
38
40
 
39
41
  context 'timestamps' do
40
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
41
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
42
+ it { should have_db_column(:created_at).of_type(:datetime) }
43
+ it { should have_db_column(:updated_at).of_type(:datetime) }
42
44
  end
43
45
  end
44
46
 
45
47
  context 'indices' do
46
- it { is_expected.to have_db_index(:name) }
48
+ it { should have_db_index(:name) }
47
49
  end
48
50
  end
49
51
 
@@ -53,7 +55,7 @@ RSpec.describe Mdm::Ref, type: :model do
53
55
  FactoryGirl.build :mdm_ref
54
56
  end
55
57
 
56
- it { is_expected.to be_valid }
58
+ it { should be_valid }
57
59
  end
58
60
  end
59
61
 
@@ -70,6 +72,6 @@ RSpec.describe Mdm::Ref, type: :model do
70
72
  end
71
73
 
72
74
  context 'mass assignment security' do
73
- it { is_expected.to allow_mass_assignment_of(:name) }
75
+ it { should allow_mass_assignment_of(:name) }
74
76
  end
75
77
  end
@@ -1,14 +1,16 @@
1
- RSpec.describe Mdm::Route, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Route do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
5
- it { is_expected.to belong_to(:session).class_name('Mdm::Session') }
7
+ it { should belong_to(:session).class_name('Mdm::Session') }
6
8
  end
7
9
 
8
10
  context 'factory' do
9
11
  it 'should be valid' do
10
12
  route = FactoryGirl.build(:mdm_route)
11
- expect(route).to be_valid
13
+ route.should be_valid
12
14
  end
13
15
  end
14
16
 
@@ -26,9 +28,9 @@ RSpec.describe Mdm::Route, type: :model do
26
28
 
27
29
  context 'database' do
28
30
  context 'columns' do
29
- it { is_expected.to have_db_column(:session_id).of_type(:integer) }
30
- it { is_expected.to have_db_column(:subnet).of_type(:string) }
31
- it { is_expected.to have_db_column(:netmask).of_type(:string) }
31
+ it { should have_db_column(:session_id).of_type(:integer) }
32
+ it { should have_db_column(:subnet).of_type(:string) }
33
+ it { should have_db_column(:netmask).of_type(:string) }
32
34
  end
33
35
  end
34
36
 
@@ -1,4 +1,6 @@
1
- RSpec.describe Mdm::Service, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Service do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'CONSTANTS' do
@@ -7,8 +9,8 @@ RSpec.describe Mdm::Service, type: :model do
7
9
  described_class::PROTOS
8
10
  }
9
11
 
10
- it { is_expected.to include 'tcp' }
11
- it { is_expected.to include 'udp' }
12
+ it { should include 'tcp' }
13
+ it { should include 'udp' }
12
14
  end
13
15
 
14
16
  context 'STATES' do
@@ -16,40 +18,40 @@ RSpec.describe Mdm::Service, type: :model do
16
18
  described_class::STATES
17
19
  }
18
20
 
19
- it { is_expected.to include 'closed' }
20
- it { is_expected.to include 'filtered' }
21
- it { is_expected.to include 'open' }
22
- it { is_expected.to include 'unknown' }
21
+ it { should include 'closed' }
22
+ it { should include 'filtered' }
23
+ it { should include 'open' }
24
+ it { should include 'unknown' }
23
25
  end
24
26
  end
25
27
 
26
28
  context "Associations" do
27
29
 
28
- it { is_expected.to have_many(:task_services).class_name('Mdm::TaskService').dependent(:destroy) }
29
- it { is_expected.to have_many(:tasks).class_name('Mdm::Task').through(:task_services) }
30
- it { is_expected.to have_many(:creds).class_name('Mdm::Cred').dependent(:destroy) }
31
- it { is_expected.to have_many(:exploited_hosts).class_name('Mdm::ExploitedHost').dependent(:destroy) }
32
- it { is_expected.to have_many(:notes).class_name('Mdm::Note').dependent(:destroy) }
33
- it { is_expected.to have_many(:vulns).class_name('Mdm::Vuln').dependent(:destroy) }
34
- it { is_expected.to have_many(:web_sites).class_name('Mdm::WebSite').dependent(:destroy) }
35
- it { is_expected.to have_many(:web_pages).class_name('Mdm::WebPage').through(:web_sites) }
36
- it { is_expected.to have_many(:web_forms).class_name('Mdm::WebForm').through(:web_sites) }
37
- it { is_expected.to have_many(:web_vulns).class_name('Mdm::WebVuln').through(:web_sites) }
38
- it { is_expected.to belong_to(:host).class_name('Mdm::Host') }
30
+ it { should have_many(:task_services).class_name('Mdm::TaskService').dependent(:destroy) }
31
+ it { should have_many(:tasks).class_name('Mdm::Task').through(:task_services) }
32
+ it { should have_many(:creds).class_name('Mdm::Cred').dependent(:destroy) }
33
+ it { should have_many(:exploited_hosts).class_name('Mdm::ExploitedHost').dependent(:destroy) }
34
+ it { should have_many(:notes).class_name('Mdm::Note').dependent(:destroy) }
35
+ it { should have_many(:vulns).class_name('Mdm::Vuln').dependent(:destroy) }
36
+ it { should have_many(:web_sites).class_name('Mdm::WebSite').dependent(:destroy) }
37
+ it { should have_many(:web_pages).class_name('Mdm::WebPage').through(:web_sites) }
38
+ it { should have_many(:web_forms).class_name('Mdm::WebForm').through(:web_sites) }
39
+ it { should have_many(:web_vulns).class_name('Mdm::WebVuln').through(:web_sites) }
40
+ it { should belong_to(:host).class_name('Mdm::Host') }
39
41
  end
40
42
 
41
43
  context 'scopes' do
42
44
  context "inactive" do
43
45
  it "should exclude open services" do
44
46
  open_service = FactoryGirl.create(:mdm_service, :state => 'open')
45
- expect(Mdm::Service.inactive).not_to include(open_service)
47
+ Mdm::Service.inactive.should_not include(open_service)
46
48
  end
47
49
  end
48
50
 
49
51
  context "with_state open" do
50
52
  it "should exclude closed services" do
51
53
  closed_service = FactoryGirl.create(:mdm_service, :state => 'closed')
52
- expect(Mdm::Service.with_state('open')).not_to include(closed_service)
54
+ Mdm::Service.with_state('open').should_not include(closed_service)
53
55
  end
54
56
  end
55
57
 
@@ -58,8 +60,8 @@ RSpec.describe Mdm::Service, type: :model do
58
60
  tcp_service = FactoryGirl.create(:mdm_service, proto: 'tcp')
59
61
  udp_service = FactoryGirl.create(:mdm_service, proto: 'udp')
60
62
  search_results = Mdm::Service.search('tcp')
61
- expect(search_results).to include(tcp_service)
62
- expect(search_results).not_to include(udp_service)
63
+ search_results.should include(tcp_service)
64
+ search_results.should_not include(udp_service)
63
65
  end
64
66
  end
65
67
  end
@@ -68,7 +70,7 @@ RSpec.describe Mdm::Service, type: :model do
68
70
  context 'after_save' do
69
71
  it 'should call #normalize_host_os' do
70
72
  svc = FactoryGirl.create(:mdm_service)
71
- expect(svc).to receive(:normalize_host_os)
73
+ svc.should_receive(:normalize_host_os)
72
74
  svc.run_callbacks(:save)
73
75
  end
74
76
  end
@@ -77,7 +79,7 @@ RSpec.describe Mdm::Service, type: :model do
77
79
  context 'factory' do
78
80
  it 'should be valid' do
79
81
  service = FactoryGirl.build(:mdm_service)
80
- expect(service).to be_valid
82
+ service.should be_valid
81
83
  end
82
84
  end
83
85
 
@@ -96,24 +98,24 @@ RSpec.describe Mdm::Service, type: :model do
96
98
  context 'database' do
97
99
 
98
100
  context 'timestamps'do
99
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
100
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime) }
101
+ it { should have_db_column(:created_at).of_type(:datetime) }
102
+ it { should have_db_column(:updated_at).of_type(:datetime) }
101
103
  end
102
104
 
103
105
  context 'columns' do
104
- it { is_expected.to have_db_column(:host_id).of_type(:integer) }
105
- it { is_expected.to have_db_column(:port).of_type(:integer).with_options(:null => false) }
106
- it { is_expected.to have_db_column(:proto).of_type(:string).with_options(:null => false) }
107
- it { is_expected.to have_db_column(:state).of_type(:string) }
108
- it { is_expected.to have_db_column(:name).of_type(:string) }
109
- it { is_expected.to have_db_column(:info).of_type(:text) }
106
+ it { should have_db_column(:host_id).of_type(:integer) }
107
+ it { should have_db_column(:port).of_type(:integer).with_options(:null => false) }
108
+ it { should have_db_column(:proto).of_type(:string).with_options(:null => false) }
109
+ it { should have_db_column(:state).of_type(:string) }
110
+ it { should have_db_column(:name).of_type(:string) }
111
+ it { should have_db_column(:info).of_type(:text) }
110
112
  end
111
113
 
112
114
  context 'indices' do
113
- it { is_expected.to have_db_index(:name) }
114
- it { is_expected.to have_db_index(:port) }
115
- it { is_expected.to have_db_index(:proto) }
116
- it { is_expected.to have_db_index(:state) }
115
+ it { should have_db_index(:name) }
116
+ it { should have_db_index(:port) }
117
+ it { should have_db_index(:proto) }
118
+ it { should have_db_index(:state) }
117
119
  end
118
120
  end
119
121
 
@@ -149,8 +151,8 @@ RSpec.describe Mdm::Service, type: :model do
149
151
  FactoryGirl.build(:mdm_service)
150
152
  }
151
153
 
152
- it { is_expected.to validate_numericality_of(:port).only_integer }
153
- it { is_expected.to ensure_inclusion_of(:proto).in_array(described_class::PROTOS) }
154
+ it { should validate_numericality_of(:port).only_integer }
155
+ it { should ensure_inclusion_of(:proto).in_array(described_class::PROTOS) }
154
156
 
155
157
  context 'when a duplicate service already exists' do
156
158
  let(:service1) { FactoryGirl.create(:mdm_service)}
@@ -1,14 +1,16 @@
1
- RSpec.describe Mdm::SessionEvent, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::SessionEvent do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'associations' do
5
- it { is_expected.to belong_to(:session).class_name('Mdm::Session') }
7
+ it { should belong_to(:session).class_name('Mdm::Session') }
6
8
  end
7
9
 
8
10
  context 'factory' do
9
11
  it 'should be valid' do
10
12
  session_event = FactoryGirl.build(:mdm_session_event)
11
- expect(session_event).to be_valid
13
+ session_event.should be_valid
12
14
  end
13
15
  end
14
16
 
@@ -26,16 +28,16 @@ RSpec.describe Mdm::SessionEvent, type: :model do
26
28
 
27
29
  context 'database' do
28
30
  context 'timestamps'do
29
- it { is_expected.to have_db_column(:created_at).of_type(:datetime) }
31
+ it { should have_db_column(:created_at).of_type(:datetime) }
30
32
  end
31
33
 
32
34
  context 'columns' do
33
- it { is_expected.to have_db_column(:session_id).of_type(:integer) }
34
- it { is_expected.to have_db_column(:etype).of_type(:string) }
35
- it { is_expected.to have_db_column(:command).of_type(:binary) }
36
- it { is_expected.to have_db_column(:output).of_type(:binary) }
37
- it { is_expected.to have_db_column(:remote_path).of_type(:string) }
38
- it { is_expected.to have_db_column(:local_path).of_type(:string) }
35
+ it { should have_db_column(:session_id).of_type(:integer) }
36
+ it { should have_db_column(:etype).of_type(:string) }
37
+ it { should have_db_column(:command).of_type(:binary) }
38
+ it { should have_db_column(:output).of_type(:binary) }
39
+ it { should have_db_column(:remote_path).of_type(:string) }
40
+ it { should have_db_column(:local_path).of_type(:string) }
39
41
  end
40
42
  end
41
43
 
@@ -1,10 +1,12 @@
1
- RSpec.describe Mdm::Session, type: :model do
1
+ require 'spec_helper'
2
+
3
+ describe Mdm::Session do
2
4
  it_should_behave_like 'Metasploit::Concern.run'
3
5
 
4
6
  context 'factory' do
5
7
  it 'should be valid' do
6
8
  session = FactoryGirl.build(:mdm_session)
7
- expect(session).to be_valid
9
+ session.should be_valid
8
10
  end
9
11
  end
10
12
 
@@ -59,8 +61,8 @@ RSpec.describe Mdm::Session, type: :model do
59
61
  alive_session = FactoryGirl.create(:mdm_session)
60
62
  dead_session = FactoryGirl.create(:mdm_session, :closed_at => Time.now)
61
63
  alive_set = Mdm::Session.alive
62
- expect(alive_set).to include(alive_session)
63
- expect(alive_set).not_to include(dead_session)
64
+ alive_set.should include(alive_session)
65
+ alive_set.should_not include(dead_session)
64
66
  end
65
67
  end
66
68
 
@@ -69,8 +71,8 @@ RSpec.describe Mdm::Session, type: :model do
69
71
  alive_session = FactoryGirl.create(:mdm_session)
70
72
  dead_session = FactoryGirl.create(:mdm_session, :closed_at => Time.now)
71
73
  dead_set = Mdm::Session.dead
72
- expect(dead_set).not_to include(alive_session)
73
- expect(dead_set).to include(dead_session)
74
+ dead_set.should_not include(alive_session)
75
+ dead_set.should include(dead_session)
74
76
  end
75
77
  end
76
78
 
@@ -80,9 +82,9 @@ RSpec.describe Mdm::Session, type: :model do
80
82
  linux_shell = FactoryGirl.create(:mdm_session, :stype => 'shell', :platform => 'Linux')
81
83
  win_meterp = FactoryGirl.create(:mdm_session, :stype => 'meterpreter', :platform => 'Windows')
82
84
  upgrade_set = Mdm::Session.upgradeable
83
- expect(upgrade_set).to include(win_shell)
84
- expect(upgrade_set).not_to include(linux_shell)
85
- expect(upgrade_set).not_to include(win_meterp)
85
+ upgrade_set.should include(win_shell)
86
+ upgrade_set.should_not include(linux_shell)
87
+ upgrade_set.should_not include(win_meterp)
86
88
  end
87
89
  end
88
90
  end
@@ -91,7 +93,7 @@ RSpec.describe Mdm::Session, type: :model do
91
93
  context 'before_destroy' do
92
94
  it 'should call #stop' do
93
95
  mysession = FactoryGirl.create(:mdm_session)
94
- expect(mysession).to receive(:stop)
96
+ mysession.should_receive(:stop)
95
97
  mysession.destroy
96
98
  end
97
99
  end
@@ -101,17 +103,17 @@ RSpec.describe Mdm::Session, type: :model do
101
103
  context '#upgradeable?' do
102
104
  it 'should return true for windows shells' do
103
105
  win_shell = FactoryGirl.create(:mdm_session, :stype => 'shell', :platform => 'Windows')
104
- expect(win_shell.upgradeable?).to eq(true)
106
+ win_shell.upgradeable?.should == true
105
107
  end
106
108
 
107
109
  it 'should return false for non-windows shells' do
108
110
  linux_shell = FactoryGirl.create(:mdm_session, :stype => 'shell', :platform => 'Linux')
109
- expect(linux_shell.upgradeable?).to eq(false)
111
+ linux_shell.upgradeable?.should == false
110
112
  end
111
113
 
112
114
  it 'should return false for Windows Meterpreter Sessions' do
113
115
  win_meterp = FactoryGirl.create(:mdm_session, :stype => 'meterpreter', :platform => 'Windows')
114
- expect(win_meterp.upgradeable?).to eq(false)
116
+ win_meterp.upgradeable?.should == false
115
117
  end
116
118
  end
117
119
  end
@@ -1,29 +1,29 @@
1
1
  require 'spec_helper'
2
2
  require 'securerandom'
3
3
 
4
- RSpec.describe Mdm::Tag, type: :model do
4
+ describe Mdm::Tag do
5
5
  it_should_behave_like 'Metasploit::Concern.run'
6
6
 
7
7
  context 'associations' do
8
- it { is_expected.to have_many(:hosts_tags).class_name('Mdm::HostTag') }
9
- it { is_expected.to have_many(:hosts).class_name('Mdm::Host').through(:hosts_tags) }
10
- it { is_expected.to belong_to(:user).class_name('Mdm::User') }
8
+ it { should have_many(:hosts_tags).class_name('Mdm::HostTag') }
9
+ it { should have_many(:hosts).class_name('Mdm::Host').through(:hosts_tags) }
10
+ it { should belong_to(:user).class_name('Mdm::User') }
11
11
  end
12
12
 
13
13
  context 'database' do
14
14
 
15
15
  context 'timestamps'do
16
- it { is_expected.to have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
17
- it { is_expected.to have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
16
+ it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
17
+ it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
18
18
  end
19
19
 
20
20
  context 'columns' do
21
- it { is_expected.to have_db_column(:user_id).of_type(:integer) }
22
- it { is_expected.to have_db_column(:name).of_type(:string) }
23
- it { is_expected.to have_db_column(:desc).of_type(:text) }
24
- it { is_expected.to have_db_column(:report_summary).of_type(:boolean).with_options(:null => false, :default =>false) }
25
- it { is_expected.to have_db_column(:report_detail).of_type(:boolean).with_options(:null => false, :default =>false) }
26
- it { is_expected.to have_db_column(:critical).of_type(:boolean).with_options(:null => false, :default =>false) }
21
+ it { should have_db_column(:user_id).of_type(:integer) }
22
+ it { should have_db_column(:name).of_type(:string) }
23
+ it { should have_db_column(:desc).of_type(:text) }
24
+ it { should have_db_column(:report_summary).of_type(:boolean).with_options(:null => false, :default =>false) }
25
+ it { should have_db_column(:report_detail).of_type(:boolean).with_options(:null => false, :default =>false) }
26
+ it { should have_db_column(:critical).of_type(:boolean).with_options(:null => false, :default =>false) }
27
27
  end
28
28
  end
29
29
 
@@ -32,37 +32,37 @@ RSpec.describe Mdm::Tag, type: :model do
32
32
  it 'should not ba valid for a length over 8k' do
33
33
  desc = SecureRandom.hex(9001) #over 9000?!
34
34
  large_tag = FactoryGirl.build(:mdm_tag, :desc => desc)
35
- expect(large_tag).not_to be_valid
36
- expect(large_tag.errors[:desc]).to include('desc must be less than 8k.')
35
+ large_tag.should_not be_valid
36
+ large_tag.errors[:desc].should include('desc must be less than 8k.')
37
37
  end
38
38
  end
39
39
 
40
40
  context 'name' do
41
41
  it 'must be present' do
42
42
  nameless_tag = FactoryGirl.build(:mdm_tag, :name => nil)
43
- expect(nameless_tag).not_to be_valid
44
- expect(nameless_tag.errors[:name]).to include("can't be blank")
43
+ nameless_tag.should_not be_valid
44
+ nameless_tag.errors[:name].should include("can't be blank")
45
45
  end
46
46
 
47
47
  it 'may only contain alphanumerics, dot, dashes, and underscores' do
48
48
  mytag = FactoryGirl.build(:mdm_tag, :name => 'A.1-B_2')
49
- expect(mytag).to be_valid
49
+ mytag.should be_valid
50
50
  #Test for various bad inputs we should never allow
51
51
  mytag = FactoryGirl.build(:mdm_tag, :name => "A'1")
52
- expect(mytag).not_to be_valid
53
- expect(mytag.errors[:name]).to include('must be alphanumeric, dots, dashes, or underscores')
52
+ mytag.should_not be_valid
53
+ mytag.errors[:name].should include('must be alphanumeric, dots, dashes, or underscores')
54
54
  mytag = FactoryGirl.build(:mdm_tag, :name => "A;1")
55
- expect(mytag).not_to be_valid
56
- expect(mytag.errors[:name]).to include('must be alphanumeric, dots, dashes, or underscores')
55
+ mytag.should_not be_valid
56
+ mytag.errors[:name].should include('must be alphanumeric, dots, dashes, or underscores')
57
57
  mytag = FactoryGirl.build(:mdm_tag, :name => "A%1")
58
- expect(mytag).not_to be_valid
59
- expect(mytag.errors[:name]).to include('must be alphanumeric, dots, dashes, or underscores')
58
+ mytag.should_not be_valid
59
+ mytag.errors[:name].should include('must be alphanumeric, dots, dashes, or underscores')
60
60
  mytag = FactoryGirl.build(:mdm_tag, :name => "A=1")
61
- expect(mytag).not_to be_valid
62
- expect(mytag.errors[:name]).to include('must be alphanumeric, dots, dashes, or underscores')
61
+ mytag.should_not be_valid
62
+ mytag.errors[:name].should include('must be alphanumeric, dots, dashes, or underscores')
63
63
  mytag = FactoryGirl.build(:mdm_tag, :name => "#A1")
64
- expect(mytag).not_to be_valid
65
- expect(mytag.errors[:name]).to include('must be alphanumeric, dots, dashes, or underscores')
64
+ mytag.should_not be_valid
65
+ mytag.errors[:name].should include('must be alphanumeric, dots, dashes, or underscores')
66
66
  end
67
67
  end
68
68
  end
@@ -71,7 +71,7 @@ RSpec.describe Mdm::Tag, type: :model do
71
71
  context '#to_s' do
72
72
  it 'should return the name of the tag as a string' do
73
73
  mytag = FactoryGirl.build(:mdm_tag, :name => 'mytag')
74
- expect(mytag.to_s).to eq('mytag')
74
+ mytag.to_s.should == 'mytag'
75
75
  end
76
76
  end
77
77
  end
@@ -82,7 +82,7 @@ RSpec.describe Mdm::Tag, type: :model do
82
82
  FactoryGirl.build(:mdm_tag)
83
83
  end
84
84
 
85
- it { is_expected.to be_valid }
85
+ it { should be_valid }
86
86
  end
87
87
  end
88
88