metasploit-framework/spec/lib/msf/http/jboss/base_spec.rb

130 lines
3.1 KiB
Ruby

#-*- coding:binary -*-
require 'spec_helper'
require 'msf/core'
require 'msf/http/jboss'
describe Msf::HTTP::JBoss::Base do
subject do
mod = ::Msf::Exploit.new
mod.extend Msf::HTTP::JBoss
mod.send(:initialize)
mod
end
describe "#deploy" do
before :each do
allow(subject).to receive(:send_request_cgi) do
if res_code.nil?
res = nil
else
res = Rex::Proto::Http::Response.new
res.code = res_code
end
res
end
end
let (:opts) do
{
'uri' => '/jmx-console'
}
end
it 'returns nil unless uri is provided' do
expect(subject.deploy).to be_nil
end
context 'when server timeouts' do
let(:res_code) { nil }
it { expect(subject.deploy(opts, 1)).to be_nil }
end
context 'when server returns 200' do
let(:res_code) { 200 }
it { expect(subject.deploy(opts)).to be_kind_of Rex::Proto::Http::Response }
end
context 'when server returns 404' do
let(:res_code) { 404 }
it { expect(subject.deploy(opts, 1)).to be_kind_of Rex::Proto::Http::Response }
end
end
describe "#http_verb" do
it "returns POST by default" do
expect(subject.http_verb).to eq("POST")
end
end
describe "#query_serverinfo" do
before :each do
allow(subject).to receive(:send_request_cgi) do
if res_code.nil?
res = nil
else
res = Rex::Proto::Http::Response.new
res.code = res_code
end
res
end
end
context 'when server timeouts' do
let(:res_code) { nil }
it { expect(subject.query_serverinfo()).to be_nil }
end
context 'when server returns 200' do
let(:res_code) { 200 }
it { expect(subject.query_serverinfo()).to be_kind_of Rex::Proto::Http::Response }
end
end
describe "#detect_plateform" do
context "when server arch is Linux" do
res = Rex::Proto::Http::Response.new
res.body = "<td>OSName: Linux</td>"
it { expect(subject.detect_platform(res)).to eq "linux" }
end
context "when server arch is Windows" do
res = Rex::Proto::Http::Response.new
res.body = "<td>OSName: Windows</td>"
it { expect(subject.detect_platform(res)).to eq "win" }
end
context "return nil if no OS match" do
res = Rex::Proto::Http::Response.new
res.body = "<td>OSName: Blah</td>"
it { expect(subject.detect_platform(res)).to be_nil }
end
context "return nil res is nil" do
res = nil
it { expect(subject.detect_platform(res)).to be_nil }
end
end
describe "#detect_architecture" do
context "when server arch is x86" do
res = Rex::Proto::Http::Response.new
res.body = "<td>OSArch: i386</td>"
it { expect(subject.detect_architecture(res)).to eq ARCH_X86 }
end
context "return nil if no architecture match" do
res = Rex::Proto::Http::Response.new
res.body = "<td>OSArch: Blah</td>"
it { expect(subject.detect_architecture(res)).to be_nil }
end
context "return nil res is nil" do
res = nil
it { expect(subject.detect_architecture(res)).to be_nil }
end
end
end