metasploit-credential 0.14.7 → 0.14.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +41 -9
- data/lib/metasploit/credential/exporter/core.rb +2 -2
- data/lib/metasploit/credential/exporter/pwdump.rb +2 -2
- data/lib/metasploit/credential/migrator.rb +1 -1
- data/lib/metasploit/credential/version.rb +12 -21
- data/spec/dummy/db/structure.sql +0 -1
- data/spec/lib/metasploit/credential/creation_spec.rb +8 -6
- data/spec/lib/metasploit/credential/exporter/core_spec.rb +85 -100
- data/spec/lib/metasploit/credential/exporter/pwdump_spec.rb +16 -14
- data/spec/lib/metasploit/credential/importer/core_spec.rb +12 -10
- data/spec/lib/metasploit/credential/importer/multi_spec.rb +6 -4
- data/spec/lib/metasploit/credential/importer/pwdump_spec.rb +13 -11
- data/spec/lib/metasploit/credential/importer/zip_spec.rb +7 -5
- data/spec/lib/metasploit/credential/migrator_spec.rb +13 -13
- data/spec/lib/metasploit/credential/version_spec.rb +141 -3
- data/spec/lib/metasploit/credential_spec.rb +15 -4
- data/spec/models/mdm/service_spec.rb +5 -3
- data/spec/models/mdm/session_spec.rb +4 -2
- data/spec/models/mdm/task_spec.rb +6 -4
- data/spec/models/mdm/user_spec.rb +4 -2
- data/spec/models/mdm/workspace_spec.rb +4 -2
- data/spec/models/metasploit/credential/blank_username_spec.rb +7 -5
- data/spec/models/metasploit/credential/core_spec.rb +45 -43
- data/spec/models/metasploit/credential/login/status_spec.rb +21 -19
- data/spec/models/metasploit/credential/login_spec.rb +38 -36
- data/spec/models/metasploit/credential/nonreplayable_hash_spec.rb +5 -3
- data/spec/models/metasploit/credential/ntlm_hash_spec.rb +15 -13
- data/spec/models/metasploit/credential/origin/cracked_password_spec.rb +7 -5
- data/spec/models/metasploit/credential/origin/import_spec.rb +10 -8
- data/spec/models/metasploit/credential/origin/manual_spec.rb +9 -7
- data/spec/models/metasploit/credential/origin/service_spec.rb +12 -10
- data/spec/models/metasploit/credential/origin/session_spec.rb +13 -11
- data/spec/models/metasploit/credential/password_hash_spec.rb +6 -4
- data/spec/models/metasploit/credential/password_spec.rb +5 -3
- data/spec/models/metasploit/credential/postgres_md5_spec.rb +6 -4
- data/spec/models/metasploit/credential/private_spec.rb +10 -8
- data/spec/models/metasploit/credential/public_spec.rb +7 -5
- data/spec/models/metasploit/credential/realm_spec.rb +16 -14
- data/spec/models/metasploit/credential/replayable_hash_spec.rb +5 -3
- data/spec/models/metasploit/credential/ssh_key_spec.rb +17 -15
- data/spec/models/metasploit/credential/username_spec.rb +8 -6
- data/spec/models/metasploit_data_models/search/visitor/relation_spec.rb +3 -1
- data/spec/spec_helper.rb +25 -95
- data/spec/support/shared/contexts/mdm/workspace.rb +1 -1
- data/spec/support/shared/examples/core_validations.rb +42 -117
- data/spec/support/shared/examples/single_table_inheritance_database_columns.rb +2 -2
- data/spec/support/shared/examples/timestamp_database_column.rb +2 -2
- metadata +8 -22
@@ -1,28 +1,30 @@
|
|
1
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Metasploit::Credential::Username do
|
2
4
|
it_should_behave_like 'Metasploit::Concern.run'
|
3
5
|
|
4
6
|
context 'database' do
|
5
7
|
context 'columns' do
|
6
8
|
it_should_behave_like 'timestamp database columns'
|
7
9
|
|
8
|
-
it {
|
10
|
+
it { should have_db_column(:username).of_type(:string).with_options(null: false) }
|
9
11
|
end
|
10
12
|
|
11
13
|
context 'indices' do
|
12
|
-
it {
|
14
|
+
it { should have_db_index(:username).unique(true) }
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
18
|
context 'mass assignment security' do
|
17
19
|
it { should_not allow_mass_assignment_of(:created_at) }
|
18
20
|
it { should_not allow_mass_assignment_of(:updated_at) }
|
19
|
-
it {
|
21
|
+
it { should allow_mass_assignment_of(:username) }
|
20
22
|
end
|
21
23
|
|
22
24
|
context 'validations' do
|
23
25
|
context 'username' do
|
24
|
-
it {
|
25
|
-
it {
|
26
|
+
it { should validate_presence_of :username }
|
27
|
+
it { should validate_uniqueness_of :username }
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
data/spec/spec_helper.rb
CHANGED
@@ -26,114 +26,44 @@ require 'rspec/rails'
|
|
26
26
|
# in spec/support/ and its subdirectories from this gem and metasploit-concern
|
27
27
|
#
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
gem_specification.gem_dir,
|
35
|
-
Metasploit::Concern.root,
|
36
|
-
Metasploit::Credential::Engine.root,
|
37
|
-
Metasploit::Model::Engine.root,
|
38
|
-
MetasploitDataModels::Engine.root
|
29
|
+
rooteds = [
|
30
|
+
Metasploit::Concern,
|
31
|
+
Metasploit::Credential::Engine,
|
32
|
+
Metasploit::Model::Engine,
|
33
|
+
MetasploitDataModels::Engine
|
39
34
|
]
|
40
35
|
|
41
|
-
|
42
|
-
Dir[
|
36
|
+
rooteds.each do |rooted|
|
37
|
+
Dir[rooted.root.join('spec', 'support', '**', '*.rb')].each do |f|
|
43
38
|
require f
|
44
39
|
end
|
45
40
|
end
|
46
41
|
|
47
|
-
|
48
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
49
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
50
|
-
# The generated `.rspec` file contains `--require spec_helper` which will cause
|
51
|
-
# this file to always be loaded, without a need to explicitly require it in any
|
52
|
-
# files.
|
53
|
-
#
|
54
|
-
# Given that it is always loaded, you are encouraged to keep this file as
|
55
|
-
# light-weight as possible. Requiring heavyweight dependencies from this file
|
56
|
-
# will add to the boot time of your test suite on EVERY test run, even for an
|
57
|
-
# individual file that may not need all of that loaded. Instead, consider making
|
58
|
-
# a separate helper file that requires the additional dependencies and performs
|
59
|
-
# the additional setup, and require it from the spec files that actually need
|
60
|
-
# it.
|
61
|
-
#
|
62
|
-
# The `.rspec` file also contains a few flags that are not defaults but that
|
63
|
-
# users commonly want.
|
64
|
-
#
|
65
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
66
42
|
RSpec.configure do |config|
|
67
|
-
#
|
68
|
-
#
|
69
|
-
#
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
# be_bigger_than(2).and_smaller_than(4).description
|
75
|
-
# # => "be bigger than 2 and smaller than 4"
|
76
|
-
# ...rather than:
|
77
|
-
# # => "be bigger than 2"
|
78
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
79
|
-
end
|
80
|
-
|
81
|
-
# rspec-mocks config goes here. You can use an alternate test double
|
82
|
-
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
83
|
-
config.mock_with :rspec do |mocks|
|
84
|
-
# Prevents you from mocking or stubbing a method that does not exist on
|
85
|
-
# a real object. This is generally recommended, and will default to
|
86
|
-
# `true` in RSpec 4.
|
87
|
-
mocks.verify_partial_doubles = true
|
88
|
-
end
|
89
|
-
|
90
|
-
# These two settings work together to allow you to limit a spec run
|
91
|
-
# to individual examples or groups you care about by tagging them with
|
92
|
-
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
93
|
-
# get run.
|
94
|
-
config.filter_run :focus
|
95
|
-
config.run_all_when_everything_filtered = true
|
96
|
-
|
97
|
-
# Limits the available syntax to the non-monkey patched syntax that is
|
98
|
-
# recommended. For more details, see:
|
99
|
-
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
100
|
-
# - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
101
|
-
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
102
|
-
config.disable_monkey_patching!
|
43
|
+
# ## Mock Framework
|
44
|
+
#
|
45
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
46
|
+
#
|
47
|
+
# config.mock_with :mocha
|
48
|
+
# config.mock_with :flexmock
|
49
|
+
# config.mock_with :rr
|
103
50
|
|
104
|
-
#
|
105
|
-
|
106
|
-
config.warnings = true
|
51
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
52
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
107
53
|
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
|
112
|
-
# Use the documentation formatter for detailed output,
|
113
|
-
# unless a formatter has already been configured
|
114
|
-
# (e.g. via a command-line flag).
|
115
|
-
config.default_formatter = 'doc'
|
116
|
-
end
|
54
|
+
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
55
|
+
# examples within a transaction, remove the following line or assign false
|
56
|
+
# instead of true.
|
57
|
+
config.use_transactional_fixtures = true
|
117
58
|
|
118
|
-
#
|
119
|
-
#
|
120
|
-
#
|
121
|
-
config.
|
59
|
+
# If true, the base class of anonymous controllers will be inferred
|
60
|
+
# automatically. This will be the default behavior in future versions of
|
61
|
+
# rspec-rails.
|
62
|
+
config.infer_base_class_for_anonymous_controllers = false
|
122
63
|
|
123
64
|
# Run specs in random order to surface order dependencies. If you find an
|
124
65
|
# order dependency and want to debug it, you can fix the order by providing
|
125
66
|
# the seed, which is printed after each run.
|
126
67
|
# --seed 1234
|
127
|
-
config.order =
|
128
|
-
|
129
|
-
# Seed global randomization in this process using the `--seed` CLI option.
|
130
|
-
# Setting this allows you to use `--seed` to deterministically reproduce
|
131
|
-
# test failures related to randomization by passing the same `--seed` value
|
132
|
-
# as the one that triggered the failure.
|
133
|
-
Kernel.srand config.seed
|
134
|
-
|
135
|
-
# If you're not using ActiveRecord, or you'd prefer not to run each of your
|
136
|
-
# examples within a transaction, remove the following line or assign false
|
137
|
-
# instead of true.
|
138
|
-
config.use_transactional_fixtures = true
|
68
|
+
config.order = "random"
|
139
69
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
shared_context 'Mdm::Workspace' do
|
2
2
|
before(:each) do
|
3
3
|
# TODO remove Rex usage from Mdm as it is not a declared dependency
|
4
|
-
|
4
|
+
Mdm::Workspace.any_instance.stub(:valid_ip_or_range?).and_return(true)
|
5
5
|
end
|
6
6
|
end
|
@@ -51,6 +51,18 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
51
51
|
# lets
|
52
52
|
#
|
53
53
|
|
54
|
+
let(:first_private) {
|
55
|
+
FactoryGirl.create(:metasploit_credential_private)
|
56
|
+
}
|
57
|
+
|
58
|
+
let(:first_public) {
|
59
|
+
FactoryGirl.create(:metasploit_credential_username)
|
60
|
+
}
|
61
|
+
|
62
|
+
let(:first_realm) {
|
63
|
+
FactoryGirl.create(:metasploit_credential_realm)
|
64
|
+
}
|
65
|
+
|
54
66
|
let(:first_workspace) {
|
55
67
|
FactoryGirl.create(:mdm_workspace)
|
56
68
|
}
|
@@ -84,10 +96,27 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
84
96
|
}
|
85
97
|
}
|
86
98
|
|
99
|
+
|
87
100
|
let(:second_metasploit_credential_core) {
|
88
101
|
FactoryGirl.build( factory_name, second_factory_options)
|
89
102
|
}
|
90
103
|
|
104
|
+
let(:second_private) {
|
105
|
+
FactoryGirl.create(:metasploit_credential_private)
|
106
|
+
}
|
107
|
+
|
108
|
+
let(:second_public) {
|
109
|
+
FactoryGirl.create(:metasploit_credential_username)
|
110
|
+
}
|
111
|
+
|
112
|
+
let(:second_realm) {
|
113
|
+
FactoryGirl.create(:metasploit_credential_realm)
|
114
|
+
}
|
115
|
+
|
116
|
+
let(:second_workspace) {
|
117
|
+
FactoryGirl.create(:mdm_workspace)
|
118
|
+
}
|
119
|
+
|
91
120
|
#
|
92
121
|
# let!s
|
93
122
|
#
|
@@ -100,26 +129,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
100
129
|
context 'database' do
|
101
130
|
context 'indices' do
|
102
131
|
context 'foreign keys' do
|
103
|
-
let(:first_private) {
|
104
|
-
FactoryGirl.create(:metasploit_credential_private)
|
105
|
-
}
|
106
|
-
|
107
|
-
let(:second_public) {
|
108
|
-
FactoryGirl.create(:metasploit_credential_username)
|
109
|
-
}
|
110
|
-
|
111
|
-
let(:second_private) {
|
112
|
-
FactoryGirl.create(:metasploit_credential_private)
|
113
|
-
}
|
114
|
-
|
115
|
-
let(:second_realm) {
|
116
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
117
|
-
}
|
118
|
-
|
119
|
-
let(:second_workspace) {
|
120
|
-
FactoryGirl.create(:mdm_workspace)
|
121
|
-
}
|
122
|
-
|
123
132
|
shared_examples_for 'potential collision' do |options={}|
|
124
133
|
options.assert_valid_keys(:collision, :index)
|
125
134
|
|
@@ -189,10 +198,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
189
198
|
nil
|
190
199
|
}
|
191
200
|
|
192
|
-
let(:first_public) {
|
193
|
-
FactoryGirl.create(:metasploit_credential_username)
|
194
|
-
}
|
195
|
-
|
196
201
|
let(:first_realm) {
|
197
202
|
nil
|
198
203
|
}
|
@@ -219,10 +224,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
219
224
|
|
220
225
|
options.assert_valid_keys(:collision, :private, :public, :workspace)
|
221
226
|
|
222
|
-
let(:first_public) {
|
223
|
-
FactoryGirl.create(:metasploit_credential_username)
|
224
|
-
}
|
225
|
-
|
226
227
|
let(:first_realm) {
|
227
228
|
nil
|
228
229
|
}
|
@@ -251,10 +252,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
251
252
|
nil
|
252
253
|
}
|
253
254
|
|
254
|
-
let(:first_realm) {
|
255
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
256
|
-
}
|
257
|
-
|
258
255
|
let(:second_public) {
|
259
256
|
nil
|
260
257
|
}
|
@@ -279,14 +276,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
279
276
|
nil
|
280
277
|
}
|
281
278
|
|
282
|
-
let(:first_public) {
|
283
|
-
FactoryGirl.create(:metasploit_credential_username)
|
284
|
-
}
|
285
|
-
|
286
|
-
let(:first_realm) {
|
287
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
288
|
-
}
|
289
|
-
|
290
279
|
let(:second_private) {
|
291
280
|
nil
|
292
281
|
}
|
@@ -307,14 +296,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
307
296
|
|
308
297
|
options.assert_valid_keys(:collision, :private, :public, :realm, :workspace)
|
309
298
|
|
310
|
-
let(:first_public) {
|
311
|
-
FactoryGirl.create(:metasploit_credential_username)
|
312
|
-
}
|
313
|
-
|
314
|
-
let(:first_realm) {
|
315
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
316
|
-
}
|
317
|
-
|
318
299
|
context_with_correlation(options, :workspace) do
|
319
300
|
context_with_correlation(options, :realm) do
|
320
301
|
context_with_correlation(options, :public) do
|
@@ -585,29 +566,9 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
585
566
|
end
|
586
567
|
|
587
568
|
context 'validations' do
|
588
|
-
it {
|
569
|
+
it { should validate_presence_of :workspace }
|
589
570
|
|
590
571
|
context 'of uniqueness' do
|
591
|
-
let(:first_private) {
|
592
|
-
FactoryGirl.create(:metasploit_credential_private)
|
593
|
-
}
|
594
|
-
|
595
|
-
let(:second_public) {
|
596
|
-
FactoryGirl.create(:metasploit_credential_username)
|
597
|
-
}
|
598
|
-
|
599
|
-
let(:second_private) {
|
600
|
-
FactoryGirl.create(:metasploit_credential_private)
|
601
|
-
}
|
602
|
-
|
603
|
-
let(:second_realm) {
|
604
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
605
|
-
}
|
606
|
-
|
607
|
-
let(:second_workspace) {
|
608
|
-
FactoryGirl.create(:mdm_workspace)
|
609
|
-
}
|
610
|
-
|
611
572
|
shared_examples_for 'potential collision' do |options={}|
|
612
573
|
options.assert_valid_keys(:attribute, :collision, :message)
|
613
574
|
|
@@ -629,7 +590,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
629
590
|
).to include options.fetch(:message)
|
630
591
|
end
|
631
592
|
else
|
632
|
-
it {
|
593
|
+
it { should be_valid }
|
633
594
|
end
|
634
595
|
end
|
635
596
|
|
@@ -681,10 +642,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
681
642
|
nil
|
682
643
|
}
|
683
644
|
|
684
|
-
let(:first_public) {
|
685
|
-
FactoryGirl.create(:metasploit_credential_username)
|
686
|
-
}
|
687
|
-
|
688
645
|
let(:first_realm) {
|
689
646
|
nil
|
690
647
|
}
|
@@ -716,10 +673,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
716
673
|
nil
|
717
674
|
}
|
718
675
|
|
719
|
-
let(:first_public) {
|
720
|
-
FactoryGirl.create(:metasploit_credential_username)
|
721
|
-
}
|
722
|
-
|
723
676
|
let(:second_realm) {
|
724
677
|
nil
|
725
678
|
}
|
@@ -745,10 +698,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
745
698
|
nil
|
746
699
|
}
|
747
700
|
|
748
|
-
let(:first_realm) {
|
749
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
750
|
-
}
|
751
|
-
|
752
701
|
let(:second_public) {
|
753
702
|
nil
|
754
703
|
}
|
@@ -774,14 +723,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
774
723
|
nil
|
775
724
|
}
|
776
725
|
|
777
|
-
let(:first_public) {
|
778
|
-
FactoryGirl.create(:metasploit_credential_username)
|
779
|
-
}
|
780
|
-
|
781
|
-
let(:first_realm) {
|
782
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
783
|
-
}
|
784
|
-
|
785
726
|
let(:second_private) {
|
786
727
|
nil
|
787
728
|
}
|
@@ -803,14 +744,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
803
744
|
|
804
745
|
options.assert_valid_keys(:collision, :private, :public, :realm, :workspace)
|
805
746
|
|
806
|
-
let(:first_public) {
|
807
|
-
FactoryGirl.create(:metasploit_credential_username)
|
808
|
-
}
|
809
|
-
|
810
|
-
let(:first_realm) {
|
811
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
812
|
-
}
|
813
|
-
|
814
747
|
context_with_correlation(options, :workspace) do
|
815
748
|
context_with_correlation(options, :realm) do
|
816
749
|
context_with_correlation(options, :public) do
|
@@ -1094,14 +1027,6 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1094
1027
|
second_metasploit_credential_core
|
1095
1028
|
}
|
1096
1029
|
|
1097
|
-
let(:first_public) {
|
1098
|
-
FactoryGirl.create(:metasploit_credential_username)
|
1099
|
-
}
|
1100
|
-
|
1101
|
-
let(:first_realm) {
|
1102
|
-
FactoryGirl.create(:metasploit_credential_realm)
|
1103
|
-
}
|
1104
|
-
|
1105
1030
|
let(:second_private) {
|
1106
1031
|
first_private
|
1107
1032
|
}
|
@@ -1128,7 +1053,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1128
1053
|
nil
|
1129
1054
|
}
|
1130
1055
|
|
1131
|
-
it {
|
1056
|
+
it { should be_valid }
|
1132
1057
|
end
|
1133
1058
|
|
1134
1059
|
context 'with same workspace without realm with same public without private' do
|
@@ -1140,7 +1065,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1140
1065
|
nil
|
1141
1066
|
}
|
1142
1067
|
|
1143
|
-
it {
|
1068
|
+
it { should be_valid }
|
1144
1069
|
end
|
1145
1070
|
|
1146
1071
|
context 'with same workspace with same realm without public with same private' do
|
@@ -1148,7 +1073,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1148
1073
|
nil
|
1149
1074
|
}
|
1150
1075
|
|
1151
|
-
it {
|
1076
|
+
it { should be_valid }
|
1152
1077
|
end
|
1153
1078
|
|
1154
1079
|
context 'with same workspace with same realm with same public without private' do
|
@@ -1160,7 +1085,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1160
1085
|
nil
|
1161
1086
|
}
|
1162
1087
|
|
1163
|
-
it {
|
1088
|
+
it { should be_valid }
|
1164
1089
|
end
|
1165
1090
|
end
|
1166
1091
|
|
@@ -1182,7 +1107,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1182
1107
|
nil
|
1183
1108
|
}
|
1184
1109
|
|
1185
|
-
it {
|
1110
|
+
it { should be_valid }
|
1186
1111
|
end
|
1187
1112
|
|
1188
1113
|
context 'with same workspace without realm with public with same private' do
|
@@ -1190,7 +1115,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1190
1115
|
FactoryGirl.create(:metasploit_credential_public)
|
1191
1116
|
}
|
1192
1117
|
|
1193
|
-
it {
|
1118
|
+
it { should be_valid }
|
1194
1119
|
end
|
1195
1120
|
|
1196
1121
|
context 'with same workspace with realm without public with same private' do
|
@@ -1198,7 +1123,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1198
1123
|
FactoryGirl.create(:metasploit_credential_realm)
|
1199
1124
|
}
|
1200
1125
|
|
1201
|
-
it {
|
1126
|
+
it { should be_valid }
|
1202
1127
|
end
|
1203
1128
|
end
|
1204
1129
|
|
@@ -1216,7 +1141,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1216
1141
|
FactoryGirl.create(:metasploit_credential_private)
|
1217
1142
|
}
|
1218
1143
|
|
1219
|
-
it {
|
1144
|
+
it { should be_valid }
|
1220
1145
|
end
|
1221
1146
|
|
1222
1147
|
context 'with workspace with realm without public with private' do
|
@@ -1228,7 +1153,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1228
1153
|
FactoryGirl.create(:metasploit_credential_realm)
|
1229
1154
|
}
|
1230
1155
|
|
1231
|
-
it {
|
1156
|
+
it { should be_valid}
|
1232
1157
|
end
|
1233
1158
|
end
|
1234
1159
|
|
@@ -1246,7 +1171,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1246
1171
|
FactoryGirl.create(:metasploit_credential_realm)
|
1247
1172
|
}
|
1248
1173
|
|
1249
|
-
it {
|
1174
|
+
it { should be_valid }
|
1250
1175
|
end
|
1251
1176
|
end
|
1252
1177
|
|
@@ -1264,7 +1189,7 @@ shared_examples_for 'Metasploit::Credential::CoreValidations' do
|
|
1264
1189
|
FactoryGirl.create(:metasploit_credential_public)
|
1265
1190
|
}
|
1266
1191
|
|
1267
|
-
it {
|
1192
|
+
it { should be_valid }
|
1268
1193
|
end
|
1269
1194
|
end
|
1270
1195
|
end
|