Skip to content

Commit 8e58efb

Browse files
author
Tod Beardsley
committed
Land rapid7#4008, OLE specs
2 parents 9630d46 + 2f20998 commit 8e58efb

File tree

2 files changed

+462
-0
lines changed

2 files changed

+462
-0
lines changed

spec/lib/rex/ole/clsid_spec.rb

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# -*- coding:binary -*-
2+
require 'spec_helper'
3+
4+
require 'rex/ole'
5+
6+
describe Rex::OLE::CLSID do
7+
8+
let(:sample_clsid) { "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff" }
9+
10+
subject(:clsid) do
11+
described_class.new(sample_clsid)
12+
end
13+
14+
describe "#initialize" do
15+
subject(:clsid_class) do
16+
described_class.allocate
17+
end
18+
19+
it "returns the buf value" do
20+
expect(clsid_class.send(:initialize, sample_clsid)).to eq(sample_clsid)
21+
end
22+
23+
context "when buf is nil" do
24+
it "returns padding" do
25+
expect(clsid_class.send(:initialize)).to eq("\x00" * 16)
26+
end
27+
end
28+
end
29+
30+
describe "#pack" do
31+
it "returns the buf field" do
32+
expect(clsid.pack).to eq(sample_clsid)
33+
end
34+
end
35+
36+
describe "#to_s" do
37+
it "returns printable clsid" do
38+
Rex::OLE::Util.set_endian(Rex::OLE::LITTLE_ENDIAN)
39+
expect(clsid.to_s).to eq('33221100-5544-7766-8899-aabbccddeeff')
40+
end
41+
42+
context "when buf is nil" do
43+
it "raises NoMethodError" do
44+
clsid.instance_variable_set(:@buf, nil)
45+
expect { clsid.to_s }.to raise_error(NoMethodError)
46+
end
47+
end
48+
49+
context "when buf is shorter than 16 bytes" do
50+
it "raises TypeError" do
51+
clsid.instance_variable_set(:@buf, '')
52+
expect { clsid.to_s }.to raise_error(TypeError)
53+
end
54+
end
55+
end
56+
end

0 commit comments

Comments
 (0)