-
Notifications
You must be signed in to change notification settings - Fork 65
/
SS4CrazyFileMigrationHelperTest.php
71 lines (57 loc) · 2.73 KB
/
SS4CrazyFileMigrationHelperTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
namespace SilverStripe\Assets\Tests\Dev\Tasks;
use SilverStripe\Assets\FilenameParsing\FileIDHelperResolutionStrategy;
use SilverStripe\Assets\FilenameParsing\HashFileIDHelper;
use SilverStripe\Assets\FilenameParsing\LegacyFileIDHelper;
use SilverStripe\Assets\FilenameParsing\NaturalFileIDHelper;
use SilverStripe\Assets\Storage\AssetStore;
use SilverStripe\Assets\Storage\FileHashingService;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Versioned\Versioned;
/**
* We're testing an impossible scenario where our user was using hash files for protected files and SS3 format for
* public ones. We're transitioning to a scenario where Hash paths are used for both protected and public files.
*
* This is meant to test the robustness of the solution under a weird set up.
*/
class SS4CrazyFileMigrationHelperTest extends SS4FileMigrationHelperTest
{
/**
* Called by set up before creating all the fixture entries. Defines the original startegies for the assets store.
*/
protected function defineOriginStrategy()
{
/** @var FlysystemAssetStore $store */
$store = Injector::inst()->get(AssetStore::class);
$hashHelper = new HashFileIDHelper();
$legacyHelper = new LegacyFileIDHelper();
$protected = FileIDHelperResolutionStrategy::create();
$protected->setVersionedStage(Versioned::DRAFT);
$protected->setDefaultFileIDHelper($hashHelper);
$protected->setResolutionFileIDHelpers([$hashHelper]);
$store->setProtectedResolutionStrategy($protected);
$public = FileIDHelperResolutionStrategy::create();
$public->setVersionedStage(Versioned::LIVE);
$public->setDefaultFileIDHelper($legacyHelper);
$public->setResolutionFileIDHelpers([$legacyHelper]);
$store->setPublicResolutionStrategy($public);
}
protected function defineDestinationStrategy()
{
/** @var FlysystemAssetStore $store */
$store = Injector::inst()->get(AssetStore::class);
$hashHelper = new HashFileIDHelper();
$naturalPath = new NaturalFileIDHelper();
$legacyHelper = new LegacyFileIDHelper();
$protected = FileIDHelperResolutionStrategy::create();
$protected->setVersionedStage(Versioned::DRAFT);
$protected->setDefaultFileIDHelper($hashHelper);
$protected->setResolutionFileIDHelpers([$hashHelper]);
$store->setProtectedResolutionStrategy($protected);
$public = FileIDHelperResolutionStrategy::create();
$public->setVersionedStage(Versioned::LIVE);
$public->setDefaultFileIDHelper($hashHelper);
$public->setResolutionFileIDHelpers([$hashHelper, $naturalPath, $legacyHelper]);
$store->setPublicResolutionStrategy($public);
}
}