-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathenvelope_test.go
More file actions
145 lines (126 loc) · 4.21 KB
/
Copy pathenvelope_test.go
File metadata and controls
145 lines (126 loc) · 4.21 KB
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
139
140
141
142
143
144
145
package lime
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestEnvelopeSetID(t *testing.T) {
env := &Envelope{}
result := env.SetID("test-id-123")
assert.Equal(t, "test-id-123", env.ID)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetNewEnvelopeID(t *testing.T) {
env := &Envelope{}
result := env.SetNewEnvelopeID()
assert.NotEmpty(t, env.ID, "should generate a new ID")
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetFrom(t *testing.T) {
env := &Envelope{}
from := Node{
Identity: Identity{Name: "user", Domain: "example.com"},
Instance: "home",
}
result := env.SetFrom(from)
assert.Equal(t, from, env.From)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetFromString(t *testing.T) {
env := &Envelope{}
result := env.SetFromString("user@example.com/home")
assert.Equal(t, "user", env.From.Identity.Name)
assert.Equal(t, "example.com", env.From.Identity.Domain)
assert.Equal(t, "home", env.From.Instance)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetTo(t *testing.T) {
env := &Envelope{}
to := Node{
Identity: Identity{Name: "receiver", Domain: "domain.com"},
Instance: "work",
}
result := env.SetTo(to)
assert.Equal(t, to, env.To)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetToString(t *testing.T) {
env := &Envelope{}
result := env.SetToString("receiver@domain.com/work")
assert.Equal(t, "receiver", env.To.Identity.Name)
assert.Equal(t, "domain.com", env.To.Identity.Domain)
assert.Equal(t, "work", env.To.Instance)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetPP(t *testing.T) {
env := &Envelope{}
pp := Node{
Identity: Identity{Name: "delegate", Domain: "proxy.com"},
Instance: "instance1",
}
result := env.SetPP(pp)
assert.Equal(t, pp, env.PP)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetPPString(t *testing.T) {
env := &Envelope{}
result := env.SetPPString("delegate@proxy.com/instance1")
assert.Equal(t, "delegate", env.PP.Identity.Name)
assert.Equal(t, "proxy.com", env.PP.Identity.Domain)
assert.Equal(t, "instance1", env.PP.Instance)
assert.Equal(t, env, result, chainMsg)
}
func TestEnvelopeSetMetadataKeyValue(t *testing.T) {
env := &Envelope{}
result := env.SetMetadataKeyValue("key1", "value1")
assert.Equal(t, "value1", env.Metadata["key1"])
assert.Equal(t, env, result, chainMsg)
// Test adding more metadata
env.SetMetadataKeyValue("key2", "value2")
assert.Equal(t, "value1", env.Metadata["key1"])
assert.Equal(t, "value2", env.Metadata["key2"])
}
func TestEnvelopeSetMetadataKeyValueInitializesMap(t *testing.T) {
env := &Envelope{Metadata: nil}
env.SetMetadataKeyValue("test", "value")
assert.NotNil(t, env.Metadata, "should initialize metadata map if nil")
assert.Equal(t, "value", env.Metadata["test"])
}
func TestEnvelopeMethodChaining(t *testing.T) {
env := &Envelope{}
result := env.
SetID("chain-id").
SetFromString("sender@example.com").
SetToString("receiver@example.com").
SetPPString("delegate@proxy.com").
SetMetadataKeyValue("key", "value")
assert.Equal(t, "chain-id", env.ID)
assert.Equal(t, "sender", env.From.Identity.Name)
assert.Equal(t, "receiver", env.To.Identity.Name)
assert.Equal(t, "delegate", env.PP.Identity.Name)
assert.Equal(t, "value", env.Metadata["key"])
assert.Equal(t, env, result, "should support method chaining")
}
func TestNewEnvelopeID(t *testing.T) {
id1 := NewEnvelopeID()
id2 := NewEnvelopeID()
assert.NotEmpty(t, id1, "should generate non-empty ID")
assert.NotEmpty(t, id2, "should generate non-empty ID")
assert.NotEqual(t, id1, id2, "should generate unique IDs")
}
func TestReasonString(t *testing.T) {
reason := Reason{
Code: 404,
Description: "Resource not found",
}
str := reason.String()
assert.Contains(t, str, "404", "should contain code")
assert.Contains(t, str, "Resource not found", "should contain description")
assert.Contains(t, str, "Code:", "should contain code label")
assert.Contains(t, str, "Description:", "should contain description label")
}
func TestReasonStringEmpty(t *testing.T) {
reason := Reason{}
str := reason.String()
assert.Contains(t, str, "Code:", "should contain code label")
assert.Contains(t, str, "Description:", "should contain description label")
}