test_persist.js (5387B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 function* testSteps() { 7 const origin = { 8 url: "http://default.test.persist", 9 path: "storage/default/http+++default.test.persist", 10 persistence: "default", 11 }; 12 13 const metadataFileName = ".metadata-v2"; 14 15 let principal = getPrincipal(origin.url); 16 17 info("Persisting an uninitialized origin"); 18 19 // Origin directory doesn't exist yet, so only check the result for 20 // persisted(). 21 let request = persisted(principal, continueToNextStepSync); 22 yield undefined; 23 24 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 25 ok(!request.result, "The origin is not persisted"); 26 27 info("Verifying persist() does update the metadata"); 28 29 request = persist(principal, continueToNextStepSync); 30 yield undefined; 31 32 Assert.strictEqual(request.resultCode, NS_OK, "Persist() succeeded"); 33 34 let originDir = getRelativeFile(origin.path); 35 let exists = originDir.exists(); 36 ok(exists, "Origin directory does exist"); 37 38 info("Reading out contents of metadata file"); 39 40 let metadataFile = originDir.clone(); 41 metadataFile.append(metadataFileName); 42 43 File.createFromNsIFile(metadataFile).then(grabArgAndContinueHandler); 44 let file = yield undefined; 45 46 let fileReader = new FileReader(); 47 fileReader.onload = continueToNextStepSync; 48 fileReader.readAsArrayBuffer(file); 49 yield undefined; 50 51 let originPersisted = getPersistedFromMetadata(fileReader.result); 52 ok(originPersisted, "The origin is persisted"); 53 54 info("Verifying persisted()"); 55 56 request = persisted(principal, continueToNextStepSync); 57 yield undefined; 58 59 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 60 Assert.strictEqual( 61 request.result, 62 originPersisted, 63 "Persisted() concurs with metadata" 64 ); 65 66 info("Clearing the origin"); 67 68 // Clear the origin since we'll test the same directory again under different 69 // circumstances. 70 clearOrigin(principal, origin.persistence, continueToNextStepSync); 71 yield undefined; 72 73 info("Persisting an already initialized origin"); 74 75 initTemporaryStorage(continueToNextStepSync); 76 yield undefined; 77 78 initTemporaryOrigin( 79 origin.persistence, 80 principal, 81 /* createIfNonExistent */ true, 82 continueToNextStepSync 83 ); 84 yield undefined; 85 86 info("Reading out contents of metadata file"); 87 88 fileReader = new FileReader(); 89 fileReader.onload = continueToNextStepSync; 90 fileReader.readAsArrayBuffer(file); 91 yield undefined; 92 93 originPersisted = getPersistedFromMetadata(fileReader.result); 94 ok(!originPersisted, "The origin isn't persisted after clearing"); 95 96 info("Verifying persisted()"); 97 98 request = persisted(principal, continueToNextStepSync); 99 yield undefined; 100 101 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 102 Assert.strictEqual( 103 request.result, 104 originPersisted, 105 "Persisted() concurs with metadata" 106 ); 107 108 info("Verifying persist() does update the metadata"); 109 110 request = persist(principal, continueToNextStepSync); 111 yield undefined; 112 113 Assert.strictEqual(request.resultCode, NS_OK, "Persist() succeeded"); 114 115 info("Reading out contents of metadata file"); 116 117 fileReader = new FileReader(); 118 fileReader.onload = continueToNextStepSync; 119 fileReader.readAsArrayBuffer(file); 120 yield undefined; 121 122 originPersisted = getPersistedFromMetadata(fileReader.result); 123 ok(originPersisted, "The origin is persisted"); 124 125 info("Verifying persisted()"); 126 127 request = persisted(principal, continueToNextStepSync); 128 yield undefined; 129 130 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 131 Assert.strictEqual( 132 request.result, 133 originPersisted, 134 "Persisted() concurs with metadata" 135 ); 136 137 info("Clearing the origin"); 138 139 // Clear the origin since we'll test the same directory again under different 140 // circumstances. 141 clearOrigin(principal, origin.persistence, continueToNextStepSync); 142 yield undefined; 143 144 info( 145 "Persisting an uninitialized origin when temporary storage is already initialized" 146 ); 147 148 initTemporaryStorage(continueToNextStepSync); 149 yield undefined; 150 151 exists = originDir.exists(); 152 ok(!exists, "Origin directory does not exist"); 153 154 exists = metadataFile.exists(); 155 ok(!exists, "Metadata file does not exist"); 156 157 info("Verifying persisted()"); 158 159 request = persisted(principal, continueToNextStepSync); 160 yield undefined; 161 162 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 163 ok(!request.result, "Persisted() concurs with metadata"); 164 165 info("Verifying persist() does update the metadata"); 166 167 request = persist(principal, continueToNextStepSync); 168 yield undefined; 169 170 Assert.strictEqual(request.resultCode, NS_OK, "Persist() succeeded"); 171 172 info("Reading out contents of metadata file"); 173 174 fileReader = new FileReader(); 175 fileReader.onload = continueToNextStepSync; 176 fileReader.readAsArrayBuffer(file); 177 yield undefined; 178 179 originPersisted = getPersistedFromMetadata(fileReader.result); 180 ok(originPersisted, "The origin is persisted"); 181 182 info("Verifying persisted()"); 183 184 request = persisted(principal, continueToNextStepSync); 185 yield undefined; 186 187 Assert.strictEqual(request.resultCode, NS_OK, "Persisted() succeeded"); 188 Assert.strictEqual( 189 request.result, 190 originPersisted, 191 "Persisted() concurs with metadata" 192 ); 193 194 finishTest(); 195 }