5 "github.com/stretchr/testify/assert"
11 func TestTrackerRegistration_Payload(t *testing.T) {
25 name: "returns expected payload bytes",
27 Port: [2]byte{0x00, 0x10},
29 PassID: [4]byte{0x00, 0x00, 0x00, 0x01},
38 0x00, 0x00, 0x00, 0x01,
40 0x54, 0x65, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76,
42 0x46, 0x6f, 0x6f, 0x7a,
46 for _, tt := range tests {
47 t.Run(tt.name, func(t *testing.T) {
48 tr := &TrackerRegistration{
50 UserCount: tt.fields.UserCount,
51 PassID: tt.fields.PassID,
53 Description: tt.fields.Description,
56 if got, _ := io.ReadAll(tr); !reflect.DeepEqual(got, tt.want) {
57 t.Errorf("Read() = %v, want %v", got, tt.want)
63 func Test_serverScanner(t *testing.T) {
73 wantErr assert.ErrorAssertionFunc
76 name: "when a full server entry is provided",
79 0x18, 0x05, 0x30, 0x63, // IP Addr
81 0x00, 0x02, // UserCount
84 0x54, 0x68, 0x65, // Name
86 0x54, 0x54, 0x54, // Description
92 0x18, 0x05, 0x30, 0x63, // IP Addr
94 0x00, 0x02, // UserCount
97 0x54, 0x68, 0x65, // Name
99 0x54, 0x54, 0x54, // Description
101 wantErr: assert.NoError,
104 name: "when extra bytes are provided",
107 0x18, 0x05, 0x30, 0x63, // IP Addr
109 0x00, 0x02, // UserCount
112 0x54, 0x68, 0x65, // Name
114 0x54, 0x54, 0x54, // Description
115 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
121 0x18, 0x05, 0x30, 0x63, // IP Addr
123 0x00, 0x02, // UserCount
126 0x54, 0x68, 0x65, // Name
128 0x54, 0x54, 0x54, // Description
130 wantErr: assert.NoError,
133 name: "when insufficient bytes are provided",
141 wantToken: []byte(nil),
142 wantErr: assert.NoError,
145 name: "when nameLen exceeds provided data",
148 0x18, 0x05, 0x30, 0x63, // IP Addr
150 0x00, 0x02, // UserCount
153 0x54, 0x68, 0x65, // Name
155 0x54, 0x54, 0x54, // Description
160 wantToken: []byte(nil),
161 wantErr: assert.NoError,
164 name: "when description len exceeds provided data",
167 0x18, 0x05, 0x30, 0x63, // IP Addr
169 0x00, 0x02, // UserCount
172 0x54, 0x68, 0x65, // Name
174 0x54, 0x54, 0x54, // Description
179 wantToken: []byte(nil),
180 wantErr: assert.NoError,
183 for _, tt := range tests {
184 t.Run(tt.name, func(t *testing.T) {
185 gotAdvance, gotToken, err := serverScanner(tt.args.data, tt.args.atEOF)
186 if !tt.wantErr(t, err, fmt.Sprintf("serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)) {
189 assert.Equalf(t, tt.wantAdvance, gotAdvance, "serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)
190 assert.Equalf(t, tt.wantToken, gotToken, "serverScanner(%v, %v)", tt.args.data, tt.args.atEOF)