69 lines
2.2 KiB
Ruby
69 lines
2.2 KiB
Ruby
RSpec.shared_examples_for 'Msf::DBManager::Service' do
|
|
|
|
unless ENV['REMOTE_DB']
|
|
it { is_expected.to respond_to :delete_service }
|
|
it { is_expected.to respond_to :each_service }
|
|
end
|
|
|
|
it { is_expected.to respond_to :find_or_create_service }
|
|
it { is_expected.to respond_to :services }
|
|
it { is_expected.to respond_to :report_service }
|
|
|
|
describe '#report_service', if: !ENV['REMOTE_DB'] do
|
|
let(:workspace) do
|
|
subject.default_workspace
|
|
end
|
|
|
|
let(:task) do
|
|
subject.report_task(workspace: workspace, user: 'test_user', info: 'info', path: 'mock/path')
|
|
end
|
|
|
|
context 'without a task' do
|
|
it 'creates a service' do
|
|
service = subject.report_service(
|
|
host: '192.0.2.1',
|
|
port: '5000',
|
|
name: 'test_service',
|
|
proto: 'tcp',
|
|
info: 'banner',
|
|
workspace: workspace
|
|
)
|
|
expect(subject.services({ workspace: workspace }).count).to eq 1
|
|
expect(service.name).to eq 'test_service'
|
|
expect(service.port).to eq 5000
|
|
expect(service.proto).to eq 'tcp'
|
|
expect(service.info).to eq 'banner'
|
|
expect(service.host.address.to_s).to eq '192.0.2.1'
|
|
expect(service.host.workspace).to eq workspace
|
|
expect(service.task_services).to be_empty
|
|
expect(task.task_services).to be_empty
|
|
end
|
|
end
|
|
|
|
context 'with a task and calling multiple times' do
|
|
it 'creates a service' do
|
|
service = 3.times.map do |count|
|
|
subject.report_service(
|
|
host: '192.0.2.1',
|
|
port: '5000',
|
|
name: 'test_service',
|
|
proto: 'tcp',
|
|
info: "banner #{count}",
|
|
workspace: workspace,
|
|
task: task
|
|
)
|
|
end.last
|
|
expect(subject.services({ workspace: workspace }).count).to eq 1
|
|
expect(service.name).to eq 'test_service'
|
|
expect(service.port).to eq 5000
|
|
expect(service.proto).to eq 'tcp'
|
|
expect(service.info).to eq 'banner 2'
|
|
expect(service.host.address.to_s).to eq '192.0.2.1'
|
|
expect(service.host.workspace).to eq workspace
|
|
expect(service.task_services.length).to eq 1
|
|
expect(task.task_services.length).to eq 1
|
|
end
|
|
end
|
|
end
|
|
end
|