tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }