]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/file_transfer_test.go
Clean up logging
[rbdr/mobius] / hotline / file_transfer_test.go
index d12f29acde3e6b9d7dd39aa49e1bd1d7a910740c..0b549f86a60c960b19d831d243d2dd40b0e6dd90 100644 (file)
@@ -3,6 +3,7 @@ package hotline
 import (
        "encoding/binary"
        "github.com/stretchr/testify/assert"
+       "io"
        "testing"
 )
 
@@ -74,12 +75,12 @@ func TestFileTransfer_String(t *testing.T) {
                        ft := &FileTransfer{
                                FileName:         tt.fields.FileName,
                                FilePath:         tt.fields.FilePath,
-                               refNum:           tt.fields.refNum,
+                               RefNum:           tt.fields.refNum,
                                Type:             tt.fields.Type,
                                TransferSize:     tt.fields.TransferSize,
                                FolderItemCount:  tt.fields.FolderItemCount,
-                               fileResumeData:   tt.fields.fileResumeData,
-                               options:          tt.fields.options,
+                               FileResumeData:   tt.fields.fileResumeData,
+                               Options:          tt.fields.options,
                                bytesSentCounter: tt.fields.bytesSentCounter,
                                ClientConn:       tt.fields.ClientConn,
                        }
@@ -87,3 +88,90 @@ func TestFileTransfer_String(t *testing.T) {
                })
        }
 }
+
+func TestNewFileHeader(t *testing.T) {
+       type args struct {
+               fileName string
+               isDir    bool
+       }
+       tests := []struct {
+               name string
+               args args
+               want FileHeader
+       }{
+               {
+                       name: "when path is file",
+                       args: args{
+                               fileName: "foo",
+                               isDir:    false,
+                       },
+                       want: FileHeader{
+                               Size:     [2]byte{0x00, 0x0a},
+                               Type:     [2]byte{0x00, 0x00},
+                               FilePath: EncodeFilePath("foo"),
+                       },
+               },
+               {
+                       name: "when path is dir",
+                       args: args{
+                               fileName: "foo",
+                               isDir:    true,
+                       },
+                       want: FileHeader{
+                               Size:     [2]byte{0x00, 0x0a},
+                               Type:     [2]byte{0x00, 0x01},
+                               FilePath: EncodeFilePath("foo"),
+                       },
+               },
+       }
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       if got := NewFileHeader(tt.args.fileName, tt.args.isDir); !assert.Equal(t, tt.want, got) {
+                               t.Errorf("NewFileHeader() = %v, want %v", got, tt.want)
+                       }
+               })
+       }
+}
+
+func TestFileHeader_Payload(t *testing.T) {
+       type fields struct {
+               Size     [2]byte
+               Type     [2]byte
+               FilePath []byte
+       }
+       tests := []struct {
+               name   string
+               fields fields
+               want   []byte
+       }{
+               {
+                       name: "has expected payload bytes",
+                       fields: fields{
+                               Size:     [2]byte{0x00, 0x0a},
+                               Type:     [2]byte{0x00, 0x00},
+                               FilePath: EncodeFilePath("foo"),
+                       },
+                       want: []byte{
+                               0x00, 0x0a, // total size
+                               0x00, 0x00, // type
+                               0x00, 0x01, // path item count
+                               0x00, 0x00, // path separator
+                               0x03,             // pathName len
+                               0x66, 0x6f, 0x6f, // "foo"
+                       },
+               },
+       }
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       fh := &FileHeader{
+                               Size:     tt.fields.Size,
+                               Type:     tt.fields.Type,
+                               FilePath: tt.fields.FilePath,
+                       }
+                       got, _ := io.ReadAll(fh)
+                       if !assert.Equal(t, tt.want, got) {
+                               t.Errorf("Read() = %v, want %v", got, tt.want)
+                       }
+               })
+       }
+}