"fmt"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
+ "io"
"io/fs"
"math/rand"
"os"
NewField(FieldFileName, []byte("testfile.txt")),
NewField(FieldFileTypeString, []byte("Text File")),
NewField(FieldFileCreatorString, []byte("ttxt")),
- NewField(FieldFileComment, []byte{}),
NewField(FieldFileType, []byte("TEXT")),
NewField(FieldFileCreateDate, make([]byte, 8)),
NewField(FieldFileModifyDate, make([]byte, 8)),
// Clear the fileWrapper timestamp fields to work around problems running the tests in multiple timezones
// TODO: revisit how to test this by mocking the stat calls
+ gotRes[0].Fields[4].Data = make([]byte, 8)
gotRes[0].Fields[5].Data = make([]byte, 8)
- gotRes[0].Fields[6].Data = make([]byte, 8)
if !assert.Equal(t, tt.wantRes, gotRes) {
t.Errorf("HandleGetFileInfo() gotRes = %v, want %v", gotRes, tt.wantRes)
}
ErrorCode: []byte{0, 0, 0, 0},
Fields: []Field{
NewField(FieldUserName, []byte("Guest")),
- NewField(FieldUserLogin, negateString([]byte("guest"))),
+ NewField(FieldUserLogin, encodeString([]byte("guest"))),
NewField(FieldUserPassword, []byte("password")),
NewField(FieldUserAccess, []byte{0, 0, 0, 0, 0, 0, 0, 0}),
},
},
t: NewTransaction(
TranDeleteUser, &[]byte{0, 1},
- NewField(FieldUserLogin, negateString([]byte("testuser"))),
+ NewField(FieldUserLogin, encodeString([]byte("testuser"))),
),
},
wantRes: []Transaction{
},
t: NewTransaction(
TranDeleteUser, &[]byte{0, 1},
- NewField(FieldUserLogin, negateString([]byte("testuser"))),
+ NewField(FieldUserLogin, encodeString([]byte("testuser"))),
),
},
wantRes: []Transaction{
},
},
},
- wantErr: assert.NoError,
+ wantErr: assert.Error,
},
{
name: "when client 1 sends a message to client 2",
},
name: []byte("testfile-1k"),
}
- b, _ := fnwi.MarshalBinary()
+ b, _ := io.ReadAll(&fnwi)
return b
}(),
),
ErrorCode: []byte{0, 0, 0, 0},
Fields: []Field{
NewField(FieldData, []byte(
- strings.Replace(`Nickname: Testy McTest
+ strings.ReplaceAll(`Nickname: Testy McTest
Name: test
Account: test
Address: 1.2.3.4:12345
None.
-`, "\n", "\r", -1)),
+`, "\n", "\r")),
),
NewField(FieldUserName, []byte("Testy McTest")),
},
Server: &Server{
ThreadedNews: &ThreadedNews{Categories: map[string]NewsCategoryListData15{
"test": {
- Type: []byte{0, 3},
+ Type: [2]byte{0, 3},
Count: nil,
NameSize: 0,
Name: "zz",
Server: &Server{
ThreadedNews: &ThreadedNews{Categories: map[string]NewsCategoryListData15{
"testcat": {
- Type: []byte{0, 2},
+ Type: [2]byte{0, 2},
Count: nil,
NameSize: 0,
Name: "test",
}(),
ThreadedNews: &ThreadedNews{Categories: map[string]NewsCategoryListData15{
"testcat": {
- Type: []byte{0, 2},
+ Type: [2]byte{0, 2},
Count: nil,
NameSize: 0,
Name: "test",
}
}
-func TestHandleDownloadBanner(t *testing.T) {
- type args struct {
- cc *ClientConn
- t *Transaction
- }
- tests := []struct {
- name string
- args args
- wantRes []Transaction
- wantErr assert.ErrorAssertionFunc
- }{
- {
- name: "returns expected response",
- args: args{
- cc: &ClientConn{
- ID: &[]byte{0, 1},
- transfers: map[int]map[[4]byte]*FileTransfer{
- bannerDownload: {},
- },
- Server: &Server{
- ConfigDir: "/config",
- Config: &Config{
- BannerFile: "banner.jpg",
- },
- fileTransfers: map[[4]byte]*FileTransfer{},
- FS: func() *MockFileStore {
- mfi := &MockFileInfo{}
- mfi.On("Size").Return(int64(100))
-
- mfs := &MockFileStore{}
- mfs.On("Stat", "/config/banner.jpg").Return(mfi, nil)
- return mfs
- }(),
- },
- },
- t: NewTransaction(TranDownloadBanner, nil),
- },
- wantRes: []Transaction{
- {
- clientID: &[]byte{0, 1},
- Flags: 0x00,
- IsReply: 0x01,
- Type: []byte{0, 0},
- ID: []byte{0, 0, 0, 0},
- ErrorCode: []byte{0, 0, 0, 0},
- Fields: []Field{
- NewField(FieldRefNum, []byte{1, 2, 3, 4}),
- NewField(FieldTransferSize, []byte{0, 0, 0, 0x64}),
- },
- },
- },
- wantErr: assert.NoError,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- gotRes, err := HandleDownloadBanner(tt.args.cc, tt.args.t)
- if !tt.wantErr(t, err, fmt.Sprintf("HandleDownloadBanner(%v, %v)", tt.args.cc, tt.args.t)) {
- return
- }
-
- tranAssertEqual(t, tt.wantRes, gotRes)
- })
- }
-}
-
func TestHandleTranOldPostNews(t *testing.T) {
type args struct {
cc *ClientConn
}(),
ThreadedNews: &ThreadedNews{Categories: map[string]NewsCategoryListData15{
"test": {
- Type: []byte{0, 2},
+ Type: [2]byte{0, 2},
Count: nil,
NameSize: 0,
Name: "test",