Files
openfsd/protocol/pong_test.go
Reese Norris 05ed593a4b initial commit
2024-04-04 19:40:43 -07:00

92 lines
1.8 KiB
Go

package protocol
import (
"github.com/go-playground/validator/v10"
"github.com/stretchr/testify/assert"
"testing"
)
func TestPongPDU_Serialize(t *testing.T) {
tests := []struct {
name string
pdu PongPDU
expected string
}{
{
name: "Valid PongPDU",
pdu: PongPDU{
From: "SOURCE",
To: "TARGET",
Timestamp: "1609459200",
},
expected: "$POSOURCE:TARGET:1609459200\r\n",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equal(t, tt.expected, tt.pdu.Serialize())
})
}
}
func TestParsePongPDU(t *testing.T) {
V = validator.New(validator.WithRequiredStructEnabled())
tests := []struct {
name string
packet string
want *PongPDU
wantErr error
}{
{
name: "Valid PongPDU Parse",
packet: "$POSOURCE:TARGET:1609459200\r\n",
want: &PongPDU{
From: "SOURCE",
To: "TARGET",
Timestamp: "1609459200",
},
wantErr: nil,
},
{
name: "Missing fields",
packet: "$POSOURCE:1609459200\r\n",
want: nil,
wantErr: NewGenericFSDError(SyntaxError),
},
{
name: "Exceeds max field length",
packet: "$POSOURCESOURCE:TARGETTARGET:16094592000000000000000000000000\r\n",
want: nil,
wantErr: NewGenericFSDError(SyntaxError),
},
{
name: "Invalid From field",
packet: "$PO12345678:TARGET:1609459200\r\n",
want: nil,
wantErr: NewGenericFSDError(SyntaxError),
},
{
name: "Invalid To field",
packet: "$POSOURCE:12345678:1609459200\r\n",
want: nil,
wantErr: NewGenericFSDError(SyntaxError),
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
result, err := ParsePongPDU(tc.packet)
if tc.wantErr != nil {
assert.EqualError(t, err, tc.wantErr.Error())
} else {
assert.NoError(t, err)
}
assert.Equal(t, tc.want, result)
})
}
}