forked from qaz9877/go-smpp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessage_test.go
102 lines (89 loc) · 3.03 KB
/
message_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
package pdu
import (
"bytes"
"strings"
"testing"
"github.com/M2MGateway/go-smpp/coding"
"github.com/stretchr/testify/require"
)
func TestShortMessage(t *testing.T) {
var buf bytes.Buffer
var message ShortMessage
err := message.Compose("abc")
require.NoError(t, err)
_, err = message.Parse()
require.NoError(t, err)
err = message.Compose(strings.Repeat("abc", 54))
require.Error(t, err)
header := ConcatenatedHeader{Reference: 1, TotalParts: 1, Sequence: 1}
message.Message = make([]byte, 100)
message.UDHeader = make(UserDataHeader)
header.Set(message.UDHeader)
_, err = message.WriteTo(&buf)
require.NoError(t, err)
message.UDHeader[0x00] = make([]byte, 0x100)
_, err = message.WriteTo(&buf)
require.Error(t, err)
message.Message = make([]byte, MaxShortMessageLength+1)
message.UDHeader = nil
_, err = message.WriteTo(&buf)
require.Error(t, err)
message.DataCoding = coding.NoCoding
parsed, err := message.Parse()
require.NoError(t, err)
require.NotEmpty(t, parsed)
}
func TestMessageState_String(t *testing.T) {
require.Equal(t, "SCHEDULED", MessageState(0).String())
require.Equal(t, "255", MessageState(0xFF).String())
}
//goland:noinspection SpellCheckingInspection
func TestComposeMultipartShortMessage(t *testing.T) {
reference := uint16(0xFFFF)
input := "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmno" +
"pqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde" +
"fghijklmnopqrstuvwxyz1234123456789"
expected := []ShortMessage{
{
Message: []byte(input[:133]),
UDHeader: UserDataHeader{0x08: []byte{0xFF, 0xFF, 0x02, 0x01}},
DataCoding: coding.Latin1Coding,
},
{
Message: []byte(input[133:]),
UDHeader: UserDataHeader{0x08: []byte{0xFF, 0xFF, 0x02, 0x02}},
DataCoding: coding.Latin1Coding,
},
}
messages, err := ComposeMultipartShortMessage(input, coding.Latin1Coding, reference)
require.NoError(t, err)
require.Equal(t, expected, messages)
input = input[:10]
expected = []ShortMessage{
{Message: []byte(input), DataCoding: coding.Latin1Coding},
}
messages, err = ComposeMultipartShortMessage(input, coding.Latin1Coding, reference)
require.NoError(t, err)
require.Equal(t, expected, messages)
}
func TestComposeMultipartShortMessage_Error(t *testing.T) {
input := make([]byte, 134*256)
_, err := ComposeMultipartShortMessage(string(input), coding.NoCoding, 1)
require.Error(t, err)
_, err = ComposeMultipartShortMessage(string(input), coding.ASCIICoding, 1)
require.Error(t, err)
_, err = ComposeMultipartShortMessage(strings.Repeat("\xFF", 1000), coding.ASCIICoding, 1)
require.Error(t, err)
}
func TestCombineMultipartDeliverSM(t *testing.T) {
addDeliverSM := CombineMultipartDeliverSM(func([]*DeliverSM) {})
addDeliverSM(&DeliverSM{
Message: ShortMessage{Message: []byte(""), DataCoding: coding.Latin1Coding},
})
for i := 1; i < 3; i++ {
header := UserDataHeader{0x08: []byte{0xFF, 0xFF, 0x02, byte(i)}}
addDeliverSM(&DeliverSM{
Message: ShortMessage{Message: []byte(""), UDHeader: header, DataCoding: coding.Latin1Coding},
})
}
}