5 "github.com/stretchr/testify/assert"
10 func TestTrackerRegistration_Payload(t *testing.T) {
24 name: "returns expected payload bytes",
26 Port: [2]byte{0x00, 0x10},
28 PassID: []byte{0x00, 0x00, 0x00, 0x01},
37 0x00, 0x00, 0x00, 0x01,
39 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76,
41 0x46, 0x6f, 0x6f, 0x7a,
45 for _, tt := range tests {
46 t.Run(tt.name, func(t *testing.T) {
47 tr := &TrackerRegistration{
49 UserCount: tt.fields.UserCount,
50 PassID: tt.fields.PassID,
52 Description: tt.fields.Description,
54 if got := tr.Read(); !reflect.DeepEqual(got, tt.want) {
55 t.Errorf("Read() = %v, want %v", got, tt.want)
61 func Test_serverScanner(t *testing.T) {
71 wantErr assert.ErrorAssertionFunc
74 name: "when a full server entry is provided",
77 0x18, 0x05, 0x30, 0x63, // IP Addr
79 0x00, 0x02, // UserCount
82 0x54, 0x68, 0x65, // Name
84 0x54, 0x54, 0x54, // Description
90 0x18, 0x05, 0x30, 0x63, // IP Addr
92 0x00, 0x02, // UserCount
95 0x54, 0x68, 0x65, // Name
97 0x54, 0x54, 0x54, // Description
99 wantErr: assert.NoError,
102 name: "when extra bytes are provided",
105 0x18, 0x05, 0x30, 0x63, // IP Addr
107 0x00, 0x02, // UserCount
110 0x54, 0x68, 0x65, // Name
112 0x54, 0x54, 0x54, // Description
113 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
119 0x18, 0x05, 0x30, 0x63, // IP Addr
121 0x00, 0x02, // UserCount
124 0x54, 0x68, 0x65, // Name
126 0x54, 0x54, 0x54, // Description
128 wantErr: assert.NoError,
131 name: "when insufficient bytes are provided",
139 wantToken: []byte(nil),
140 wantErr: assert.NoError,
143 name: "when nameLen exceeds provided data",
146 0x18, 0x05, 0x30, 0x63, // IP Addr
148 0x00, 0x02, // UserCount
151 0x54, 0x68, 0x65, // Name
153 0x54, 0x54, 0x54, // Description
158 wantToken: []byte(nil),
159 wantErr: assert.NoError,
162 name: "when description len exceeds provided data",
165 0x18, 0x05, 0x30, 0x63, // IP Addr
167 0x00, 0x02, // UserCount
170 0x54, 0x68, 0x65, // Name
172 0x54, 0x54, 0x54, // Description
177 wantToken: []byte(nil),
178 wantErr: assert.NoError,
181 for _, tt := range tests {
182 t.Run(tt.name, func(t *testing.T) {
183 gotAdvance, gotToken, err := serverScanner(tt.args.data, tt.args.atEOF)
184 if !tt.wantErr(t, err, fmt.Sprintf("serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)) {
187 assert.Equalf(t, tt.wantAdvance, gotAdvance, "serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)
188 assert.Equalf(t, tt.wantToken, gotToken, "serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)