...
1description: "gridfs-delete"
2
3schemaVersion: "1.0"
4
5createEntities:
6 - client:
7 id: &client0 client0
8 - database:
9 id: &database0 database0
10 client: *client0
11 databaseName: &database0Name gridfs-tests
12 - bucket:
13 id: &bucket0 bucket0
14 database: *database0
15 - collection:
16 id: &bucket0_files_collection bucket0_files_collection
17 database: *database0
18 collectionName: &bucket0_files_collectionName fs.files
19 - collection:
20 id: &bucket0_chunks_collection bucket0_chunks_collection
21 database: *database0
22 collectionName: &bucket0_chunks_collectionName fs.chunks
23
24initialData:
25 - collectionName: *bucket0_files_collectionName
26 databaseName: *database0Name
27 documents:
28 - &file1
29 _id: { "$oid": "000000000000000000000001" }
30 length: 0
31 chunkSize: 4
32 uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
33 md5: "d41d8cd98f00b204e9800998ecf8427e"
34 filename: "length-0"
35 contentType: "application/octet-stream"
36 aliases: []
37 metadata: {}
38 - &file2
39 _id: { "$oid": "000000000000000000000002" }
40 length: 0
41 chunkSize: 4
42 uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
43 md5: "d41d8cd98f00b204e9800998ecf8427e"
44 filename: "length-0-with-empty-chunk"
45 contentType: "application/octet-stream"
46 aliases: []
47 metadata: {}
48 - &file3
49 _id: { "$oid": "000000000000000000000003" }
50 length: 2
51 chunkSize: 4
52 uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
53 md5: "c700ed4fdb1d27055aa3faa2c2432283"
54 filename: "length-2"
55 contentType: "application/octet-stream"
56 aliases: []
57 metadata: {}
58 - &file4
59 _id: { "$oid": "000000000000000000000004" }
60 length: 8
61 chunkSize: 4
62 uploadDate: { "$date": "1970-01-01T00:00:00.000Z" }
63 md5: "dd254cdc958e53abaa67da9f797125f5"
64 filename: "length-8"
65 contentType: "application/octet-stream"
66 aliases: []
67 metadata: {}
68 - collectionName: *bucket0_chunks_collectionName
69 databaseName: *database0Name
70 documents:
71 - &file2_chunk0
72 _id: { "$oid": "000000000000000000000001" }
73 files_id: { "$oid": "000000000000000000000002" }
74 n: 0
75 data: { "$binary": { "base64": "", "subType": "00" } }
76 - &file3_chunk0
77 _id: { "$oid": "000000000000000000000002" }
78 files_id: { "$oid": "000000000000000000000003" }
79 n: 0
80 data: { "$binary": { "base64": "ESI=", "subType": "00" } } # hex: 1122
81 - &file4_chunk0
82 _id: { "$oid": "000000000000000000000003" }
83 files_id: { "$oid": "000000000000000000000004" }
84 n: 0
85 data: { "$binary": { "base64": "ESIzRA==", "subType": "00" } } # hex: 11223344
86 - &file4_chunk1
87 _id: { "$oid": "000000000000000000000004" }
88 files_id: { "$oid": "000000000000000000000004" }
89 n: 1
90 data: { "$binary": { "base64": "VWZ3iA==", "subType": "00" } } # hex: 55667788
91
92tests:
93 - description: "delete when length is 0"
94 operations:
95 - name: delete
96 object: *bucket0
97 arguments:
98 id: { $oid: "000000000000000000000001" }
99 outcome:
100 - collectionName: *bucket0_files_collectionName
101 databaseName: *database0Name
102 documents:
103 - *file2
104 - *file3
105 - *file4
106 - collectionName: *bucket0_chunks_collectionName
107 databaseName: *database0Name
108 documents:
109 - *file2_chunk0
110 - *file3_chunk0
111 - *file4_chunk0
112 - *file4_chunk1
113 - description: "delete when length is 0 and there is one extra empty chunk"
114 operations:
115 - name: delete
116 object: *bucket0
117 arguments:
118 id: { $oid: "000000000000000000000002" }
119 outcome:
120 - collectionName: *bucket0_files_collectionName
121 databaseName: *database0Name
122 documents:
123 - *file1
124 - *file3
125 - *file4
126 - collectionName: *bucket0_chunks_collectionName
127 databaseName: *database0Name
128 documents:
129 - *file3_chunk0
130 - *file4_chunk0
131 - *file4_chunk1
132 - description: "delete when length is 8"
133 operations:
134 - name: delete
135 object: *bucket0
136 arguments:
137 id: { $oid: "000000000000000000000004" }
138 outcome:
139 - collectionName: *bucket0_files_collectionName
140 databaseName: *database0Name
141 documents:
142 - *file1
143 - *file2
144 - *file3
145 - collectionName: *bucket0_chunks_collectionName
146 databaseName: *database0Name
147 documents:
148 - *file2_chunk0
149 - *file3_chunk0
150 - description: "delete when files entry does not exist"
151 operations:
152 - name: delete
153 object: *bucket0
154 arguments:
155 id: { $oid: "000000000000000000000000" }
156 expectError: { isError: true } # FileNotFound
157 outcome:
158 - collectionName: *bucket0_files_collectionName
159 databaseName: *database0Name
160 documents:
161 - *file1
162 - *file2
163 - *file3
164 - *file4
165 - collectionName: *bucket0_chunks_collectionName
166 databaseName: *database0Name
167 documents:
168 - *file2_chunk0
169 - *file3_chunk0
170 - *file4_chunk0
171 - *file4_chunk1
172 - description: "delete when files entry does not exist and there are orphaned chunks"
173 operations:
174 - name: deleteOne
175 object: *bucket0_files_collection
176 arguments:
177 filter:
178 _id: { $oid: "000000000000000000000004" }
179 expectResult:
180 deletedCount: 1
181 - name: delete
182 object: *bucket0
183 arguments:
184 id: { $oid: "000000000000000000000004" }
185 expectError: { isError: true } # FileNotFound
186 outcome:
187 - collectionName: *bucket0_files_collectionName
188 databaseName: *database0Name
189 documents:
190 - *file1
191 - *file2
192 - *file3
193 # Orphaned chunks are still deleted even if fs.files
194 - collectionName: *bucket0_chunks_collectionName
195 databaseName: *database0Name
196 documents:
197 - *file2_chunk0
198 - *file3_chunk0
View as plain text