]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server_test.go
Fix failing test, replace use of reflect package with assert
[rbdr/mobius] / hotline / server_test.go
index d3e43250aeb840af203270a4312c04a997a274ba..c3d38da57db7a6b35bda33b4308ffc0a88902740 100644 (file)
@@ -5,10 +5,9 @@ import (
        "context"
        "fmt"
        "github.com/stretchr/testify/assert"
-       "go.uber.org/zap"
        "io"
+       "log/slog"
        "os"
-       "sync"
        "testing"
 )
 
@@ -27,24 +26,13 @@ func (mrw mockReadWriter) Write(p []byte) (n int, err error) {
 
 func TestServer_handleFileTransfer(t *testing.T) {
        type fields struct {
-               Port          int
-               Accounts      map[string]*Account
-               Agreement     []byte
-               Clients       map[uint16]*ClientConn
-               ThreadedNews  *ThreadedNews
-               FileTransfers map[uint32]*FileTransfer
-               Config        *Config
-               ConfigDir     string
-               Logger        *zap.SugaredLogger
-               PrivateChats  map[uint32]*PrivateChat
-               NextGuestID   *uint16
-               TrackerPassID [4]byte
-               Stats         *Stats
-               FS            FileStore
-               outbox        chan Transaction
-               mux           sync.Mutex
-               flatNewsMux   sync.Mutex
-               FlatNews      []byte
+               ThreadedNews    *ThreadedNews
+               FileTransferMgr FileTransferMgr
+               Config          Config
+               ConfigDir       string
+               Stats           *Stats
+               Logger          *slog.Logger
+               FS              FileStore
        }
        type args struct {
                ctx context.Context
@@ -82,7 +70,10 @@ func TestServer_handleFileTransfer(t *testing.T) {
                        wantErr: assert.Error,
                },
                {
-                       name: "with invalid transfer ID",
+                       name: "with invalid transfer Type",
+                       fields: fields{
+                               FileTransferMgr: NewMemFileTransferMgr(),
+                       },
                        args: args{
                                ctx: func() context.Context {
                                        ctx := context.Background()
@@ -109,19 +100,34 @@ func TestServer_handleFileTransfer(t *testing.T) {
                        name: "file download",
                        fields: fields{
                                FS: &OSFileStore{},
-                               Config: &Config{
+                               Config: Config{
                                        FileRoot: func() string {
                                                path, _ := os.Getwd()
                                                return path + "/test/config/Files"
                                        }()},
                                Logger: NewTestLogger(),
-                               Stats:  &Stats{},
-                               FileTransfers: map[uint32]*FileTransfer{
-                                       uint32(5): {
-                                               ReferenceNumber: []byte{0, 0, 0, 5},
-                                               Type:            FileDownload,
-                                               FileName:        []byte("testfile-8b"),
-                                               FilePath:        []byte{},
+                               Stats:  NewStats(),
+                               FileTransferMgr: &MemFileTransferMgr{
+                                       fileTransfers: map[FileTransferID]*FileTransfer{
+                                               {0, 0, 0, 5}: {
+                                                       RefNum:   [4]byte{0, 0, 0, 5},
+                                                       Type:     FileDownload,
+                                                       FileName: []byte("testfile-8b"),
+                                                       FilePath: []byte{},
+                                                       ClientConn: &ClientConn{
+                                                               Account: &Account{
+                                                                       Login: "foo",
+                                                               },
+                                                               ClientFileTransferMgr: ClientFileTransferMgr{
+                                                                       transfers: map[FileTransferType]map[FileTransferID]*FileTransfer{
+                                                                               FileDownload: {
+                                                                                       [4]byte{0, 0, 0, 5}: &FileTransfer{},
+                                                                               },
+                                                                       },
+                                                               },
+                                                       },
+                                                       bytesSentCounter: &WriteCounter{},
+                                               },
                                        },
                                },
                        },
@@ -163,18 +169,13 @@ func TestServer_handleFileTransfer(t *testing.T) {
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
                        s := &Server{
-                               Port:          tt.fields.Port,
-                               Accounts:      tt.fields.Accounts,
-                               Agreement:     tt.fields.Agreement,
-                               Clients:       tt.fields.Clients,
-                               ThreadedNews:  tt.fields.ThreadedNews,
-                               FileTransfers: tt.fields.FileTransfers,
-                               Config:        tt.fields.Config,
-                               ConfigDir:     tt.fields.ConfigDir,
-                               Logger:        tt.fields.Logger,
-                               Stats:         tt.fields.Stats,
-                               FS:            tt.fields.FS,
+                               FileTransferMgr: tt.fields.FileTransferMgr,
+                               Config:          tt.fields.Config,
+                               Logger:          tt.fields.Logger,
+                               Stats:           tt.fields.Stats,
+                               FS:              tt.fields.FS,
                        }
+
                        tt.wantErr(t, s.handleFileTransfer(tt.args.ctx, tt.args.rwc), fmt.Sprintf("handleFileTransfer(%v, %v)", tt.args.ctx, tt.args.rwc))
 
                        assertTransferBytesEqual(t, tt.wantDump, tt.args.rwc.(mockReadWriter).WBuf.Bytes())