1 package dbus
2
3 import "testing"
4
5 func TestMessage_validateHeader(t *testing.T) {
6 var tcs = []struct {
7 msg Message
8 err error
9 }{
10 {
11 msg: Message{
12 Flags: 0xFF,
13 },
14 err: InvalidMessageError("invalid flags"),
15 },
16 {
17 msg: Message{
18 Type: 0xFF,
19 },
20 err: InvalidMessageError("invalid message type"),
21 },
22 {
23 msg: Message{
24 Type: TypeMethodCall,
25 Headers: map[HeaderField]Variant{
26 0xFF: MakeVariant("foo"),
27 },
28 },
29 err: InvalidMessageError("invalid header"),
30 },
31 {
32 msg: Message{
33 Type: TypeMethodCall,
34 Headers: map[HeaderField]Variant{
35 FieldPath: MakeVariant(42),
36 },
37 },
38 err: InvalidMessageError("invalid type of header field"),
39 },
40 {
41 msg: Message{
42 Type: TypeMethodCall,
43 },
44 err: InvalidMessageError("missing required header"),
45 },
46 {
47 msg: Message{
48 Type: TypeMethodCall,
49 Headers: map[HeaderField]Variant{
50 FieldPath: MakeVariant(ObjectPath("break")),
51 FieldMember: MakeVariant("foo.bar"),
52 },
53 },
54 err: InvalidMessageError("invalid path name"),
55 },
56 {
57 msg: Message{
58 Type: TypeMethodCall,
59 Headers: map[HeaderField]Variant{
60 FieldPath: MakeVariant(ObjectPath("/")),
61 FieldMember: MakeVariant("2"),
62 },
63 },
64 err: InvalidMessageError("invalid member name"),
65 },
66 {
67 msg: Message{
68 Type: TypeMethodCall,
69 Headers: map[HeaderField]Variant{
70 FieldPath: MakeVariant(ObjectPath("/")),
71 FieldMember: MakeVariant("foo.bar"),
72 FieldInterface: MakeVariant("break"),
73 },
74 },
75 err: InvalidMessageError("invalid interface name"),
76 },
77 {
78 msg: Message{
79 Type: TypeError,
80 Headers: map[HeaderField]Variant{
81 FieldReplySerial: MakeVariant(uint32(0)),
82 FieldErrorName: MakeVariant("break"),
83 },
84 },
85 err: InvalidMessageError("invalid error name"),
86 },
87 {
88
89 msg: Message{
90 Type: TypeError,
91 Headers: map[HeaderField]Variant{
92 FieldReplySerial: MakeVariant(uint32(0)),
93 FieldErrorName: MakeVariant("error.name"),
94 },
95 Body: []interface{}{
96 "break",
97 },
98 },
99 err: InvalidMessageError("missing signature"),
100 },
101 }
102
103 for _, tc := range tcs {
104 t.Run(tc.err.Error(), func(t *testing.T) {
105 err := tc.msg.validateHeader()
106 if err != tc.err {
107 t.Errorf("expected error %q, got %q", tc.err, err)
108 }
109 })
110 }
111 }
112
View as plain text