metasploit_data_models 0.17.2 → 0.17.3.pre.metasploit.pre.concern
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.
- checksums.yaml +8 -8
- data/app/models/mdm/api_key.rb +1 -1
- data/app/models/mdm/client.rb +1 -1
- data/app/models/mdm/cred.rb +4 -2
- data/app/models/mdm/event.rb +1 -1
- data/app/models/mdm/exploit_attempt.rb +1 -1
- data/app/models/mdm/exploited_host.rb +1 -1
- data/app/models/mdm/host.rb +1 -1
- data/app/models/mdm/host_detail.rb +1 -1
- data/app/models/mdm/host_tag.rb +1 -1
- data/app/models/mdm/listener.rb +1 -2
- data/app/models/mdm/loot.rb +3 -1
- data/app/models/mdm/macro.rb +1 -1
- data/app/models/mdm/mod_ref.rb +1 -1
- data/app/models/mdm/module/action.rb +1 -1
- data/app/models/mdm/module/arch.rb +1 -1
- data/app/models/mdm/module/author.rb +1 -1
- data/app/models/mdm/module/detail.rb +1 -1
- data/app/models/mdm/module/mixin.rb +1 -1
- data/app/models/mdm/module/platform.rb +1 -1
- data/app/models/mdm/module/ref.rb +1 -1
- data/app/models/mdm/module/target.rb +1 -1
- data/app/models/mdm/nexpose_console.rb +1 -1
- data/app/models/mdm/note.rb +3 -1
- data/app/models/mdm/profile.rb +1 -1
- data/app/models/mdm/ref.rb +1 -1
- data/app/models/mdm/route.rb +1 -1
- data/app/models/mdm/service.rb +1 -1
- data/app/models/mdm/session.rb +3 -1
- data/app/models/mdm/session_event.rb +1 -1
- data/app/models/mdm/tag.rb +1 -1
- data/app/models/mdm/task.rb +3 -1
- data/app/models/mdm/task_cred.rb +2 -0
- data/app/models/mdm/task_host.rb +2 -0
- data/app/models/mdm/task_service.rb +2 -0
- data/app/models/mdm/task_session.rb +2 -0
- data/app/models/mdm/user.rb +1 -1
- data/app/models/mdm/vuln.rb +3 -1
- data/app/models/mdm/vuln_attempt.rb +1 -1
- data/app/models/mdm/vuln_detail.rb +1 -1
- data/app/models/mdm/vuln_ref.rb +1 -1
- data/app/models/mdm/web_form.rb +1 -1
- data/app/models/mdm/web_page.rb +1 -1
- data/app/models/mdm/web_site.rb +1 -1
- data/app/models/mdm/web_vuln.rb +1 -1
- data/app/models/mdm/wmap_request.rb +1 -1
- data/app/models/mdm/wmap_target.rb +1 -1
- data/app/models/mdm/workspace.rb +3 -1
- data/app/models/metasploit_data_models/search/visitor/attribute.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/includes.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/joins.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/method.rb +2 -0
- data/app/models/metasploit_data_models/search/visitor/relation.rb +4 -0
- data/app/models/metasploit_data_models/search/visitor/where.rb +2 -0
- data/lib/metasploit_data_models.rb +1 -0
- data/lib/metasploit_data_models/version.rb +1 -1
- data/metasploit_data_models.gemspec +1 -0
- data/spec/app/models/mdm/api_key_spec.rb +5 -0
- data/spec/app/models/mdm/client_spec.rb +2 -0
- data/spec/app/models/mdm/cred_spec.rb +1 -0
- data/spec/app/models/mdm/{events_spec.rb → event_spec.rb} +1 -0
- data/spec/app/models/mdm/exploit_attempt_spec.rb +1 -0
- data/spec/app/models/mdm/exploited_host_spec.rb +34 -32
- data/spec/app/models/mdm/host_detail_spec.rb +1 -0
- data/spec/app/models/mdm/host_spec.rb +2 -0
- data/spec/app/models/mdm/host_tag_spec.rb +1 -0
- data/spec/app/models/mdm/listener_spec.rb +1 -0
- data/spec/app/models/mdm/loot_spec.rb +66 -64
- data/spec/app/models/mdm/macro_spec.rb +5 -0
- data/spec/app/models/mdm/mod_ref_spec.rb +5 -0
- data/spec/app/models/mdm/module/action_spec.rb +3 -0
- data/spec/app/models/mdm/module/arch_spec.rb +3 -0
- data/spec/app/models/mdm/module/author_spec.rb +3 -0
- data/spec/app/models/mdm/module/detail_spec.rb +2 -0
- data/spec/app/models/mdm/module/mixin_spec.rb +3 -0
- data/spec/app/models/mdm/module/platform_spec.rb +3 -0
- data/spec/app/models/mdm/module/ref_spec.rb +3 -0
- data/spec/app/models/mdm/module/target_spec.rb +3 -0
- data/spec/app/models/mdm/nexpose_console_spec.rb +1 -0
- data/spec/app/models/mdm/note_spec.rb +1 -0
- data/spec/app/models/mdm/profile_spec.rb +5 -0
- data/spec/app/models/mdm/ref_spec.rb +2 -0
- data/spec/app/models/mdm/route_spec.rb +1 -0
- data/spec/app/models/mdm/service_spec.rb +1 -0
- data/spec/app/models/mdm/session_event_spec.rb +2 -0
- data/spec/app/models/mdm/session_spec.rb +1 -0
- data/spec/app/models/mdm/tag_spec.rb +1 -0
- data/spec/app/models/mdm/{task_creds_spec.rb → task_cred_spec.rb} +1 -0
- data/spec/app/models/mdm/task_host_spec.rb +1 -0
- data/spec/app/models/mdm/task_service_spec.rb +1 -0
- data/spec/app/models/mdm/{task_sessions_spec.rb → task_session_spec.rb} +1 -0
- data/spec/app/models/mdm/task_spec.rb +1 -0
- data/spec/app/models/mdm/user_spec.rb +1 -0
- data/spec/app/models/mdm/vuln_attempt_spec.rb +1 -0
- data/spec/app/models/mdm/{vuln_details_spec.rb → vuln_detail_spec.rb} +1 -0
- data/spec/app/models/mdm/vuln_ref_spec.rb +2 -0
- data/spec/app/models/mdm/vuln_spec.rb +2 -0
- data/spec/app/models/mdm/web_form_spec.rb +1 -0
- data/spec/app/models/mdm/web_page_spec.rb +1 -0
- data/spec/app/models/mdm/web_site_spec.rb +1 -0
- data/spec/app/models/mdm/web_vuln_spec.rb +2 -0
- data/spec/app/models/mdm/wmap_request_spec.rb +5 -0
- data/spec/app/models/mdm/wmap_target_spec.rb +5 -0
- data/spec/app/models/mdm/workspace_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +2 -0
- data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +2 -0
- data/spec/spec_helper.rb +11 -3
- metadata +38 -12
@@ -4,5 +4,5 @@ module MetasploitDataModels
|
|
4
4
|
# metasploit-framework/data/sql/migrate to db/migrate in this project, not all models have specs that verify the
|
5
5
|
# migrations (with have_db_column and have_db_index) and certain models may not be shared between metasploit-framework
|
6
6
|
# and pro, so models may be removed in the future. Because of the unstable API the version should remain below 1.0.0
|
7
|
-
VERSION = '0.17.
|
7
|
+
VERSION = '0.17.3-metasploit-concern'
|
8
8
|
end
|
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
|
|
38
38
|
# @see MSP-2971
|
39
39
|
s.add_runtime_dependency 'activerecord', '>= 3.2.13', '< 4.0.0'
|
40
40
|
s.add_runtime_dependency 'activesupport'
|
41
|
+
s.add_runtime_dependency 'metasploit-concern', '~> 0.1.0'
|
41
42
|
s.add_runtime_dependency 'metasploit-model', '>= 0.24.1.pre.semantic.pre.versioning.pre.2.pre.0', '< 0.25'
|
42
43
|
|
43
44
|
if RUBY_PLATFORM =~ /java/
|
@@ -1,38 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mdm::ExploitedHost do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
4
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
5
|
+
|
6
|
+
context 'associations' do
|
7
|
+
it { should belong_to(:host).class_name('Mdm::Host') }
|
8
|
+
it { should belong_to(:service).class_name('Mdm::Service') }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'database' do
|
12
|
+
|
13
|
+
context 'timestamps'do
|
14
|
+
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
15
|
+
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'columns' do
|
19
|
+
it { should have_db_column(:host_id).of_type(:integer).with_options(:null => false) }
|
20
|
+
it { should have_db_column(:service_id).of_type(:integer) }
|
21
|
+
it { should have_db_column(:name).of_type(:string) }
|
22
|
+
it { should have_db_column(:session_uuid).of_type(:string) }
|
23
|
+
it { should have_db_column(:payload).of_type(:string) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#destroy' do
|
28
|
+
it 'should successfully destroy the object and all dependent objects' do
|
29
|
+
exploited_host = FactoryGirl.create(:mdm_exploited_host)
|
30
|
+
expect {
|
31
|
+
exploited_host.destroy
|
32
|
+
}.to_not raise_error
|
33
|
+
expect {
|
34
|
+
exploited_host.reload
|
35
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
36
|
+
end
|
37
|
+
end
|
36
38
|
|
37
39
|
context 'factory' do
|
38
40
|
it 'should be valid' do
|
@@ -1,77 +1,79 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mdm::Loot do
|
4
|
-
|
5
|
-
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
6
|
-
it { should belong_to(:service).class_name('Mdm::Service') }
|
7
|
-
it { should belong_to(:host).class_name('Mdm::Host') }
|
8
|
-
end
|
4
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
9
5
|
|
10
|
-
|
6
|
+
context 'associations' do
|
7
|
+
it { should belong_to(:workspace).class_name('Mdm::Workspace') }
|
8
|
+
it { should belong_to(:service).class_name('Mdm::Service') }
|
9
|
+
it { should belong_to(:host).class_name('Mdm::Host') }
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
14
|
-
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
15
|
-
end
|
12
|
+
context 'database' do
|
16
13
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
it { should have_db_column(:ltype).of_type(:string) }
|
22
|
-
it { should have_db_column(:path).of_type(:string) }
|
23
|
-
it { should have_db_column(:data).of_type(:text) }
|
24
|
-
it { should have_db_column(:content_type).of_type(:string) }
|
25
|
-
it { should have_db_column(:name).of_type(:text) }
|
26
|
-
it { should have_db_column(:info).of_type(:text) }
|
27
|
-
end
|
28
|
-
end
|
14
|
+
context 'timestamps'do
|
15
|
+
it { should have_db_column(:created_at).of_type(:datetime).with_options(:null => false) }
|
16
|
+
it { should have_db_column(:updated_at).of_type(:datetime).with_options(:null => false) }
|
17
|
+
end
|
29
18
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
context 'columns' do
|
20
|
+
it { should have_db_column(:workspace_id).of_type(:integer).with_options(:null => false, :default =>1) }
|
21
|
+
it { should have_db_column(:host_id).of_type(:integer) }
|
22
|
+
it { should have_db_column(:service_id).of_type(:integer) }
|
23
|
+
it { should have_db_column(:ltype).of_type(:string) }
|
24
|
+
it { should have_db_column(:path).of_type(:string) }
|
25
|
+
it { should have_db_column(:data).of_type(:text) }
|
26
|
+
it { should have_db_column(:content_type).of_type(:string) }
|
27
|
+
it { should have_db_column(:name).of_type(:text) }
|
28
|
+
it { should have_db_column(:info).of_type(:text) }
|
29
|
+
end
|
30
|
+
end
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
expect {
|
44
|
-
loot.reload
|
45
|
-
}.to raise_error(ActiveRecord::RecordNotFound)
|
46
|
-
end
|
47
|
-
end
|
32
|
+
context 'factory' do
|
33
|
+
it 'should be valid' do
|
34
|
+
loot = FactoryGirl.build(:mdm_loot)
|
35
|
+
loot.should be_valid
|
36
|
+
end
|
37
|
+
end
|
48
38
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
39
|
+
context '#destroy' do
|
40
|
+
it 'should successfully destroy the object' do
|
41
|
+
loot = FactoryGirl.create(:mdm_loot)
|
42
|
+
expect {
|
43
|
+
loot.destroy
|
44
|
+
}.to_not raise_error
|
45
|
+
expect {
|
46
|
+
loot.reload
|
47
|
+
}.to raise_error(ActiveRecord::RecordNotFound)
|
48
|
+
end
|
49
|
+
end
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
51
|
+
context 'scopes' do
|
52
|
+
context 'search' do
|
53
|
+
it 'should match on ltype' do
|
54
|
+
myloot = FactoryGirl.create(:mdm_loot, :ltype => 'find.this.ltype')
|
55
|
+
Mdm::Loot.search('find.this.ltype').should include(myloot)
|
56
|
+
end
|
60
57
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
66
|
-
end
|
58
|
+
it 'should match on name' do
|
59
|
+
myloot = FactoryGirl.create(:mdm_loot, :name => 'Find This')
|
60
|
+
Mdm::Loot.search('Find This').should include(myloot)
|
61
|
+
end
|
67
62
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
63
|
+
it 'should match on info' do
|
64
|
+
myloot = FactoryGirl.create(:mdm_loot, :info => 'Find This')
|
65
|
+
Mdm::Loot.search('Find This').should include(myloot)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'callbacks' do
|
71
|
+
context 'before_destroy' do
|
72
|
+
it 'should call #delete_file' do
|
73
|
+
myloot = FactoryGirl.create(:mdm_loot)
|
74
|
+
myloot.should_receive(:delete_file)
|
75
|
+
myloot.destroy
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
77
79
|
end
|
@@ -47,6 +47,8 @@ describe Mdm::Module::Detail do
|
|
47
47
|
]
|
48
48
|
end
|
49
49
|
|
50
|
+
it_should_behave_like 'Metasploit::Concern.run'
|
51
|
+
|
50
52
|
context 'associations' do
|
51
53
|
it { should have_many(:actions).class_name('Mdm::Module::Action').dependent(:destroy) }
|
52
54
|
it { should have_many(:archs).class_name('Mdm::Module::Arch').dependent(:destroy) }
|