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},
126 ForkCount: [2]byte{0, 2},
128 FlatFileInformationForkHeader: FlatFileForkHeader{},
129 FlatFileInformationFork: NewFlatFileInformationFork("testfile.txt", [8]byte{}, "TEXT", "TEXT"),
130 FlatFileDataForkHeader: FlatFileForkHeader{
131 ForkType: [4]byte{0x4d, 0x41, 0x43, 0x52}, // DATA
132 CompressionType: [4]byte{0, 0, 0, 0},
133 RSVD: [4]byte{0, 0, 0, 0},
134 DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
137 fakeFileData := []byte{1, 2, 3}
138 b, _ := io.ReadAll(&testFile)
139 b = append(b, fakeFileData...)
140 return bytes.NewReader(b)
143 wantTargetFile: []byte{1, 2, 3},
144 wantResForkFile: []byte(nil),
146 wantErr: assert.NoError,
149 // Name: "transfers fileWrapper when there is a resource fork",
151 // conn: func() io.Reader {
152 // testFile := flattenedFileObject{
153 // FlatFileHeader: FlatFileHeader{
154 // Format: [4]byte{0x46, 0x49, 0x4c, 0x50}, // "FILP"
155 // Version: [2]byte{0, 1},
157 // ForkCount: [2]byte{0, 3},
159 // FlatFileInformationForkHeader: FlatFileForkHeader{},
160 // FlatFileInformationFork: NewFlatFileInformationFork("testfile.txt", make([]byte, 8), "TEXT", "TEXT"),
161 // FlatFileDataForkHeader: FlatFileForkHeader{
162 // ForkType: [4]byte{0x44, 0x41, 0x54, 0x41}, // DATA
163 // CompressionType: [4]byte{0, 0, 0, 0},
164 // RSVD: [4]byte{0, 0, 0, 0},
165 // DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
167 // FlatFileResForkHeader: FlatFileForkHeader{
168 // ForkType: [4]byte{0x4d, 0x41, 0x43, 0x52}, // MACR
169 // CompressionType: [4]byte{0, 0, 0, 0},
170 // RSVD: [4]byte{0, 0, 0, 0},
171 // DataSize: [4]byte{0x00, 0x00, 0x00, 0x03},
174 // fakeFileData := []byte{1, 2, 3}
175 // b := testFile.BinaryMarshal()
176 // b = append(b, fakeFileData...)
177 // return bytes.NewReader(b)
180 // wantTargetFile: []byte{1, 2, 3},
181 // wantResForkFile: []byte(nil),
183 // wantErr: assert.NoError,
186 for _, tt := range tests {
187 t.Run(tt.name, func(t *testing.T) {
188 targetFile := &bytes.Buffer{}
189 resForkFile := &bytes.Buffer{}
190 infoForkFile := &bytes.Buffer{}
191 err := receiveFile(tt.args.conn, targetFile, resForkFile, infoForkFile, io.Discard)
192 if !tt.wantErr(t, err, fmt.Sprintf("receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)) {
196 assert.Equalf(t, tt.wantTargetFile, targetFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)
197 assert.Equalf(t, tt.wantResForkFile, resForkFile.Bytes(), "receiveFile(%v, %v, %v)", tt.args.conn, targetFile, resForkFile)