|
4 | 4 |
|
5 | 5 | RSpec.describe VersionedFilesService do |
6 | 6 | let(:service) { described_class.new(druid:) } |
7 | | - let(:druid) { 'druid:bc123df4567' } |
| 7 | + # Use a globus druid for testing |
| 8 | + let(:druid) { 'druid:bf070wx6289' } |
8 | 9 |
|
9 | 10 | let(:purl_pathname) { 'tmp/purl_root' } |
10 | 11 | let(:stacks_pathname) { 'tmp/stacks' } |
| 12 | + let(:globus_pathname) { 'tmp/stacks/globus' } |
11 | 13 |
|
12 | | - let(:content_path) { "#{stacks_pathname}/bc/123/df/4567/bc123df4567/content" } |
13 | | - let(:versions_path) { "#{stacks_pathname}/bc/123/df/4567/bc123df4567/versions" } |
14 | | - let(:stacks_object_path) { "#{stacks_pathname}/bc/123/df/4567" } |
| 14 | + let(:content_path) { "#{stacks_pathname}/bf/070/wx/6289/bf070wx6289/content" } |
| 15 | + let(:versions_path) { "#{stacks_pathname}/bf/070/wx/6289/bf070wx6289/versions" } |
| 16 | + let(:stacks_object_path) { "#{stacks_pathname}/bf/070/wx/6289" } |
15 | 17 |
|
16 | 18 | before do |
17 | | - allow(Settings.filesystems).to receive_messages(stacks_root: stacks_pathname, purl_root: purl_pathname) |
| 19 | + allow(Settings.filesystems).to receive_messages(stacks_root: stacks_pathname, purl_root: purl_pathname, globus_root: globus_pathname) |
18 | 20 | FileUtils.rm_rf(stacks_pathname) |
19 | 21 | FileUtils.rm_rf(purl_pathname) |
20 | 22 | end |
|
55 | 57 | type: Cocina::Models::ObjectType.file, |
56 | 58 | label: 'the regular file', |
57 | 59 | filename: 'file2.txt', |
| 60 | + size: 9, |
58 | 61 | version: 1, |
59 | 62 | hasMessageDigests: [ |
60 | 63 | { type: 'md5', digest: '3e25960a79dbc69b674cd4ec67a72c62' } |
|
69 | 72 | type: Cocina::Models::ObjectType.file, |
70 | 73 | label: 'the hierarchical file', |
71 | 74 | filename: 'files/file2.txt', |
| 75 | + size: 9, |
72 | 76 | version: 1, |
73 | 77 | hasMessageDigests: [ |
74 | 78 | { type: 'md5', digest: '5997de4d5abb55f21f652aa61b8f3aaf' } |
|
115 | 119 | type: Cocina::Models::ObjectType.file, |
116 | 120 | label: 'not shelved file', |
117 | 121 | filename: 'not_shelved.txt', |
| 122 | + size: 9, |
118 | 123 | version: 1, |
119 | 124 | hasMessageDigests: [ |
120 | 125 | { type: 'md5', digest: '4f25960a79dbc69b674cd4ec67a72c73' } |
|
129 | 134 | type: Cocina::Models::ObjectType.file, |
130 | 135 | label: 'the regular file', |
131 | 136 | filename: 'file2.txt', |
| 137 | + size: 9, |
132 | 138 | version: 1, |
133 | 139 | hasMessageDigests: [ |
134 | 140 | { type: 'md5', digest: '3e25960a79dbc69b674cd4ec67a72c62' } |
|
143 | 149 | type: Cocina::Models::ObjectType.file, |
144 | 150 | label: 'the hierarchical file', |
145 | 151 | filename: 'files/file2.txt', |
| 152 | + size: 9, |
146 | 153 | version: 1, |
147 | 154 | hasMessageDigests: [ |
148 | 155 | { type: 'md5', digest: '5997de4d5abb55f21f652aa61b8f3aaf' } |
|
161 | 168 |
|
162 | 169 | let(:file_transfers) { { 'file2.txt' => 'd7e54aed-c0c4-48af-af93-bc673f079f9a', 'files/file2.txt' => '7f807e3c-4cde-4b6d-8e76-f24455316a01' } } |
163 | 170 |
|
| 171 | + let(:globus_object_path) { "#{globus_pathname}/bf/070/wx/6289" } |
| 172 | + |
164 | 173 | before do |
165 | 174 | write_file_transfers(file_transfers:, access_transfer_stage:) |
166 | 175 | end |
|
192 | 201 | # Symlinks to stacks filesystem |
193 | 202 | expect("#{stacks_object_path}/file2.txt").to link_to("#{content_path}/3e25960a79dbc69b674cd4ec67a72c62") |
194 | 203 | expect("#{stacks_object_path}/files/file2.txt").to link_to("#{content_path}/5997de4d5abb55f21f652aa61b8f3aaf") |
| 204 | + |
| 205 | + # Hardlinks to globus filesystem |
| 206 | + expect(File).to exist("#{globus_object_path}/file2.txt") |
| 207 | + expect(File).to exist("#{globus_object_path}/files/file2.txt") |
195 | 208 | end |
196 | 209 | end |
197 | 210 |
|
|
212 | 225 | type: Cocina::Models::ObjectType.file, |
213 | 226 | label: 'the to be removed file', |
214 | 227 | filename: 'file1.txt', |
| 228 | + size: 9, |
215 | 229 | version: 1, |
216 | 230 | hasMessageDigests: [ |
217 | 231 | { type: 'md5', digest: '327d41a48b459a2807d750324bd864ce' } |
|
226 | 240 | type: Cocina::Models::ObjectType.file, |
227 | 241 | label: 'the regular file', |
228 | 242 | filename: 'file2.txt', |
| 243 | + size: 9, |
229 | 244 | version: 1, |
230 | 245 | hasMessageDigests: [ |
231 | 246 | { type: 'md5', digest: '3e25960a79dbc69b674cd4ec67a72c62' } |
|
240 | 255 | type: Cocina::Models::ObjectType.file, |
241 | 256 | label: 'the hierarchical file', |
242 | 257 | filename: 'files/file2.txt', |
| 258 | + size: 9, |
243 | 259 | version: 1, |
244 | 260 | hasMessageDigests: [ |
245 | 261 | { type: 'md5', digest: '5997de4d5abb55f21f652aa61b8f3aaf' } |
|
276 | 292 | type: Cocina::Models::ObjectType.file, |
277 | 293 | label: 'the regular file', |
278 | 294 | filename: 'file2.txt', |
| 295 | + size: 9, |
279 | 296 | version: 1, |
280 | 297 | hasMessageDigests: [ |
281 | 298 | { type: 'md5', digest: '4f35960a79dbc69b674cd4ec67a72d73' } |
|
290 | 307 | type: Cocina::Models::ObjectType.file, |
291 | 308 | label: 'the hierarchical file', |
292 | 309 | filename: 'files/file2.txt', |
| 310 | + size: 9, |
293 | 311 | version: 1, |
294 | 312 | hasMessageDigests: [ |
295 | 313 | { type: 'md5', digest: '5997de4d5abb55f21f652aa61b8f3aaf' } |
|
304 | 322 | type: Cocina::Models::ObjectType.file, |
305 | 323 | label: 'the new file', |
306 | 324 | filename: 'file3.txt', |
| 325 | + size: 9, |
307 | 326 | version: 1, |
308 | 327 | hasMessageDigests: [ |
309 | 328 | { type: 'md5', digest: '6007de4d5abb55f21f652aa61b8f3bbg' } |
|
386 | 405 | type: Cocina::Models::ObjectType.file, |
387 | 406 | label: 'the to be removed file', |
388 | 407 | filename: 'file1.txt', |
| 408 | + size: 9, |
389 | 409 | version: 1, |
390 | 410 | hasMessageDigests: [ |
391 | 411 | { type: 'md5', digest: '327d41a48b459a2807d750324bd864ce' } |
|
400 | 420 | type: Cocina::Models::ObjectType.file, |
401 | 421 | label: 'the regular file', |
402 | 422 | filename: 'file2.txt', |
| 423 | + size: 9, |
403 | 424 | version: 1, |
404 | 425 | hasMessageDigests: [ |
405 | 426 | { type: 'md5', digest: '3e25960a79dbc69b674cd4ec67a72c62' } |
|
436 | 457 | type: Cocina::Models::ObjectType.file, |
437 | 458 | label: 'the regular file', |
438 | 459 | filename: 'file2.txt', |
| 460 | + size: 9, |
439 | 461 | version: 1, |
440 | 462 | hasMessageDigests: [ |
441 | 463 | { type: 'md5', digest: '3e25960a79dbc69b674cd4ec67a72c62' } |
|
0 commit comments