test_upgradeStorageFrom0_0.js (3923B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /** 7 * This test is mainly to verify UpgradeStorageFrom0_0To1_0 method. 8 */ 9 10 function* testSteps() { 11 const origins = [ 12 { 13 path: "storage/default/1007+f+app+++system.gaiamobile.org", 14 obsolete: true, 15 }, 16 17 { 18 path: "storage/default/1007+t+https+++developer.cdn.mozilla.net", 19 obsolete: true, 20 }, 21 22 { 23 path: "storage/default/http+++www.mozilla.org", 24 obsolete: false, 25 url: "http://www.mozilla.org", 26 persistence: "default", 27 }, 28 ]; 29 30 const storageFileName = "storage.sqlite"; 31 const metadataFileName = ".metadata"; 32 const metadata2FileName = ".metadata-v2"; 33 34 const packages = [ 35 // Storage used by FF 36-48 (storage/default/ directory, but no 36 // storage.sqlite and no .metadata-v2 files). 37 "version0_0_profile", 38 "../defaultStorageDirectory_shared", 39 ]; 40 41 info("Clearing"); 42 43 clear(continueToNextStepSync); 44 yield undefined; 45 46 info("Verifying storage"); 47 48 verifyStorage(packages, "beforeInstall"); 49 50 info("Installing packages"); 51 52 installPackages(packages); 53 54 info("Verifying storage"); 55 56 verifyStorage(packages, "afterInstall"); 57 58 info("Checking storage file"); 59 60 let storageFile = getRelativeFile(storageFileName); 61 62 let exists = storageFile.exists(); 63 ok(!exists, "Storage file doesn't exist"); 64 65 info("Checking origin directories"); 66 67 for (let origin of origins) { 68 let originDir = getRelativeFile(origin.path); 69 70 exists = originDir.exists(); 71 ok(exists, "Origin directory does exist"); 72 73 let metadataFile = originDir.clone(); 74 metadataFile.append(metadataFileName); 75 76 exists = metadataFile.exists(); 77 ok(exists, "Metadata file does exist"); 78 79 let metadata2File = originDir.clone(); 80 metadata2File.append(metadata2FileName); 81 82 exists = metadata2File.exists(); 83 ok(!exists, "Metadata file doesn't exist"); 84 } 85 86 info("Initializing"); 87 88 let request = init(continueToNextStepSync); 89 yield undefined; 90 91 Assert.equal(request.resultCode, NS_OK, "Initialization succeeded"); 92 93 info("Verifying storage"); 94 95 verifyStorage(packages, "afterInit"); 96 97 // TODO: Remove this block once temporary storage initialization is able to 98 // ignore unknown directories. 99 getRelativeFile("storage/default/invalid+++example.com").remove(false); 100 getRelativeFile("storage/temporary/invalid+++example.com").remove(false); 101 102 exists = storageFile.exists(); 103 ok(exists, "Storage file does exist"); 104 105 info("Checking origin directories"); 106 107 for (let origin of origins) { 108 let originDir = getRelativeFile(origin.path); 109 110 exists = originDir.exists(); 111 if (origin.obsolete) { 112 ok(!exists, "Origin directory doesn't exist"); 113 } else { 114 ok(exists, "Origin directory does exist"); 115 116 let metadataFile = originDir.clone(); 117 metadataFile.append(metadataFileName); 118 119 exists = metadataFile.exists(); 120 ok(exists, "Metadata file does exist"); 121 122 let metadata2File = originDir.clone(); 123 metadata2File.append(metadata2FileName); 124 125 exists = metadata2File.exists(); 126 ok(exists, "Metadata file does exist"); 127 } 128 } 129 130 info("Initializing temporary storage"); 131 132 request = initTemporaryStorage(continueToNextStepSync); 133 yield undefined; 134 135 Assert.equal(request.resultCode, NS_OK, "Initialization succeeded"); 136 137 info("Initializing origins"); 138 139 for (const origin of origins) { 140 if (!origin.obsolete) { 141 info("Initializing origin"); 142 143 let principal = getPrincipal(origin.url); 144 request = initTemporaryOrigin( 145 origin.persistence, 146 principal, 147 /* createIfNonExistent */ true, 148 continueToNextStepSync 149 ); 150 yield undefined; 151 152 Assert.equal(request.resultCode, NS_OK, "Initialization succeeded"); 153 154 ok(!request.result, "Origin directory wasn't created"); 155 } 156 } 157 158 finishTest(); 159 }