tor-browser

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

bucket_names.tentative.https.any.js (3156B)


      1 // META: title=Buckets API: Basic tests for bucket names.
      2 // META: script=resources/util.js
      3 // META: global=window,worker
      4 
      5 const kGoodBucketNameTests = [
      6  ['abcdefghijklmnopqrstuvwxyz0123456789-_', 'with allowed characters'],
      7  ['2021-01-01', 'with `-` in the middle'],
      8  ['2021_01_01', 'with `_` in the middle'],
      9  ['2021_01_01_', 'ending with `_`'],
     10  ['2021-01-01-', 'ending with `-`'],
     11 ];
     12 
     13 const kBadBucketNameTests = [
     14  ['_bucket', 'start with `_`'],
     15  ['-bucket', 'start with `-`'],
     16  ['bucket name', 'have a space'],
     17  ['bUcKet123', 'are not all lower case'],
     18  ['bucket♦♥♠♣', 'are not in ASCII'],
     19  ['2021/01/01', 'include an invalid special character'],
     20  ['   ', 'have no characters'],
     21  ['', 'are an empty string'],
     22  ['mjnkhtwsiyjsrxvrzzqafldfvomqopdjfiuxqelfkllcugrhvvblkvmiqlguhhqepoggyu',
     23   'exceed 64 chars']
     24 ];
     25 
     26 // Test valid bucket names on open().
     27 kGoodBucketNameTests.forEach(test_data => {
     28  const bucket_name = test_data[0];
     29  const test_description = test_data[1];
     30 
     31  promise_test(async testCase => {
     32    await prepareForBucketTest(testCase);
     33    const bucket = await navigator.storageBuckets.open(bucket_name);
     34    assert_equals(bucket.name, bucket_name);
     35 
     36    const buckets = await navigator.storageBuckets.keys();
     37    assert_array_equals(buckets, [bucket_name]);
     38  }, `open() allows bucket names ${test_description}`);
     39 });
     40 
     41 // Test invalid bucket names on open().
     42 kBadBucketNameTests.forEach(test_data => {
     43  const bucket_name = test_data[0];
     44  const test_description = test_data[1];
     45 
     46  promise_test(async testCase => {
     47    await prepareForBucketTest(testCase);
     48    return promise_rejects_js(
     49        testCase, TypeError,
     50        navigator.storageBuckets.open(bucket_name));
     51  }, `open() throws an error if bucket names ${test_description}`);
     52 });
     53 
     54 // Test valid bucket names on delete().
     55 kGoodBucketNameTests.forEach(test_data => {
     56  const bucket_name = test_data[0];
     57  const test_description = test_data[1];
     58 
     59  promise_test(async testCase => {
     60    await prepareForBucketTest(testCase);
     61    await navigator.storageBuckets.open(bucket_name);
     62    let buckets = await navigator.storageBuckets.keys();
     63    assert_equals(buckets.length, 1);
     64 
     65    await navigator.storageBuckets.delete(bucket_name);
     66 
     67    buckets = await navigator.storageBuckets.keys();
     68    assert_equals(buckets.length, 0);
     69  }, `delete() allows bucket names ${test_description}`);
     70 });
     71 
     72 // Test invalid bucket names on delete().
     73 kBadBucketNameTests.forEach(test_data => {
     74  const bucket_name = test_data[0];
     75  const test_description = test_data[1];
     76 
     77  promise_test(async testCase => {
     78    await prepareForBucketTest(testCase);
     79    return promise_rejects_js(
     80        testCase, TypeError,
     81        navigator.storageBuckets.delete(bucket_name));
     82  }, `delete() throws an error if bucket names ${test_description}`);
     83 });
     84 
     85 promise_test(async testCase => {
     86  await prepareForBucketTest(testCase);
     87 
     88  await navigator.storageBuckets.open('bucket_name');
     89  await navigator.storageBuckets.open('bucket_name');
     90 
     91  const buckets = await navigator.storageBuckets.keys();
     92  assert_array_equals(buckets, ['bucket_name']);
     93 }, 'open() does not store duplicate bucket names');