86 lines
2.5 KiB
Ruby
86 lines
2.5 KiB
Ruby
require 'rspec'
|
|
|
|
RSpec.describe 'Metasploit Exceptions' do
|
|
describe Msf::OptionValidateError do
|
|
describe '#new' do
|
|
it 'supports no options being provided' do
|
|
subject = described_class.new
|
|
expect(subject.options).to eq([])
|
|
expect(subject.reasons).to eq({})
|
|
end
|
|
|
|
it 'supports a custom message' do
|
|
subject = described_class.new(message: 'custom message')
|
|
expect(subject.options).to eq([])
|
|
expect(subject.reasons).to eq({})
|
|
expect(subject.message).to eq 'custom message'
|
|
end
|
|
|
|
it 'supports a default message' do
|
|
subject = described_class.new(['OptionName'])
|
|
expect(subject.options).to eq(['OptionName'])
|
|
expect(subject.reasons).to eq({})
|
|
expect(subject.message).to eq 'The following options failed to validate: OptionName.'
|
|
end
|
|
|
|
it 'supports only options being provided' do
|
|
subject = described_class.new(['RHOSTS'])
|
|
expect(subject.options).to eq(['RHOSTS'])
|
|
expect(subject.reasons).to eq({})
|
|
end
|
|
|
|
it 'supports a hash of options being provided, with associated string error reasons' do
|
|
subject = described_class.new(
|
|
{
|
|
'RHOSTS' => 'Human readable description'
|
|
}
|
|
)
|
|
expect(subject.options).to eq(['RHOSTS'])
|
|
expect(subject.reasons).to eq(
|
|
{
|
|
'RHOSTS' => ['Human readable description']
|
|
}
|
|
)
|
|
end
|
|
|
|
it 'supports a hash of options being provided, with an array of string error reasons' do
|
|
subject = described_class.new(
|
|
{
|
|
'RHOSTS' => [
|
|
'Human readable description 1',
|
|
'Human readable description 2',
|
|
]
|
|
}
|
|
)
|
|
expect(subject.options).to eq(['RHOSTS'])
|
|
expect(subject.reasons).to eq(
|
|
{
|
|
'RHOSTS' => [
|
|
'Human readable description 1',
|
|
'Human readable description 2',
|
|
]
|
|
}
|
|
)
|
|
end
|
|
|
|
it 'supports both options and error reasons being provided' do
|
|
subject = described_class.new(
|
|
[
|
|
'RHOSTS',
|
|
'RPORT'
|
|
],
|
|
reasons: {
|
|
'RHOSTS' => 'Human readable description'
|
|
}
|
|
)
|
|
expect(subject.options).to eq(['RHOSTS', 'RPORT'])
|
|
expect(subject.reasons).to eq(
|
|
{
|
|
'RHOSTS' => ['Human readable description']
|
|
}
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|