@@ -111,22 +111,106 @@ func TestCachedObjectClient_List(t *testing.T) {
111
111
require .Equal (t , objectsFromListCall , objects )
112
112
})
113
113
114
+ t .Run ("supports path prefixed clients" , func (t * testing.T ) {
115
+ ctx := context .Background ()
116
+
117
+ path_prefix := "my/long/path/prefix/"
118
+ objectsInStorage := []string {
119
+ path_prefix + "table1/db.gz" ,
120
+ path_prefix + "table2/db1.gz" ,
121
+ path_prefix + "table2/db2.gz" ,
122
+ path_prefix + "table3/user1/db.gz" ,
123
+ path_prefix + "table3/user2/db.gz" ,
124
+ }
125
+ objectClient := newMockObjectClient (t , objectsInStorage )
126
+ prefixedClient := client .NewPrefixedObjectClient (objectClient , path_prefix )
127
+ cachedObjectClient := newCachedObjectClient (prefixedClient )
128
+
129
+ objects , _ , err := cachedObjectClient .List (ctx , "table1/" , "/" , false )
130
+ require .Nil (t , err )
131
+ require .Equal (t , []string {"table1/db.gz" }, objectKeys (objects ))
132
+
133
+ objects , _ , err = cachedObjectClient .List (ctx , "table2/" , "/" , false )
134
+ require .Nil (t , err )
135
+ require .Equal (t , []string {"table2/db1.gz" , "table2/db2.gz" }, objectKeys (objects ))
136
+
137
+ objects , _ , err = cachedObjectClient .List (ctx , "table3/user1" , "/" , false )
138
+ require .Nil (t , err )
139
+ require .Equal (t , []string {"table3/user1/db.gz" }, objectKeys (objects ))
140
+ })
141
+
114
142
t .Run ("supports prefixed clients" , func (t * testing.T ) {
115
143
ctx := context .Background ()
116
144
117
- prefix := "my/amazing/prefix/"
145
+ path_prefix := "/"
146
+ prefix := "prefix_term_"
147
+ objectsInStorage := []string {
148
+ path_prefix + prefix + "table1/db.gz" ,
149
+ path_prefix + prefix + "table2/db1.gz" ,
150
+ path_prefix + prefix + "table2/db2.gz" ,
151
+ path_prefix + prefix + "table3/user1/db.gz" ,
152
+ path_prefix + prefix + "table3/user2/db.gz" ,
153
+ }
154
+ objectClient := newMockObjectClient (t , objectsInStorage )
155
+ prefixedClient := client .NewPrefixedObjectClient (objectClient , path_prefix )
156
+ cachedObjectClient := newCachedObjectClient (prefixedClient )
157
+
158
+ objects , _ , err := cachedObjectClient .List (ctx , "prefix_term_table1/" , "/" , false )
159
+ require .Nil (t , err )
160
+ require .Equal (t , []string {"prefix_term_table1/db.gz" }, objectKeys (objects ))
161
+
162
+ objects , _ , err = cachedObjectClient .List (ctx , "prefix_term_table2/" , "/" , false )
163
+ require .Nil (t , err )
164
+ require .Equal (t , []string {"prefix_term_table2/db1.gz" , "prefix_term_table2/db2.gz" }, objectKeys (objects ))
165
+
166
+ objects , _ , err = cachedObjectClient .List (ctx , "prefix_term_table3/user1/" , "/" , false )
167
+ require .Nil (t , err )
168
+ require .Equal (t , []string {"prefix_term_table3/user1/db.gz" }, objectKeys (objects ))
169
+ })
170
+
171
+ t .Run ("supports both path prefixed and prefix clients" , func (t * testing.T ) {
172
+ ctx := context .Background ()
173
+
174
+ path_prefix := "my/long/path/prefix/"
175
+ prefix := "prefix_term_"
118
176
objectsInStorage := []string {
119
- prefix + "table1/db.gz" ,
120
- prefix + "table2/db.gz" ,
121
- prefix + "table2/db2.gz" ,
177
+ path_prefix + prefix + "table1/db.gz" ,
178
+ path_prefix + prefix + "table2/db1.gz" ,
179
+ path_prefix + prefix + "table2/db2.gz" ,
180
+ path_prefix + prefix + "table3/user1/db.gz" ,
181
+ path_prefix + prefix + "table3/user2/db.gz" ,
122
182
}
123
183
objectClient := newMockObjectClient (t , objectsInStorage )
124
- prefixedClient := client .NewPrefixedObjectClient (objectClient , prefix )
184
+ prefixedClient := client .NewPrefixedObjectClient (objectClient , path_prefix )
125
185
cachedObjectClient := newCachedObjectClient (prefixedClient )
126
186
127
- objects , _ , err := cachedObjectClient .List (ctx , "table2 /" , "/" , false )
187
+ objects , _ , err := cachedObjectClient .List (ctx , "prefix_term_table1 /" , "/" , false )
128
188
require .Nil (t , err )
129
- require .Equal (t , []string {"table2/db.gz" , "table2/db2.gz" }, objectKeys (objects ))
189
+ require .Equal (t , []string {"prefix_term_table1/db.gz" }, objectKeys (objects ))
190
+
191
+ objects , _ , err = cachedObjectClient .List (ctx , "prefix_term_table2/" , "/" , false )
192
+ require .Nil (t , err )
193
+ require .Equal (t , []string {"prefix_term_table2/db1.gz" , "prefix_term_table2/db2.gz" }, objectKeys (objects ))
194
+
195
+ objects , _ , err = cachedObjectClient .List (ctx , "prefix_term_table3/user1/" , "/" , false )
196
+ require .Nil (t , err )
197
+ require .Equal (t , []string {"prefix_term_table3/user1/db.gz" }, objectKeys (objects ))
198
+ })
199
+
200
+ t .Run ("does not support prefix with delimiter" , func (t * testing.T ) {
201
+ ctx := context .Background ()
202
+
203
+ path_prefix := "my/long/path/prefix/"
204
+ prefix := "prefix/term/with/delimiter_"
205
+ objectsInStorage := []string {
206
+ path_prefix + prefix + "table1/db.gz" ,
207
+ }
208
+ objectClient := newMockObjectClient (t , objectsInStorage )
209
+ prefixedClient := client .NewPrefixedObjectClient (objectClient , path_prefix )
210
+ cachedObjectClient := newCachedObjectClient (prefixedClient )
211
+
212
+ _ , _ , err := cachedObjectClient .List (ctx , "prefix/term/with/delimiter_table1/" , "/" , false )
213
+ require .Error (t , err )
130
214
})
131
215
}
132
216
0 commit comments