-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathsender_packet_test.go
108 lines (95 loc) · 2.87 KB
/
sender_packet_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
// -----------------------------------------------------------------------------
// github.com/balacode/udpt /[sender_packet_test.go]
// (c) [email protected] License: MIT
// -----------------------------------------------------------------------------
package udpt
import (
"net"
"testing"
)
// to run all tests in this file:
// go test -v -run Test_senderPacket_*
// -----------------------------------------------------------------------------
// (pk *senderPacket) IsDelivered() bool
//
// go test -run Test_senderPacket_IsDelivered_
//
func Test_senderPacket_IsDelivered_(t *testing.T) {
var pk senderPacket
if pk.IsDelivered() != false {
t.Error("0xEE17FE")
}
pk.sentHash = getHash([]byte("abc"))
if pk.IsDelivered() != false {
t.Error("0xE72B22")
}
pk.confirmedHash = getHash([]byte("abc"))
if pk.IsDelivered() != true {
t.Error("0xEE46BB")
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// (pk *senderPacket) Send(conn *net.UDPConn, cipher SymmetricCipher) error
//
// go test -run Test_senderPacket_Send_*
// must succeed
func Test_senderPacket_Send_1(t *testing.T) {
var pk senderPacket
conn := makeTestConn()
cipher := &aesCipher{}
cipher.SetKey([]byte("12345678901234567890123456789012"))
err := pk.Send(conn, cipher)
if err != nil {
t.Error("0xED62D8", err)
}
}
// must fail when passed a nil connection
func Test_senderPacket_Send_2(t *testing.T) {
var pk senderPacket
err := pk.Send(nil, nil)
if !matchError(err, "nil conn") {
t.Error("0xE31FF5", "wrong error:", err)
}
}
// must fail when passed an invalid connection
func Test_senderPacket_Send_3(t *testing.T) {
var pk senderPacket
conn := &net.UDPConn{} // bad connection
cipher := &aesCipher{}
cipher.SetKey([]byte("12345678901234567890123456789012"))
err := pk.Send(conn, cipher)
if !matchError(err, "invalid argument") {
// TODO: above error description may differ on Linux or Mac OS
t.Error("0xE65B73", "wrong error:", err)
}
}
// must fail when passed a nil cipher
func Test_senderPacket_Send_4(t *testing.T) {
var pk senderPacket
conn := makeTestConn()
err := pk.Send(conn, nil)
if !matchError(err, "nil cipher") {
t.Error("0xE03CD3", "wrong error:", err)
}
}
// must fail when the encryption key is not set
func Test_senderPacket_Send_5(t *testing.T) {
var pk senderPacket
conn := makeTestConn()
cipher := &aesCipher{}
err := pk.Send(conn, cipher)
if !matchError(err, "AES-256 key must be 32 bytes long") {
t.Error("0xE12AB8", "wrong error:", err)
}
}
// must fail when the encryption key is invalid
func Test_senderPacket_Send_6(t *testing.T) {
var pk senderPacket
conn := makeTestConn()
cipher := &aesCipher{cryptoKey: []byte{1, 2, 3}}
err := pk.Send(conn, cipher)
if !matchError(err, "AES-256 key must be 32 bytes long") {
t.Error("0xE53A3B", "wrong error:", err)
}
}
// end