6 "github.com/stretchr/testify/assert"
11 func TestTransfer_Write(t *testing.T) {
14 ReferenceNumber [4]byte
29 name: "when b is a valid transfer",
32 ReferenceNumber: [4]byte{},
38 0x48, 0x54, 0x58, 0x46,
39 0x00, 0x00, 0x00, 0x01,
40 0x00, 0x00, 0x00, 0x02,
41 0x00, 0x00, 0x00, 0x00,
48 name: "when b contains invalid transfer protocol",
51 ReferenceNumber: [4]byte{},
57 0x11, 0x11, 0x11, 0x11,
58 0x00, 0x00, 0x00, 0x01,
59 0x00, 0x00, 0x00, 0x02,
60 0x00, 0x00, 0x00, 0x00,
67 name: "when b does not contain expected len of bytes",
70 ReferenceNumber: [4]byte{},
76 0x48, 0x54, 0x58, 0x46,
77 0x00, 0x00, 0x00, 0x01,
78 0x00, 0x00, 0x00, 0x02,
86 for _, tt := range tests {
87 t.Run(tt.name, func(t *testing.T) {
89 Protocol: tt.fields.Protocol,
90 ReferenceNumber: tt.fields.ReferenceNumber,
91 DataSize: tt.fields.DataSize,
94 got, err := tf.Write(tt.args.b)
95 if (err != nil) != tt.wantErr {
96 t.Errorf("Read() error = %v, wantErr %v", err, tt.wantErr)
100 t.Errorf("Read() got = %v, want %v", got, tt.want)
106 func Test_receiveFile(t *testing.T) {
113 wantTargetFile []byte
114 wantResForkFile []byte
115 wantErr assert.ErrorAssertionFunc
118 name: "transfers file when there is no resource fork",
120 conn: func() io.Reader {
121 testFile := flattenedFileObject{
122 FlatFileHeader: FlatFileHeader{
123 Format: [4]byte{0x46, 0x49, 0x4c, 0x50}, // "FILP"
124 Version: [2]byte{0, 1},
125 ForkCount: [2]byte{0, 2},
127 FlatFileInformationForkHeader: FlatFileForkHeader{},
128 FlatFileInformationFork: NewFlatFileInformationFork("testfile.txt", [8]byte{}, "TEXT", "TEXT"),
129 FlatFileDataForkHeader: FlatFileForkHeader{
130 ForkType: [4]byte{0x4d, 0x41, 0x43, 0x52}, // DATA
131 DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
134 fakeFileData := []byte{1, 2, 3}
135 b, _ := io.ReadAll(&testFile)
136 b = append(b, fakeFileData...)
137 return bytes.NewReader(b)
140 wantTargetFile: []byte{1, 2, 3},
141 wantResForkFile: []byte(nil),
143 wantErr: assert.NoError,
146 // Name: "transfers fileWrapper when there is a resource fork",
148 // conn: func() io.Reader {
149 // testFile := flattenedFileObject{
150 // FlatFileHeader: FlatFileHeader{
151 // Format: [4]byte{0x46, 0x49, 0x4c, 0x50}, // "FILP"
152 // Version: [2]byte{0, 1},
154 // ForkCount: [2]byte{0, 3},
156 // FlatFileInformationForkHeader: FlatFileForkHeader{},
157 // FlatFileInformationFork: NewFlatFileInformationFork("testfile.txt", make([]byte, 8), "TEXT", "TEXT"),
158 // FlatFileDataForkHeader: FlatFileForkHeader{
159 // ForkType: [4]byte{0x44, 0x41, 0x54, 0x41}, // DATA
160 // CompressionType: [4]byte{0, 0, 0, 0},
161 // RSVD: [4]byte{0, 0, 0, 0},
162 // DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
164 // FlatFileResForkHeader: FlatFileForkHeader{
165 // ForkType: [4]byte{0x4d, 0x41, 0x43, 0x52}, // MACR
166 // CompressionType: [4]byte{0, 0, 0, 0},
167 // RSVD: [4]byte{0, 0, 0, 0},
168 // DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
171 // fakeFileData := []byte{1, 2, 3}
172 // b := testFile.BinaryMarshal()
173 // b = append(b, fakeFileData...)
174 // return bytes.NewReader(b)
177 // wantTargetFile: []byte{1, 2, 3},
178 // wantResForkFile: []byte(nil),
180 // wantErr: assert.NoError,
183 for _, tt := range tests {
184 t.Run(tt.name, func(t *testing.T) {
185 targetFile := &bytes.Buffer{}
186 resForkFile := &bytes.Buffer{}
187 infoForkFile := &bytes.Buffer{}
188 err := receiveFile(tt.args.conn, targetFile, resForkFile, infoForkFile, io.Discard)
189 if !tt.wantErr(t, err, fmt.Sprintf("receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)) {
193 assert.Equalf(t, tt.wantTargetFile, targetFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)
194 assert.Equalf(t, tt.wantResForkFile, resForkFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)