File tree Expand file tree Collapse file tree 2 files changed +462
-0
lines changed Expand file tree Collapse file tree 2 files changed +462
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments