metasploit-model 0.28.0-java → 0.29.0-java
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 +4 -4
- data/.travis.yml +3 -1
- data/config/locales/en.yml +0 -171
- data/lib/metasploit/model.rb +0 -2
- data/lib/metasploit/model/spec.rb +0 -130
- data/lib/metasploit/model/version.rb +1 -1
- data/spec/support/shared/examples/metasploit/model/search/operator/help.rb +4 -6
- data/spec/support/shared/examples/metasploit/model/translation.rb +1 -1
- data/spec/support/shared/examples/search_association.rb +1 -1
- data/spec/support/shared/examples/search_with.rb +4 -2
- metadata +2 -348
- data/app/models/metasploit/model/module/ancestor/spec/template.rb +0 -125
- data/app/models/metasploit/model/module/class/spec/template.rb +0 -92
- data/app/models/metasploit/model/module/instance/spec/template.rb +0 -97
- data/app/models/metasploit/model/spec/template.rb +0 -277
- data/app/validators/derivation_validator.rb +0 -17
- data/app/validators/dynamic_length_validator.rb +0 -45
- data/lib/metasploit/model/architecture.rb +0 -342
- data/lib/metasploit/model/author.rb +0 -54
- data/lib/metasploit/model/authority.rb +0 -141
- data/lib/metasploit/model/authority/bid.rb +0 -10
- data/lib/metasploit/model/authority/cve.rb +0 -10
- data/lib/metasploit/model/authority/msb.rb +0 -10
- data/lib/metasploit/model/authority/osvdb.rb +0 -10
- data/lib/metasploit/model/authority/pmasa.rb +0 -10
- data/lib/metasploit/model/authority/secunia.rb +0 -10
- data/lib/metasploit/model/authority/us_cert_vu.rb +0 -10
- data/lib/metasploit/model/authority/waraxe.rb +0 -31
- data/lib/metasploit/model/authority/zdi.rb +0 -10
- data/lib/metasploit/model/derivation.rb +0 -109
- data/lib/metasploit/model/derivation/full_name.rb +0 -19
- data/lib/metasploit/model/email_address.rb +0 -124
- data/lib/metasploit/model/module.rb +0 -20
- data/lib/metasploit/model/module/action.rb +0 -52
- data/lib/metasploit/model/module/ancestor.rb +0 -491
- data/lib/metasploit/model/module/ancestor/spec.rb +0 -6
- data/lib/metasploit/model/module/architecture.rb +0 -34
- data/lib/metasploit/model/module/author.rb +0 -40
- data/lib/metasploit/model/module/class.rb +0 -403
- data/lib/metasploit/model/module/class/spec.rb +0 -6
- data/lib/metasploit/model/module/handler.rb +0 -29
- data/lib/metasploit/model/module/instance.rb +0 -622
- data/lib/metasploit/model/module/instance/spec.rb +0 -6
- data/lib/metasploit/model/module/path.rb +0 -159
- data/lib/metasploit/model/module/platform.rb +0 -32
- data/lib/metasploit/model/module/rank.rb +0 -85
- data/lib/metasploit/model/module/reference.rb +0 -32
- data/lib/metasploit/model/module/stance.rb +0 -16
- data/lib/metasploit/model/module/target.rb +0 -78
- data/lib/metasploit/model/module/target/architecture.rb +0 -34
- data/lib/metasploit/model/module/target/platform.rb +0 -34
- data/lib/metasploit/model/module/type.rb +0 -38
- data/lib/metasploit/model/platform.rb +0 -246
- data/lib/metasploit/model/real_pathname.rb +0 -16
- data/lib/metasploit/model/reference.rb +0 -104
- data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +0 -174
- data/spec/app/models/metasploit/model/module/class/spec/template_spec.rb +0 -222
- data/spec/app/models/metasploit/model/module/instance/spec/template_spec.rb +0 -201
- data/spec/app/models/metasploit/model/search/operator/deprecated/app_spec.rb +0 -62
- data/spec/app/models/metasploit/model/search/operator/deprecated/author_spec.rb +0 -197
- data/spec/app/models/metasploit/model/search/operator/deprecated/authority_spec.rb +0 -135
- data/spec/app/models/metasploit/model/search/operator/deprecated/platform_spec.rb +0 -124
- data/spec/app/models/metasploit/model/search/operator/deprecated/ref_spec.rb +0 -387
- data/spec/app/models/metasploit/model/search/operator/deprecated/text_spec.rb +0 -399
- data/spec/app/models/metasploit/model/spec/template_spec.rb +0 -23
- data/spec/app/validators/derivation_validator_spec.rb +0 -92
- data/spec/app/validators/dynamic_length_validator_spec.rb +0 -293
- data/spec/dummy/app/models/dummy/architecture.rb +0 -92
- data/spec/dummy/app/models/dummy/author.rb +0 -15
- data/spec/dummy/app/models/dummy/authority.rb +0 -130
- data/spec/dummy/app/models/dummy/email_address.rb +0 -27
- data/spec/dummy/app/models/dummy/module/action.rb +0 -25
- data/spec/dummy/app/models/dummy/module/ancestor.rb +0 -67
- data/spec/dummy/app/models/dummy/module/architecture.rb +0 -19
- data/spec/dummy/app/models/dummy/module/author.rb +0 -28
- data/spec/dummy/app/models/dummy/module/class.rb +0 -69
- data/spec/dummy/app/models/dummy/module/instance.rb +0 -209
- data/spec/dummy/app/models/dummy/module/path.rb +0 -64
- data/spec/dummy/app/models/dummy/module/platform.rb +0 -19
- data/spec/dummy/app/models/dummy/module/rank.rb +0 -44
- data/spec/dummy/app/models/dummy/module/reference.rb +0 -19
- data/spec/dummy/app/models/dummy/module/target.rb +0 -62
- data/spec/dummy/app/models/dummy/module/target/architecture.rb +0 -19
- data/spec/dummy/app/models/dummy/module/target/platform.rb +0 -19
- data/spec/dummy/app/models/dummy/platform.rb +0 -58
- data/spec/dummy/app/models/dummy/reference.rb +0 -31
- data/spec/dummy/spec/factories/dummy/architectures.rb +0 -13
- data/spec/dummy/spec/factories/dummy/authorities.rb +0 -32
- data/spec/dummy/spec/factories/dummy/authors.rb +0 -8
- data/spec/dummy/spec/factories/dummy/email_addresses.rb +0 -8
- data/spec/dummy/spec/factories/dummy/module/actions.rb +0 -13
- data/spec/dummy/spec/factories/dummy/module/ancestors.rb +0 -45
- data/spec/dummy/spec/factories/dummy/module/architectures.rb +0 -35
- data/spec/dummy/spec/factories/dummy/module/authors.rb +0 -10
- data/spec/dummy/spec/factories/dummy/module/classes.rb +0 -40
- data/spec/dummy/spec/factories/dummy/module/instances.rb +0 -86
- data/spec/dummy/spec/factories/dummy/module/paths.rb +0 -16
- data/spec/dummy/spec/factories/dummy/module/platforms.rb +0 -35
- data/spec/dummy/spec/factories/dummy/module/ranks.rb +0 -14
- data/spec/dummy/spec/factories/dummy/module/references.rb +0 -17
- data/spec/dummy/spec/factories/dummy/module/target/architectures.rb +0 -40
- data/spec/dummy/spec/factories/dummy/module/target/platforms.rb +0 -41
- data/spec/dummy/spec/factories/dummy/module/targets.rb +0 -46
- data/spec/dummy/spec/factories/dummy/platforms.rb +0 -3
- data/spec/dummy/spec/factories/dummy/references.rb +0 -26
- data/spec/factories/metasploit/model/architectures.rb +0 -6
- data/spec/factories/metasploit/model/authorities.rb +0 -28
- data/spec/factories/metasploit/model/authors.rb +0 -9
- data/spec/factories/metasploit/model/email_addresses.rb +0 -14
- data/spec/factories/metasploit/model/module/actions.rb +0 -9
- data/spec/factories/metasploit/model/module/ancestors.rb +0 -180
- data/spec/factories/metasploit/model/module/architectures.rb +0 -15
- data/spec/factories/metasploit/model/module/classes.rb +0 -47
- data/spec/factories/metasploit/model/module/handlers.rb +0 -3
- data/spec/factories/metasploit/model/module/instances.rb +0 -83
- data/spec/factories/metasploit/model/module/paths.rb +0 -51
- data/spec/factories/metasploit/model/module/platforms.rb +0 -15
- data/spec/factories/metasploit/model/module/ranks.rb +0 -9
- data/spec/factories/metasploit/model/module/references.rb +0 -11
- data/spec/factories/metasploit/model/module/stances.rb +0 -3
- data/spec/factories/metasploit/model/module/targets.rb +0 -22
- data/spec/factories/metasploit/model/module/types.rb +0 -5
- data/spec/factories/metasploit/model/references.rb +0 -88
- data/spec/lib/metasploit/model/architecture_spec.rb +0 -52
- data/spec/lib/metasploit/model/author_spec.rb +0 -6
- data/spec/lib/metasploit/model/authority/bid_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/cve_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/msb_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/osvdb_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/pmasa_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/secunia_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/us_cert_vu_spec.rb +0 -17
- data/spec/lib/metasploit/model/authority/waraxe_spec.rb +0 -51
- data/spec/lib/metasploit/model/authority/zdi_spec.rb +0 -21
- data/spec/lib/metasploit/model/authority_spec.rb +0 -10
- data/spec/lib/metasploit/model/derivation/full_name_spec.rb +0 -75
- data/spec/lib/metasploit/model/derivation_spec.rb +0 -217
- data/spec/lib/metasploit/model/email_address_spec.rb +0 -19
- data/spec/lib/metasploit/model/module/action_spec.rb +0 -6
- data/spec/lib/metasploit/model/module/ancestor_spec.rb +0 -6
- data/spec/lib/metasploit/model/module/architecture_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/author_spec.rb +0 -6
- data/spec/lib/metasploit/model/module/class_spec.rb +0 -19
- data/spec/lib/metasploit/model/module/handler_spec.rb +0 -61
- data/spec/lib/metasploit/model/module/instance_spec.rb +0 -183
- data/spec/lib/metasploit/model/module/path_spec.rb +0 -6
- data/spec/lib/metasploit/model/module/platform_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/rank_spec.rb +0 -29
- data/spec/lib/metasploit/model/module/reference_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/stance_spec.rb +0 -30
- data/spec/lib/metasploit/model/module/target/architecture_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/target/platform_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/target_spec.rb +0 -9
- data/spec/lib/metasploit/model/module/type_spec.rb +0 -125
- data/spec/lib/metasploit/model/platform_spec.rb +0 -100
- data/spec/lib/metasploit/model/reference_spec.rb +0 -21
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/contents/metasploit_module.rb +0 -12
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents.rb +0 -10
- data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents/metasploit_module.rb +0 -15
- data/spec/support/shared/examples/derives.rb +0 -115
- data/spec/support/shared/examples/metasploit/model/architecture.rb +0 -425
- data/spec/support/shared/examples/metasploit/model/architecture/seed.rb +0 -25
- data/spec/support/shared/examples/metasploit/model/author.rb +0 -27
- data/spec/support/shared/examples/metasploit/model/authority.rb +0 -124
- data/spec/support/shared/examples/metasploit/model/authority/seed.rb +0 -49
- data/spec/support/shared/examples/metasploit/model/email_address.rb +0 -220
- data/spec/support/shared/examples/metasploit/model/module/action.rb +0 -26
- data/spec/support/shared/examples/metasploit/model/module/ancestor.rb +0 -2004
- data/spec/support/shared/examples/metasploit/model/module/ancestor/payload_factory.rb +0 -63
- data/spec/support/shared/examples/metasploit/model/module/architecture.rb +0 -36
- data/spec/support/shared/examples/metasploit/model/module/author.rb +0 -29
- data/spec/support/shared/examples/metasploit/model/module/class.rb +0 -1514
- data/spec/support/shared/examples/metasploit/model/module/handler.rb +0 -21
- data/spec/support/shared/examples/metasploit/model/module/instance.rb +0 -1384
- data/spec/support/shared/examples/metasploit/model/module/instance/class_methods.rb +0 -537
- data/spec/support/shared/examples/metasploit/model/module/instance/is_not_stanced_with_module_type.rb +0 -22
- data/spec/support/shared/examples/metasploit/model/module/instance/is_stanced_with_module_type.rb +0 -38
- data/spec/support/shared/examples/metasploit/model/module/instance/validates/dynamic_length_of.rb +0 -131
- data/spec/support/shared/examples/metasploit/model/module/path.rb +0 -493
- data/spec/support/shared/examples/metasploit/model/module/platform.rb +0 -36
- data/spec/support/shared/examples/metasploit/model/module/rank.rb +0 -92
- data/spec/support/shared/examples/metasploit/model/module/reference.rb +0 -16
- data/spec/support/shared/examples/metasploit/model/module/target.rb +0 -29
- data/spec/support/shared/examples/metasploit/model/module/target/architecture.rb +0 -56
- data/spec/support/shared/examples/metasploit/model/module/target/platform.rb +0 -56
- data/spec/support/shared/examples/metasploit/model/platform.rb +0 -213
- data/spec/support/shared/examples/metasploit/model/real_pathname.rb +0 -29
- data/spec/support/shared/examples/metasploit/model/reference.rb +0 -410
- data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/app.rb +0 -44
- data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/authority.rb +0 -72
- data/spec/support/templates/metasploit/model/module/ancestors/_attributes.rb.erb +0 -9
- data/spec/support/templates/metasploit/model/module/ancestors/_methods.rb.erb +0 -8
- data/spec/support/templates/metasploit/model/module/ancestors/_validations.rb.erb +0 -6
- data/spec/support/templates/metasploit/model/module/ancestors/base.rb.erb +0 -3
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_auxiliary.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_encoder.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_exploit.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_non_payload.rb.erb +0 -5
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_nop.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_payload.rb.erb +0 -4
- data/spec/support/templates/metasploit/model/module/ancestors/module_types/_post.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_handled.rb.erb +0 -20
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_single.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stage.rb.erb +0 -0
- data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stager.rb.erb +0 -1
- data/spec/support/templates/metasploit/model/module/classes/_methods.rb.erb +0 -9
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Platform' do
|
|
2
|
-
context 'factories' do
|
|
3
|
-
context module_platform_factory.to_s do
|
|
4
|
-
subject(module_platform_factory) do
|
|
5
|
-
FactoryGirl.build(module_platform_factory)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it { should be_valid }
|
|
9
|
-
|
|
10
|
-
context '#module_instance' do
|
|
11
|
-
subject(:module_instance) do
|
|
12
|
-
send(module_platform_factory).module_instance
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it { should be_valid }
|
|
16
|
-
|
|
17
|
-
context '#module_platforms' do
|
|
18
|
-
subject(:module_platforms) do
|
|
19
|
-
module_instance.module_platforms
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
its(:length) { should == 1 }
|
|
23
|
-
|
|
24
|
-
it "should include #{module_platform_factory}" do
|
|
25
|
-
expect(module_platforms).to include send(module_platform_factory)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
context 'validations' do
|
|
33
|
-
it { should validate_presence_of :module_instance }
|
|
34
|
-
it { should validate_presence_of :platform }
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Rank' do
|
|
2
|
-
subject(:module_rank) do
|
|
3
|
-
# need non-factory subject since ranks are only seeded and so a sequence.
|
|
4
|
-
# The sequence elements can't be used as they are frozen.
|
|
5
|
-
module_rank_class.new
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
context 'CONSTANTS' do
|
|
9
|
-
context 'NAME_BY_NUMBER' do
|
|
10
|
-
subject(:name_by_numnber) do
|
|
11
|
-
described_class::NAME_BY_NUMBER
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
its([0]) { should == 'Manual' }
|
|
15
|
-
its([100]) { should == 'Low' }
|
|
16
|
-
its([200]) { should == 'Average' }
|
|
17
|
-
its([300]) { should == 'Normal' }
|
|
18
|
-
its([400]) { should == 'Good' }
|
|
19
|
-
its([500]) { should == 'Great' }
|
|
20
|
-
its([600]) { should == 'Excellent' }
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context 'NAME_REGEXP' do
|
|
24
|
-
subject(:name_regexp) do
|
|
25
|
-
described_class::NAME_REGEXP
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it 'should not match a #name starting with a lowercase letter' do
|
|
29
|
-
name_regexp.should_not match('good')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it 'should match a #name starting with a capital letter' do
|
|
33
|
-
name_regexp.should match('Good')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'should not match a #name with a space' do
|
|
37
|
-
name_regexp.should_not match('Super Effective')
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context 'NUMBER_BY_NAME' do
|
|
42
|
-
subject(:number_by_name) do
|
|
43
|
-
described_class::NUMBER_BY_NAME
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
its(['Manual']) { should == 0 }
|
|
47
|
-
its(['Low']) { should == 100 }
|
|
48
|
-
its(['Average']) { should == 200 }
|
|
49
|
-
its(['Normal']) { should == 300 }
|
|
50
|
-
its(['Good']) { should == 400 }
|
|
51
|
-
its(['Great']) { should == 500 }
|
|
52
|
-
its(['Excellent']) { should == 600 }
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
context 'mass assignment security' do
|
|
57
|
-
it { should allow_mass_assignment_of(:name) }
|
|
58
|
-
it { should allow_mass_assignment_of(:number) }
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context 'search' do
|
|
62
|
-
context 'attributes' do
|
|
63
|
-
it_should_behave_like 'search_attribute', :name, :type => :string
|
|
64
|
-
it_should_behave_like 'search_attribute', :number, :type => :integer
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
context 'validations' do
|
|
69
|
-
context 'name' do
|
|
70
|
-
it { should ensure_inclusion_of(:name).in_array(described_class::NUMBER_BY_NAME.keys) }
|
|
71
|
-
|
|
72
|
-
context 'format' do
|
|
73
|
-
it 'should not allow #name starting with a lowercase letter' do
|
|
74
|
-
module_rank.should_not allow_value('good').for(:name)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it 'should allow #name starting with a capital letter' do
|
|
78
|
-
module_rank.should allow_value('Good').for(:name)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it 'should not allow #name with a space' do
|
|
82
|
-
module_rank.should_not allow_value('Super Effective').for(:name)
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
context 'number' do
|
|
88
|
-
it { should ensure_inclusion_of(:number).in_array(described_class::NUMBER_BY_NAME.values) }
|
|
89
|
-
it { should validate_numericality_of(:number).only_integer }
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Reference' do
|
|
2
|
-
context 'factories' do
|
|
3
|
-
context module_reference_factory.to_s do
|
|
4
|
-
subject(module_reference_factory) do
|
|
5
|
-
FactoryGirl.build(module_reference_factory)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it { should be_valid }
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
context 'validations' do
|
|
13
|
-
it { should validate_presence_of :module_instance }
|
|
14
|
-
it { should validate_presence_of :reference }
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Target' do
|
|
3
|
-
context 'factories' do
|
|
4
|
-
context module_target_factory do
|
|
5
|
-
subject(module_target_factory) do
|
|
6
|
-
FactoryGirl.build(module_target_factory)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it { should be_valid }
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
context 'mass assignment security' do
|
|
14
|
-
it { should allow_mass_assignment_of(:name) }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
context 'search' do
|
|
18
|
-
context 'attributes' do
|
|
19
|
-
it_should_behave_like 'search_attribute', :name, :type => :string
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context 'validations' do
|
|
24
|
-
it { should validate_presence_of(:module_instance) }
|
|
25
|
-
it { should validate_presence_of(:name) }
|
|
26
|
-
it { should validate_presence_of :target_architectures }
|
|
27
|
-
it { should validate_presence_of :target_platforms }
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Target::Architecture' do
|
|
2
|
-
context 'factories' do
|
|
3
|
-
context module_target_architecture_factory do
|
|
4
|
-
subject(module_target_architecture_factory) do
|
|
5
|
-
FactoryGirl.build(module_target_architecture_factory)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it { should be_valid }
|
|
9
|
-
|
|
10
|
-
context '#module_target' do
|
|
11
|
-
subject(:module_target) do
|
|
12
|
-
send(module_target_architecture_factory).module_target
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it { should be_valid }
|
|
16
|
-
|
|
17
|
-
context '#module_instance' do
|
|
18
|
-
subject(:module_instance) do
|
|
19
|
-
module_target.module_instance
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it { should be_valid }
|
|
23
|
-
|
|
24
|
-
context '#targets' do
|
|
25
|
-
subject(:targets) do
|
|
26
|
-
module_instance.targets
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
its(:length) { should == 1 }
|
|
30
|
-
|
|
31
|
-
it 'should include #module_target' do
|
|
32
|
-
expect(targets).to include module_target
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context '#target_architectures' do
|
|
38
|
-
subject(:target_architectures) do
|
|
39
|
-
module_target.target_architectures
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
its(:length) { should == 1}
|
|
43
|
-
|
|
44
|
-
it "should include #{module_target_architecture_factory}" do
|
|
45
|
-
expect(target_architectures).to include send(module_target_architecture_factory)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
context 'validations' do
|
|
53
|
-
it { should validate_presence_of :architecture }
|
|
54
|
-
it { should validate_presence_of :module_target }
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Module::Target::Platform' do
|
|
2
|
-
context 'factories' do
|
|
3
|
-
context module_target_platform_factory do
|
|
4
|
-
subject(module_target_platform_factory) do
|
|
5
|
-
FactoryGirl.build(module_target_platform_factory)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it { should be_valid }
|
|
9
|
-
|
|
10
|
-
context '#module_target' do
|
|
11
|
-
subject(:module_target) do
|
|
12
|
-
send(module_target_platform_factory).module_target
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it { should be_valid }
|
|
16
|
-
|
|
17
|
-
context '#module_instance' do
|
|
18
|
-
subject(:module_instance) do
|
|
19
|
-
module_target.module_instance
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it { should be_valid }
|
|
23
|
-
|
|
24
|
-
context '#targets' do
|
|
25
|
-
subject(:targets) do
|
|
26
|
-
module_instance.targets
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
its(:length) { should == 1 }
|
|
30
|
-
|
|
31
|
-
it 'should include #module_target' do
|
|
32
|
-
expect(targets).to include module_target
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context '#target_platforms' do
|
|
38
|
-
subject(:target_platforms) do
|
|
39
|
-
module_target.target_platforms
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
its(:length) { should == 1}
|
|
43
|
-
|
|
44
|
-
it "should include #{module_target_platform_factory}" do
|
|
45
|
-
expect(target_platforms).to include send(module_target_platform_factory)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
context 'validations' do
|
|
53
|
-
it { should validate_presence_of :module_target }
|
|
54
|
-
it { should validate_presence_of :platform }
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
Metasploit::Model::Spec.shared_examples_for 'Platform' do
|
|
2
|
-
platform_sequence = "#{factory_namespace}_#{relative_variable_name}"
|
|
3
|
-
|
|
4
|
-
subject(:platform) do
|
|
5
|
-
FactoryGirl.generate platform_sequence
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
context 'CONSTANTS' do
|
|
9
|
-
context 'SEED_RELATIVE_NAME_TRIE' do
|
|
10
|
-
subject(:seed_relative_name_tree) do
|
|
11
|
-
described_class::SEED_RELATIVE_NAME_TREE
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it { should include('AIX') }
|
|
15
|
-
it { should include('Android') }
|
|
16
|
-
it { should include('BSD') }
|
|
17
|
-
it { should include('BSDi') }
|
|
18
|
-
it { should include('Cisco') }
|
|
19
|
-
it { should include('Firefox') }
|
|
20
|
-
it { should include('FreeBSD') }
|
|
21
|
-
it { should include('HPUX') }
|
|
22
|
-
it { should include('IRIX') }
|
|
23
|
-
it { should include('Java') }
|
|
24
|
-
it { should include('Javascript') }
|
|
25
|
-
it { should include('Linux') }
|
|
26
|
-
it { should include('NetBSD') }
|
|
27
|
-
it { should include('Netware') }
|
|
28
|
-
it { should include('NodeJS') }
|
|
29
|
-
it { should include('OpenBSD') }
|
|
30
|
-
it { should include('OSX') }
|
|
31
|
-
it { should include('PHP') }
|
|
32
|
-
it { should include('Python') }
|
|
33
|
-
it { should include('Ruby') }
|
|
34
|
-
|
|
35
|
-
context "['Solaris']" do
|
|
36
|
-
subject(:solaris) do
|
|
37
|
-
seed_relative_name_tree['Solaris']
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it { should include('4') }
|
|
41
|
-
it { should include('5') }
|
|
42
|
-
it { should include('6') }
|
|
43
|
-
it { should include('7') }
|
|
44
|
-
it { should include('8') }
|
|
45
|
-
it { should include('9') }
|
|
46
|
-
it { should include('10') }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context "['Windows']" do
|
|
50
|
-
subject(:windows) do
|
|
51
|
-
seed_relative_name_tree['Windows']
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it { should include('95') }
|
|
55
|
-
|
|
56
|
-
context "['98']" do
|
|
57
|
-
subject(:ninety_eight) do
|
|
58
|
-
windows['98']
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it { should include('FE') }
|
|
62
|
-
it { should include('SE') }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it { should include('ME') }
|
|
66
|
-
|
|
67
|
-
context "['NT']" do
|
|
68
|
-
subject(:nt) do
|
|
69
|
-
windows['NT']
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it { should include('SP0') }
|
|
73
|
-
it { should include('SP1') }
|
|
74
|
-
it { should include('SP2') }
|
|
75
|
-
it { should include('SP3') }
|
|
76
|
-
it { should include('SP4') }
|
|
77
|
-
it { should include('SP5') }
|
|
78
|
-
it { should include('SP6') }
|
|
79
|
-
it { should include('SP6a') }
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
context "['2000']" do
|
|
83
|
-
subject(:two_thousand) do
|
|
84
|
-
windows['2000']
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it { should include('SP0') }
|
|
88
|
-
it { should include('SP1') }
|
|
89
|
-
it { should include('SP2') }
|
|
90
|
-
it { should include('SP3') }
|
|
91
|
-
it { should include('SP4') }
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
context "['XP']" do
|
|
95
|
-
subject(:xp) do
|
|
96
|
-
windows['XP']
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
it { should include('SP0') }
|
|
100
|
-
it { should include('SP1') }
|
|
101
|
-
it { should include('SP2') }
|
|
102
|
-
it { should include('SP3') }
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
context "['2003']" do
|
|
106
|
-
subject(:two_thousand_three) do
|
|
107
|
-
windows['2003']
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
it { should include('SP0') }
|
|
111
|
-
it { should include('SP1') }
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
context "['Vista']" do
|
|
115
|
-
subject(:vista) do
|
|
116
|
-
windows['Vista']
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it { should include('SP0') }
|
|
120
|
-
it { should include('SP1') }
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it { should include('7') }
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
it { should include('UNIX') }
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
context 'derivations' do
|
|
131
|
-
subject(:platform) do
|
|
132
|
-
# can't use seeded platforms because they are frozen
|
|
133
|
-
# have to tap to bypass mass-assignment security
|
|
134
|
-
platform_class.new.tap { |platform|
|
|
135
|
-
platform.parent = windows
|
|
136
|
-
# need to use a real name or derivation won't be valid because it won't be in fully_qualified_names.
|
|
137
|
-
platform.relative_name = 'XP'
|
|
138
|
-
}
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
let(:windows) do
|
|
142
|
-
platform_class.all.find { |platform|
|
|
143
|
-
# need to use a real name or derivation won't be valid because it won't be in fully_qualified_names.
|
|
144
|
-
platform.fully_qualified_name == 'Windows'
|
|
145
|
-
}
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it_should_behave_like 'derives', :fully_qualified_name, :validates => true
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
context 'mass assignment security' do
|
|
152
|
-
it { should allow_mass_assignment_of(:relative_name) }
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
context 'search' do
|
|
156
|
-
context 'attributes' do
|
|
157
|
-
it_should_behave_like 'search_attribute',
|
|
158
|
-
:fully_qualified_name,
|
|
159
|
-
type: {
|
|
160
|
-
set: :string
|
|
161
|
-
}
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
context 'validations' do
|
|
166
|
-
subject(:platform) do
|
|
167
|
-
# can't use seeded platforms because they are frozen
|
|
168
|
-
platform_class.new
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
it { should validate_presence_of(:relative_name) }
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
context '#derived_fully_qualified_name' do
|
|
175
|
-
subject(:derived_fully_qualified_name) do
|
|
176
|
-
platform.derived_fully_qualified_name
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
context 'with #relative_name' do
|
|
180
|
-
context 'with #parent' do
|
|
181
|
-
let(:platform) do
|
|
182
|
-
base_class.all.select { |platform|
|
|
183
|
-
platform.parent.present?
|
|
184
|
-
}.sample
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
it "should be '<parent.fully_qualified_name> <relative_name>'" do
|
|
188
|
-
derived_fully_qualified_name.should == "#{platform.parent.fully_qualified_name} #{platform.relative_name}"
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
context 'without #parent' do
|
|
193
|
-
let(:platform) do
|
|
194
|
-
base_class.all.reject { |platform|
|
|
195
|
-
platform.parent.present?
|
|
196
|
-
}.sample
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
it 'should be #relative_name' do
|
|
200
|
-
derived_fully_qualified_name.should == platform.relative_name
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
context 'without #relative_name' do
|
|
206
|
-
let(:platform) do
|
|
207
|
-
platform_class.new
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
it { should be_nil }
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
end
|