]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/transfer_test.go
Revert change to effectiveFile func
[rbdr/mobius] / hotline / transfer_test.go
index 63e22c068e5269d24800d83afb4ed5a312c3dc14..255d914829cc5ca7e00b26b140f5cb422474896b 100644 (file)
@@ -1,6 +1,12 @@
 package hotline
 
-import "testing"
+import (
+       "bytes"
+       "fmt"
+       "github.com/stretchr/testify/assert"
+       "io"
+       "testing"
+)
 
 func TestTransfer_Read(t *testing.T) {
        type fields struct {
@@ -96,3 +102,57 @@ func TestTransfer_Read(t *testing.T) {
                })
        }
 }
+
+func Test_receiveFile(t *testing.T) {
+       type args struct {
+               conn io.Reader
+       }
+       tests := []struct {
+               name            string
+               args            args
+               wantTargetFile  []byte
+               wantResForkFile []byte
+               wantErr         assert.ErrorAssertionFunc
+       }{
+               {
+                       name: "transfers file",
+                       args: args{
+                               conn: func() io.Reader {
+                                       testFile := flattenedFileObject{
+                                               FlatFileHeader:                NewFlatFileHeader(),
+                                               FlatFileInformationForkHeader: FlatFileInformationForkHeader{},
+                                               FlatFileInformationFork:       NewFlatFileInformationFork("testfile.txt", make([]byte, 8), "TEXT", "TEXT"),
+                                               FlatFileDataForkHeader: FlatFileDataForkHeader{
+                                                       ForkType:        [4]byte{0x4d, 0x41, 0x43, 0x52}, // DATA
+                                                       CompressionType: [4]byte{0, 0, 0, 0},
+                                                       RSVD:            [4]byte{0, 0, 0, 0},
+                                                       DataSize:        [4]byte{0x00, 0x00, 0x00, 0x03},
+                                               },
+                                               FileData: nil,
+                                       }
+                                       fakeFileData := []byte{1, 2, 3}
+                                       b := testFile.BinaryMarshal()
+                                       b = append(b, fakeFileData...)
+                                       return bytes.NewReader(b)
+                               }(),
+                       },
+                       wantTargetFile:  []byte{1, 2, 3},
+                       wantResForkFile: []byte(nil),
+
+                       wantErr: assert.NoError,
+               },
+       }
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       targetFile := &bytes.Buffer{}
+                       resForkFile := &bytes.Buffer{}
+                       err := receiveFile(tt.args.conn, targetFile, resForkFile)
+                       if !tt.wantErr(t, err, fmt.Sprintf("receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)) {
+                               return
+                       }
+
+                       assert.Equalf(t, tt.wantTargetFile, targetFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)
+                       assert.Equalf(t, tt.wantResForkFile, resForkFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)
+               })
+       }
+}