4 "github.com/stretchr/testify/assert"
8 func TestFilePath_UnmarshalBinary(t *testing.T) {
19 name: "unmarshals bytes into struct",
24 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x44, 0x69, 0x72,
27 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
30 ItemCount: [2]byte{0x00, 0x02},
31 Items: []FilePathItem{
34 Name: []byte("First Level Dir"),
38 Name: []byte("A SubDir"),
45 name: "handles empty data payload",
50 ItemCount: [2]byte{0x00, 0x00},
51 Items: []FilePathItem(nil),
56 for _, tt := range tests {
57 t.Run(tt.name, func(t *testing.T) {
59 if err := fp.UnmarshalBinary(tt.args.b); (err != nil) != tt.wantErr {
60 t.Errorf("UnmarshalBinary() error = %v, wantErr %v", err, tt.wantErr)
62 if !assert.Equal(t, tt.want, fp) {
63 t.Errorf("Read() got = %v, want %v", fp, tt.want)
69 func Test_readPath(t *testing.T) {
82 name: "when filePath is invalid",
84 fileRoot: "/usr/local/var/mobius/Files",
96 name: "when filePath is nil",
98 fileRoot: "/usr/local/var/mobius/Files",
100 fileName: []byte("foo"),
102 want: "/usr/local/var/mobius/Files/foo",
105 name: "when fileName contains .. ",
107 fileRoot: "/usr/local/var/mobius/Files",
109 fileName: []byte("../../../foo"),
111 want: "/usr/local/var/mobius/Files/foo",
114 name: "when filePath contains .. ",
116 fileRoot: "/usr/local/var/mobius/Files",
124 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
126 fileName: []byte("foo"),
128 want: "/usr/local/var/mobius/Files/A SubDir/foo",
131 name: "when a filePath entry contains .. ",
133 fileRoot: "/usr/local/var/mobius/Files",
138 0x2e, 0x2e, 0x2f, 0x41, 0x20, 0x53, 0x75, 0x62, 0x44, 0x69, 0x72,
140 fileName: []byte("foo"),
142 want: "/usr/local/var/mobius/Files/A SubDir/foo",
145 name: "when filePath and fileName are nil",
147 fileRoot: "/usr/local/var/mobius/Files",
151 want: "/usr/local/var/mobius/Files",
154 for _, tt := range tests {
155 t.Run(tt.name, func(t *testing.T) {
156 got, err := readPath(tt.args.fileRoot, tt.args.filePath, tt.args.fileName)
157 if (err != nil) != tt.wantErr {
158 t.Errorf("readPath() error = %v, wantErr %v", err, tt.wantErr)
162 t.Errorf("readPath() got = %v, want %v", got, tt.want)