@@ -23,37 +23,80 @@ func equalRequestHeader(x, y *protocol.RequestHeader) bool {
23
23
}))
24
24
}
25
25
26
- func TestUDPEncoding (t * testing.T ) {
27
- request := & protocol.RequestHeader {
28
- Version : Version ,
29
- Command : protocol .RequestCommandUDP ,
30
- Address : net .LocalHostIP ,
31
- Port : 1234 ,
32
- User : & protocol.MemoryUser {
33
- Email : "love@example.com" ,
34
- Account : toAccount (& Account {
35
- Password : "password" ,
36
- CipherType : CipherType_AES_128_GCM ,
37
- }),
26
+ func TestUDPEncodingDecoding (t * testing.T ) {
27
+ testRequests := []protocol.RequestHeader {
28
+ {
29
+ Version : Version ,
30
+ Command : protocol .RequestCommandUDP ,
31
+ Address : net .LocalHostIP ,
32
+ Port : 1234 ,
33
+ User : & protocol.MemoryUser {
34
+ Email : "love@example.com" ,
35
+ Account : toAccount (& Account {
36
+ Password : "password" ,
37
+ CipherType : CipherType_AES_128_GCM ,
38
+ }),
39
+ },
40
+ },
41
+ {
42
+ Version : Version ,
43
+ Command : protocol .RequestCommandUDP ,
44
+ Address : net .LocalHostIP ,
45
+ Port : 1234 ,
46
+ User : & protocol.MemoryUser {
47
+ Email : "love@example.com" ,
48
+ Account : toAccount (& Account {
49
+ Password : "123" ,
50
+ CipherType : CipherType_NONE ,
51
+ }),
52
+ },
38
53
},
39
54
}
40
55
41
- data := buf .New ()
42
- common .Must2 (data .WriteString ("test string" ))
43
- encodedData , err := EncodeUDPPacket (request , data .Bytes ())
44
- common .Must (err )
56
+ for _ , request := range testRequests {
57
+ data := buf .New ()
58
+ common .Must2 (data .WriteString ("test string" ))
59
+ encodedData , err := EncodeUDPPacket (& request , data .Bytes ())
60
+ common .Must (err )
45
61
46
- validator := new (Validator )
47
- validator .Add (request .User )
48
- decodedRequest , decodedData , err := DecodeUDPPacket (validator , encodedData )
49
- common .Must (err )
62
+ validator := new (Validator )
63
+ validator .Add (request .User )
64
+ decodedRequest , decodedData , err := DecodeUDPPacket (validator , encodedData )
65
+ common .Must (err )
50
66
51
- if r := cmp .Diff (decodedData .Bytes (), data .Bytes ()); r != "" {
52
- t .Error ("data: " , r )
67
+ if r := cmp .Diff (decodedData .Bytes (), data .Bytes ()); r != "" {
68
+ t .Error ("data: " , r )
69
+ }
70
+
71
+ if equalRequestHeader (decodedRequest , & request ) == false {
72
+ t .Error ("different request" )
73
+ }
53
74
}
75
+ }
54
76
55
- if equalRequestHeader (decodedRequest , request ) == false {
56
- t .Error ("different request" )
77
+ func TestUDPDecodingWithPayloadTooShort (t * testing.T ) {
78
+ testAccounts := []protocol.Account {
79
+ toAccount (& Account {
80
+ Password : "password" ,
81
+ CipherType : CipherType_AES_128_GCM ,
82
+ }),
83
+ toAccount (& Account {
84
+ Password : "password" ,
85
+ CipherType : CipherType_NONE ,
86
+ }),
87
+ }
88
+
89
+ for _ , account := range testAccounts {
90
+ data := buf .New ()
91
+ data .WriteString ("short payload" )
92
+ validator := new (Validator )
93
+ validator .Add (& protocol.MemoryUser {
94
+ Account : account ,
95
+ })
96
+ _ , _ , err := DecodeUDPPacket (validator , data )
97
+ if err == nil {
98
+ t .Fatal ("expected error" )
99
+ }
57
100
}
58
101
}
59
102
0 commit comments