5 "github.com/stretchr/testify/assert"
9 func TestFilePath_Write(t *testing.T) {
20 name: "unmarshals bytes into struct",
25 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x44, 0x69, 0x72,
28 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
31 ItemCount: [2]byte{0x00, 0x02},
32 Items: []FilePathItem{
35 Name: []byte("First Level Dir"),
39 Name: []byte("A SubDir"),
46 name: "handles empty data payload",
51 ItemCount: [2]byte{0x00, 0x00},
52 Items: []FilePathItem(nil),
57 for _, tt := range tests {
58 t.Run(tt.name, func(t *testing.T) {
60 if _, err := fp.Write(tt.args.b); (err != nil) != tt.wantErr {
61 t.Errorf("Write() error = %v, wantErr %v", err, tt.wantErr)
63 if !assert.Equal(t, tt.want, fp) {
64 t.Errorf("Read() got = %v, want %v", fp, tt.want)
70 func Test_readPath(t *testing.T) {
83 name: "when filePath is invalid",
85 fileRoot: "/usr/local/var/mobius/Files",
97 name: "when filePath is nil",
99 fileRoot: "/usr/local/var/mobius/Files",
101 fileName: []byte("foo"),
103 want: "/usr/local/var/mobius/Files/foo",
106 name: "when fileName contains .. ",
108 fileRoot: "/usr/local/var/mobius/Files",
110 fileName: []byte("../../../foo"),
112 want: "/usr/local/var/mobius/Files/foo",
115 name: "when filePath contains .. ",
117 fileRoot: "/usr/local/var/mobius/Files",
125 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
127 fileName: []byte("foo"),
129 want: "/usr/local/var/mobius/Files/A SubDir/foo",
132 name: "when a filePath entry contains .. ",
134 fileRoot: "/usr/local/var/mobius/Files",
139 0x2e, 0x2e, 0x2f, 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
141 fileName: []byte("foo"),
143 want: "/usr/local/var/mobius/Files/A SubDir/foo",
146 name: "when filePath and fileName are nil",
148 fileRoot: "/usr/local/var/mobius/Files",
152 want: "/usr/local/var/mobius/Files",
155 for _, tt := range tests {
156 t.Run(tt.name, func(t *testing.T) {
157 got, err := readPath(tt.args.fileRoot, tt.args.filePath, tt.args.fileName)
158 if (err != nil) != tt.wantErr {
159 t.Errorf("readPath() error = %v, wantErr %v", err, tt.wantErr)
163 t.Errorf("readPath() got = %v, want %v", got, tt.want)
169 func Test_fileItemScanner(t *testing.T) {
179 wantErr assert.ErrorAssertionFunc
182 name: "when a full fileItem is provided",
187 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
195 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
197 wantErr: assert.NoError,
200 name: "when a full fileItem with extra bytes is provided",
205 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
214 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72,
216 wantErr: assert.NoError,
219 name: "when insufficient bytes are provided",
227 wantToken: []byte(nil),
228 wantErr: assert.NoError,
231 for _, tt := range tests {
232 t.Run(tt.name, func(t *testing.T) {
233 gotAdvance, gotToken, err := fileItemScanner(tt.args.data, tt.args.in1)
234 if !tt.wantErr(t, err, fmt.Sprintf("fileItemScanner(%v, %v)", tt.args.data, tt.args.in1)) {
237 assert.Equalf(t, tt.wantAdvance, gotAdvance, "fileItemScanner(%v, %v)", tt.args.data, tt.args.in1)
238 assert.Equalf(t, tt.wantToken, gotToken, "fileItemScanner(%v, %v)", tt.args.data, tt.args.in1)