mirror of
https://github.com/rapid7/metasploit-framework
synced 2024-10-29 18:07:27 +01:00
rspec for jsobfu
This commit is contained in:
parent
a333632a69
commit
c33a4a7fd9
73
spec/tools/jsobfu_spec.rb
Normal file
73
spec/tools/jsobfu_spec.rb
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
load Metasploit::Framework.root.join('tools/jsobfu.rb').to_path
|
||||||
|
|
||||||
|
require 'stringio'
|
||||||
|
|
||||||
|
describe Jsobfu do
|
||||||
|
|
||||||
|
let(:fname) {
|
||||||
|
'test.js'
|
||||||
|
}
|
||||||
|
|
||||||
|
let(:js) {
|
||||||
|
%Q|alert("test");|
|
||||||
|
}
|
||||||
|
|
||||||
|
describe Jsobfu::Driver do
|
||||||
|
|
||||||
|
subject do
|
||||||
|
Jsobfu::Driver.new
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#run' do
|
||||||
|
|
||||||
|
def get_stdout(&block)
|
||||||
|
out = $stdout
|
||||||
|
$stdout = fake = StringIO.new
|
||||||
|
begin
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
$stdout = out
|
||||||
|
end
|
||||||
|
fake.string
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:default_opts) {
|
||||||
|
{ :input => fname, :iteration => 1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
allow(Jsobfu::OptsConsole).to receive(:parse).with(any_args).and_return(default_opts)
|
||||||
|
allow(File).to receive(:open).with(fname, 'rb').and_yield(StringIO.new(js))
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a javascript file is given' do
|
||||||
|
it 'returns the obfuscated version of the js code' do
|
||||||
|
output = get_stdout { subject.run }
|
||||||
|
expect(output).to include('String.fromCharCode')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
describe Jsobfu::OptsConsole do
|
||||||
|
subject do
|
||||||
|
Jsobfu::OptsConsole
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when no options are given' do
|
||||||
|
it 'raises OptionParser::MissingArgument' do
|
||||||
|
expect{subject.parse([])}.to raise_error(OptionParser::MissingArgument)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when -t isn\'t a number' do
|
||||||
|
it 'raises OptionParser::MissingArgument' do
|
||||||
|
args = "-i #{fname} -t NaN".split
|
||||||
|
expect{subject.parse(args)}.to raise_error(OptionParser::InvalidOption)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user