-
Notifications
You must be signed in to change notification settings - Fork 0
/
types_test.go
138 lines (127 loc) · 2.48 KB
/
types_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package gomdb
import (
"encoding/json"
"errors"
"testing"
)
func Test_ProposedMessage_validate(t *testing.T) {
testcases := []struct {
name string
message ProposedMessage
expErr error
}{
{
name: "missing UUID",
message: ProposedMessage{
Type: "SomeType",
Data: "data",
},
expErr: ErrInvalidMessageID,
},
{
name: "missing type",
message: ProposedMessage{
ID: "someID",
Data: "data",
},
expErr: ErrMissingType,
},
{
name: "missing data",
message: ProposedMessage{
ID: "someID",
Type: "SomeType",
},
expErr: ErrMissingData,
},
{
name: "valid",
message: ProposedMessage{
ID: "someID",
Type: "SomeType",
Data: "data",
},
},
}
for _, tc := range testcases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
err := tc.message.validate()
if !errors.Is(err, tc.expErr) {
t.Fatalf("expected %v, actual %v", tc.expErr, err)
}
})
}
}
func Test_StreamIdentifier_validate(t *testing.T) {
testcases := []struct {
name string
sid StreamIdentifier
expErr error
}{
{
name: "missing category",
sid: StreamIdentifier{
ID: "123abc",
},
expErr: ErrMissingCategory,
},
{
name: "invalid category",
sid: StreamIdentifier{
Category: "cat-egory",
ID: "123abc",
},
expErr: ErrInvalidCategory,
},
{
name: "missing ID",
sid: StreamIdentifier{
Category: "category",
},
expErr: ErrMissingStreamID,
},
{
name: "valid",
sid: StreamIdentifier{
Category: "category",
ID: "123-abc",
},
},
}
for _, tc := range testcases {
tc := tc
t.Run(tc.name, func(t *testing.T) {
err := tc.sid.validate()
if !errors.Is(err, tc.expErr) {
t.Fatalf("expected %v, actual %v", tc.expErr, err)
}
})
}
}
func Test_Message_Unmarshal(t *testing.T) {
data := "some data"
metadata := "some metadata"
dataJson, _ := json.Marshal(data)
metadataJson, _ := json.Marshal(metadata)
msg := Message{
data: dataJson,
metadata: metadataJson,
}
var (
outData string
outMetadata string
)
err := msg.UnmarshalData(&outData)
if err != nil {
t.Fatalf("unexpected error unmarshaling data: %s", err)
} else if outData != data {
t.Fatalf("expected %s, actual %s", data, outData)
}
err = msg.UnmarshalMetadata(&outMetadata)
if err != nil {
t.Fatalf("unexpected error unmarshaling metadata: %s", err)
} else if outMetadata != metadata {
t.Fatalf("expected %s, actual %s", metadata, outMetadata)
}
}