lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

bud11_claims.v1.json (46451B)


      1 {
      2   "suite": "blossom_bud11_claims",
      3   "contract_version": "1.0.0",
      4   "vectors": [
      5     {
      6       "id": "action-get",
      7       "kind": "blossom.bud11.action.parse.valid",
      8       "input": { "action": "get" },
      9       "expected": { "action": "get" }
     10     },
     11     {
     12       "id": "action-upload",
     13       "kind": "blossom.bud11.action.parse.valid",
     14       "input": { "action": "upload" },
     15       "expected": { "action": "upload" }
     16     },
     17     {
     18       "id": "action-list",
     19       "kind": "blossom.bud11.action.parse.valid",
     20       "input": { "action": "list" },
     21       "expected": { "action": "list" }
     22     },
     23     {
     24       "id": "action-delete",
     25       "kind": "blossom.bud11.action.parse.valid",
     26       "input": { "action": "delete" },
     27       "expected": { "action": "delete" }
     28     },
     29     {
     30       "id": "action-media",
     31       "kind": "blossom.bud11.action.parse.valid",
     32       "input": { "action": "media" },
     33       "expected": { "action": "media" }
     34     },
     35     {
     36       "id": "action-empty",
     37       "kind": "blossom.bud11.action.parse.invalid",
     38       "input": { "action": "" },
     39       "expected": { "error": "invalid_authorization_action" }
     40     },
     41     {
     42       "id": "action-uppercase",
     43       "kind": "blossom.bud11.action.parse.invalid",
     44       "input": { "action": "Upload" },
     45       "expected": { "error": "invalid_authorization_action" }
     46     },
     47     {
     48       "id": "action-leading-space",
     49       "kind": "blossom.bud11.action.parse.invalid",
     50       "input": { "action": " upload" },
     51       "expected": { "error": "invalid_authorization_action" }
     52     },
     53     {
     54       "id": "action-trailing-space",
     55       "kind": "blossom.bud11.action.parse.invalid",
     56       "input": { "action": "upload " },
     57       "expected": { "error": "invalid_authorization_action" }
     58     },
     59     {
     60       "id": "action-unknown",
     61       "kind": "blossom.bud11.action.parse.invalid",
     62       "input": { "action": "mirror" },
     63       "expected": { "error": "invalid_authorization_action" }
     64     },
     65     {
     66       "id": "domain-basic",
     67       "kind": "blossom.bud11.server_domain.parse.valid",
     68       "input": { "domain": "blossom.radroots.test" },
     69       "expected": { "domain": "blossom.radroots.test" }
     70     },
     71     {
     72       "id": "domain-localhost",
     73       "kind": "blossom.bud11.server_domain.parse.valid",
     74       "input": { "domain": "localhost" },
     75       "expected": { "domain": "localhost" }
     76     },
     77     {
     78       "id": "domain-hyphen-and-digit",
     79       "kind": "blossom.bud11.server_domain.parse.valid",
     80       "input": { "domain": "blob-2.example.test" },
     81       "expected": { "domain": "blob-2.example.test" }
     82     },
     83     {
     84       "id": "domain-canonical-ipv4",
     85       "kind": "blossom.bud11.server_domain.parse.valid",
     86       "input": { "domain": "127.0.0.1" },
     87       "expected": { "domain": "127.0.0.1" }
     88     },
     89     {
     90       "id": "domain-max-label",
     91       "kind": "blossom.bud11.server_domain.parse.valid",
     92       "input": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.test" },
     93       "expected": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.test" }
     94     },
     95     {
     96       "id": "domain-maximum-total-length",
     97       "kind": "blossom.bud11.server_domain.parse.valid",
     98       "input": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" },
     99       "expected": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" }
    100     },
    101     {
    102       "id": "domain-total-length-too-long",
    103       "kind": "blossom.bud11.server_domain.parse.invalid",
    104       "input": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" },
    105       "expected": { "error": "invalid_authorization_server_domain" }
    106     },
    107     {
    108       "id": "domain-empty",
    109       "kind": "blossom.bud11.server_domain.parse.invalid",
    110       "input": { "domain": "" },
    111       "expected": { "error": "invalid_authorization_server_domain" }
    112     },
    113     {
    114       "id": "domain-uppercase",
    115       "kind": "blossom.bud11.server_domain.parse.invalid",
    116       "input": { "domain": "Blossom.Radroots.Test" },
    117       "expected": { "error": "invalid_authorization_server_domain" }
    118     },
    119     {
    120       "id": "domain-scheme",
    121       "kind": "blossom.bud11.server_domain.parse.invalid",
    122       "input": { "domain": "https://blossom.radroots.test" },
    123       "expected": { "error": "invalid_authorization_server_domain" }
    124     },
    125     {
    126       "id": "domain-port",
    127       "kind": "blossom.bud11.server_domain.parse.invalid",
    128       "input": { "domain": "blossom.radroots.test:443" },
    129       "expected": { "error": "invalid_authorization_server_domain" }
    130     },
    131     {
    132       "id": "domain-path",
    133       "kind": "blossom.bud11.server_domain.parse.invalid",
    134       "input": { "domain": "blossom.radroots.test/upload" },
    135       "expected": { "error": "invalid_authorization_server_domain" }
    136     },
    137     {
    138       "id": "domain-trailing-dot",
    139       "kind": "blossom.bud11.server_domain.parse.invalid",
    140       "input": { "domain": "blossom.radroots.test." },
    141       "expected": { "error": "invalid_authorization_server_domain" }
    142     },
    143     {
    144       "id": "domain-empty-label",
    145       "kind": "blossom.bud11.server_domain.parse.invalid",
    146       "input": { "domain": "blossom..test" },
    147       "expected": { "error": "invalid_authorization_server_domain" }
    148     },
    149     {
    150       "id": "domain-leading-hyphen",
    151       "kind": "blossom.bud11.server_domain.parse.invalid",
    152       "input": { "domain": "-blossom.radroots.test" },
    153       "expected": { "error": "invalid_authorization_server_domain" }
    154     },
    155     {
    156       "id": "domain-trailing-hyphen",
    157       "kind": "blossom.bud11.server_domain.parse.invalid",
    158       "input": { "domain": "blossom-.radroots.test" },
    159       "expected": { "error": "invalid_authorization_server_domain" }
    160     },
    161     {
    162       "id": "domain-underscore",
    163       "kind": "blossom.bud11.server_domain.parse.invalid",
    164       "input": { "domain": "blossom_server.radroots.test" },
    165       "expected": { "error": "invalid_authorization_server_domain" }
    166     },
    167     {
    168       "id": "domain-label-too-long",
    169       "kind": "blossom.bud11.server_domain.parse.invalid",
    170       "input": { "domain": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.test" },
    171       "expected": { "error": "invalid_authorization_server_domain" }
    172     },
    173     {
    174       "id": "domain-short-ipv4",
    175       "kind": "blossom.bud11.server_domain.parse.invalid",
    176       "input": { "domain": "127.1" },
    177       "expected": { "error": "invalid_authorization_server_domain" }
    178     },
    179     {
    180       "id": "domain-leading-zero-ipv4",
    181       "kind": "blossom.bud11.server_domain.parse.invalid",
    182       "input": { "domain": "127.00.0.1" },
    183       "expected": { "error": "invalid_authorization_server_domain" }
    184     },
    185     {
    186       "id": "domain-out-of-range-ipv4",
    187       "kind": "blossom.bud11.server_domain.parse.invalid",
    188       "input": { "domain": "256.0.0.1" },
    189       "expected": { "error": "invalid_authorization_server_domain" }
    190     },
    191     {
    192       "id": "content-upload",
    193       "kind": "blossom.bud11.content.parse.valid",
    194       "input": { "content": "Upload farm photo" },
    195       "expected": { "content": "Upload farm photo" }
    196     },
    197     {
    198       "id": "content-delete",
    199       "kind": "blossom.bud11.content.parse.valid",
    200       "input": { "content": "Delete old farm photo" },
    201       "expected": { "content": "Delete old farm photo" }
    202     },
    203     {
    204       "id": "content-unicode",
    205       "kind": "blossom.bud11.content.parse.valid",
    206       "input": { "content": "Téléverser la photo" },
    207       "expected": { "content": "Téléverser la photo" }
    208     },
    209     {
    210       "id": "content-punctuation",
    211       "kind": "blossom.bud11.content.parse.valid",
    212       "input": { "content": "Upload: photo #2!" },
    213       "expected": { "content": "Upload: photo #2!" }
    214     },
    215     {
    216       "id": "content-empty",
    217       "kind": "blossom.bud11.content.parse.invalid",
    218       "input": { "content": "" },
    219       "expected": { "error": "invalid_authorization_content" }
    220     },
    221     {
    222       "id": "content-space-only",
    223       "kind": "blossom.bud11.content.parse.invalid",
    224       "input": { "content": " " },
    225       "expected": { "error": "invalid_authorization_content" }
    226     },
    227     {
    228       "id": "content-leading-space",
    229       "kind": "blossom.bud11.content.parse.invalid",
    230       "input": { "content": " Upload farm photo" },
    231       "expected": { "error": "invalid_authorization_content" }
    232     },
    233     {
    234       "id": "content-trailing-space",
    235       "kind": "blossom.bud11.content.parse.invalid",
    236       "input": { "content": "Upload farm photo " },
    237       "expected": { "error": "invalid_authorization_content" }
    238     },
    239     {
    240       "id": "content-newline",
    241       "kind": "blossom.bud11.content.parse.valid",
    242       "input": { "content": "Upload\nphoto" },
    243       "expected": { "content": "Upload\nphoto" }
    244     },
    245     {
    246       "id": "content-tab",
    247       "kind": "blossom.bud11.content.parse.valid",
    248       "input": { "content": "Upload\tphoto" },
    249       "expected": { "content": "Upload\tphoto" }
    250     },
    251     {
    252       "id": "content-maximum-byte-length",
    253       "kind": "blossom.bud11.content.parse.valid",
    254       "input": { "content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    255       "expected": { "content_byte_length": 4096 }
    256     },
    257     {
    258       "id": "content-byte-length-too-long",
    259       "kind": "blossom.bud11.content.parse.invalid",
    260       "input": { "content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    261       "expected": { "error": "invalid_authorization_content" }
    262     },
    263     {
    264       "id": "content-control",
    265       "kind": "blossom.bud11.content.parse.invalid",
    266       "input": { "content": "Upload\u0000photo" },
    267       "expected": { "error": "invalid_authorization_content" }
    268     },
    269     {
    270       "id": "claim-parse-upload",
    271       "kind": "blossom.bud11.claim.parse.valid",
    272       "input": {
    273         "content": "Upload farm photo",
    274         "created_at": 1999999990,
    275         "tags": [
    276           ["t", "upload"],
    277           ["expiration", "2000000060"],
    278           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
    279           ["server", "blossom.radroots.test"]
    280         ]
    281       },
    282       "expected": {
    283         "content": "Upload farm photo",
    284         "created_at": 1999999990,
    285         "action": "upload",
    286         "expiration": 2000000060,
    287         "servers": ["blossom.radroots.test"],
    288         "hashes": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
    289       }
    290     },
    291     {
    292       "id": "claim-parse-unknown-tags-tolerated",
    293       "kind": "blossom.bud11.claim.parse.valid",
    294       "input": {
    295         "content": "List farm photos",
    296         "created_at": 1999999999,
    297         "tags": [
    298           ["client", "radroots", "future", "fields"],
    299           ["t", "list"],
    300           ["expiration", "2000000001"],
    301           ["future-only"],
    302           []
    303         ]
    304       },
    305       "expected": {
    306         "content": "List farm photos",
    307         "created_at": 1999999999,
    308         "action": "list",
    309         "expiration": 2000000001,
    310         "servers": [],
    311         "hashes": []
    312       }
    313     },
    314     {
    315       "id": "claim-parse-known-trailing-elements-tolerated",
    316       "kind": "blossom.bud11.claim.parse.valid",
    317       "input": {
    318         "content": "Upload farm photo",
    319         "created_at": 1999999990,
    320         "tags": [
    321           ["t", "upload", "ignored"],
    322           ["expiration", "2000000060", "ignored", "again"],
    323           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "ignored"],
    324           ["server", "blossom.radroots.test", "ignored"]
    325         ]
    326       },
    327       "expected": {
    328         "content": "Upload farm photo",
    329         "created_at": 1999999990,
    330         "action": "upload",
    331         "expiration": 2000000060,
    332         "servers": ["blossom.radroots.test"],
    333         "hashes": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
    334       }
    335     },
    336     {
    337       "id": "claim-parse-multiple-scopes",
    338       "kind": "blossom.bud11.claim.parse.valid",
    339       "input": {
    340         "content": "Upload selected farm photos",
    341         "created_at": 1999999990,
    342         "tags": [
    343           ["t", "upload"],
    344           ["expiration", "2000000060"],
    345           ["server", "other.example.test"],
    346           ["server", "blossom.radroots.test"],
    347           ["x", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"],
    348           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
    349         ]
    350       },
    351       "expected": {
    352         "content": "Upload selected farm photos",
    353         "created_at": 1999999990,
    354         "action": "upload",
    355         "expiration": 2000000060,
    356         "servers": ["other.example.test", "blossom.radroots.test"],
    357         "hashes": [
    358           "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    359           "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    360         ]
    361       }
    362     },
    363     {
    364       "id": "claim-parse-uppercase-tag-names-unknown",
    365       "kind": "blossom.bud11.claim.parse.valid",
    366       "input": {
    367         "content": "Get farm photo",
    368         "created_at": 1999999999,
    369         "tags": [
    370           ["T", "delete"],
    371           ["Expiration", "1"],
    372           ["Server", "BAD"],
    373           ["X", "BAD"],
    374           ["t", "get"],
    375           ["expiration", "2000000001"]
    376         ]
    377       },
    378       "expected": {
    379         "content": "Get farm photo",
    380         "created_at": 1999999999,
    381         "action": "get",
    382         "expiration": 2000000001,
    383         "servers": [],
    384         "hashes": []
    385       }
    386     },
    387     {
    388       "id": "claim-parse-invalid-content",
    389       "kind": "blossom.bud11.claim.parse.invalid",
    390       "input": {
    391         "content": "",
    392         "created_at": 1999999990,
    393         "tags": [["t", "upload"], ["expiration", "2000000060"]]
    394       },
    395       "expected": { "error": "invalid_authorization_content" }
    396     },
    397     {
    398       "id": "claim-parse-missing-action",
    399       "kind": "blossom.bud11.claim.parse.invalid",
    400       "input": {
    401         "content": "Upload farm photo",
    402         "created_at": 1999999990,
    403         "tags": [["expiration", "2000000060"]]
    404       },
    405       "expected": { "error": "missing_authorization_action_tag" }
    406     },
    407     {
    408       "id": "claim-parse-duplicate-action",
    409       "kind": "blossom.bud11.claim.parse.invalid",
    410       "input": {
    411         "content": "Upload farm photo",
    412         "created_at": 1999999990,
    413         "tags": [["t", "upload"], ["t", "upload"], ["expiration", "2000000060"]]
    414       },
    415       "expected": { "error": "duplicate_authorization_action_tag" }
    416     },
    417     {
    418       "id": "claim-parse-conflicting-action",
    419       "kind": "blossom.bud11.claim.parse.invalid",
    420       "input": {
    421         "content": "Upload farm photo",
    422         "created_at": 1999999990,
    423         "tags": [["t", "upload"], ["t", "delete"], ["expiration", "2000000060"]]
    424       },
    425       "expected": { "error": "duplicate_authorization_action_tag" }
    426     },
    427     {
    428       "id": "claim-parse-action-missing-value",
    429       "kind": "blossom.bud11.claim.parse.invalid",
    430       "input": {
    431         "content": "Upload farm photo",
    432         "created_at": 1999999990,
    433         "tags": [["t"], ["expiration", "2000000060"]]
    434       },
    435       "expected": { "error": "malformed_authorization_action_tag" }
    436     },
    437     {
    438       "id": "claim-parse-action-invalid-value",
    439       "kind": "blossom.bud11.claim.parse.invalid",
    440       "input": {
    441         "content": "Upload farm photo",
    442         "created_at": 1999999990,
    443         "tags": [["t", "UPLOAD"], ["expiration", "2000000060"]]
    444       },
    445       "expected": { "error": "malformed_authorization_action_tag" }
    446     },
    447     {
    448       "id": "claim-parse-missing-expiration",
    449       "kind": "blossom.bud11.claim.parse.invalid",
    450       "input": {
    451         "content": "Upload farm photo",
    452         "created_at": 1999999990,
    453         "tags": [["t", "upload"]]
    454       },
    455       "expected": { "error": "missing_authorization_expiration_tag" }
    456     },
    457     {
    458       "id": "claim-parse-duplicate-expiration",
    459       "kind": "blossom.bud11.claim.parse.invalid",
    460       "input": {
    461         "content": "Upload farm photo",
    462         "created_at": 1999999990,
    463         "tags": [["t", "upload"], ["expiration", "2000000060"], ["expiration", "2000000061"]]
    464       },
    465       "expected": { "error": "duplicate_authorization_expiration_tag" }
    466     },
    467     {
    468       "id": "claim-parse-expiration-missing-value",
    469       "kind": "blossom.bud11.claim.parse.invalid",
    470       "input": {
    471         "content": "Upload farm photo",
    472         "created_at": 1999999990,
    473         "tags": [["t", "upload"], ["expiration"]]
    474       },
    475       "expected": { "error": "malformed_authorization_expiration_tag" }
    476     },
    477     {
    478       "id": "claim-parse-expiration-nondigit",
    479       "kind": "blossom.bud11.claim.parse.invalid",
    480       "input": {
    481         "content": "Upload farm photo",
    482         "created_at": 1999999990,
    483         "tags": [["t", "upload"], ["expiration", "later"]]
    484       },
    485       "expected": { "error": "malformed_authorization_expiration_tag" }
    486     },
    487     {
    488       "id": "claim-parse-expiration-negative",
    489       "kind": "blossom.bud11.claim.parse.invalid",
    490       "input": {
    491         "content": "Upload farm photo",
    492         "created_at": 1999999990,
    493         "tags": [["t", "upload"], ["expiration", "-1"]]
    494       },
    495       "expected": { "error": "malformed_authorization_expiration_tag" }
    496     },
    497     {
    498       "id": "claim-parse-expiration-overflow",
    499       "kind": "blossom.bud11.claim.parse.invalid",
    500       "input": {
    501         "content": "Upload farm photo",
    502         "created_at": 1999999990,
    503         "tags": [["t", "upload"], ["expiration", "18446744073709551616"]]
    504       },
    505       "expected": { "error": "malformed_authorization_expiration_tag" }
    506     },
    507     {
    508       "id": "claim-parse-server-missing-value",
    509       "kind": "blossom.bud11.claim.parse.invalid",
    510       "input": {
    511         "content": "Upload farm photo",
    512         "created_at": 1999999990,
    513         "tags": [["t", "upload"], ["expiration", "2000000060"], ["server"]]
    514       },
    515       "expected": { "error": "malformed_authorization_server_tag" }
    516     },
    517     {
    518       "id": "claim-parse-server-malformed-before-match",
    519       "kind": "blossom.bud11.claim.parse.invalid",
    520       "input": {
    521         "content": "Upload farm photo",
    522         "created_at": 1999999990,
    523         "tags": [
    524           ["t", "upload"],
    525           ["expiration", "2000000060"],
    526           ["server", "https://bad.example"],
    527           ["server", "blossom.radroots.test"]
    528         ]
    529       },
    530       "expected": { "error": "malformed_authorization_server_tag" }
    531     },
    532     {
    533       "id": "claim-parse-hash-missing-value",
    534       "kind": "blossom.bud11.claim.parse.invalid",
    535       "input": {
    536         "content": "Upload farm photo",
    537         "created_at": 1999999990,
    538         "tags": [["t", "upload"], ["expiration", "2000000060"], ["x"]]
    539       },
    540       "expected": { "error": "malformed_authorization_hash_tag" }
    541     },
    542     {
    543       "id": "claim-parse-hash-malformed-before-match",
    544       "kind": "blossom.bud11.claim.parse.invalid",
    545       "input": {
    546         "content": "Upload farm photo",
    547         "created_at": 1999999990,
    548         "tags": [
    549           ["t", "upload"],
    550           ["expiration", "2000000060"],
    551           ["x", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"],
    552           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]
    553         ]
    554       },
    555       "expected": { "error": "malformed_authorization_hash_tag" }
    556     },
    557     {
    558       "id": "validation-max-age-zero",
    559       "kind": "blossom.bud11.validation.new.valid",
    560       "input": {
    561         "target": { "type": "list" },
    562         "server_domain": "blossom.radroots.test",
    563         "server_scope": "optional_any_match",
    564         "now": 2000000000,
    565         "max_created_age": 0
    566       },
    567       "expected": { "max_created_age": 0 }
    568     },
    569     {
    570       "id": "validation-max-age-300",
    571       "kind": "blossom.bud11.validation.new.valid",
    572       "input": {
    573         "target": { "type": "list" },
    574         "server_domain": "blossom.radroots.test",
    575         "server_scope": "required_any_match",
    576         "now": 2000000000,
    577         "max_created_age": 300
    578       },
    579       "expected": { "max_created_age": 300 }
    580     },
    581     {
    582       "id": "validation-max-age-301",
    583       "kind": "blossom.bud11.validation.new.invalid",
    584       "input": {
    585         "target": { "type": "list" },
    586         "server_domain": "blossom.radroots.test",
    587         "server_scope": "optional_any_match",
    588         "now": 2000000000,
    589         "max_created_age": 301
    590       },
    591       "expected": { "error": "invalid_authorization_created_age" }
    592     },
    593     {
    594       "id": "validate-get-no-hash-scope",
    595       "kind": "blossom.bud11.claim.validate.valid",
    596       "input": {
    597         "claim": { "content": "Get farm photo", "created_at": 1999999999, "tags": [["t", "get"], ["expiration", "2000000001"]] },
    598         "target": { "type": "get_blob", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    599         "server_domain": "blossom.radroots.test",
    600         "server_scope": "optional_any_match",
    601         "now": 2000000000,
    602         "max_created_age": 300
    603       },
    604       "expected": { "action": "get" }
    605     },
    606     {
    607       "id": "validate-get-multiple-hash-any-match",
    608       "kind": "blossom.bud11.claim.validate.valid",
    609       "input": {
    610         "claim": { "content": "Get selected farm photo", "created_at": 1999999990, "tags": [["t", "get"], ["expiration", "2000000060"], ["x", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    611         "target": { "type": "get_blob", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    612         "server_domain": "blossom.radroots.test",
    613         "server_scope": "optional_any_match",
    614         "now": 2000000000,
    615         "max_created_age": 300
    616       },
    617       "expected": { "action": "get" }
    618     },
    619     {
    620       "id": "validate-upload",
    621       "kind": "blossom.bud11.claim.validate.valid",
    622       "input": {
    623         "claim": { "content": "Upload farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"], ["server", "blossom.radroots.test"]] },
    624         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    625         "server_domain": "blossom.radroots.test",
    626         "server_scope": "required_any_match",
    627         "now": 2000000000,
    628         "max_created_age": 300
    629       },
    630       "expected": { "action": "upload" }
    631     },
    632     {
    633       "id": "validate-list",
    634       "kind": "blossom.bud11.claim.validate.valid",
    635       "input": {
    636         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000060"], ["server", "blossom.radroots.test"]] },
    637         "target": { "type": "list" },
    638         "server_domain": "blossom.radroots.test",
    639         "server_scope": "required_any_match",
    640         "now": 2000000000,
    641         "max_created_age": 300
    642       },
    643       "expected": { "action": "list" }
    644     },
    645     {
    646       "id": "validate-delete",
    647       "kind": "blossom.bud11.claim.validate.valid",
    648       "input": {
    649         "claim": { "content": "Delete farm photo", "created_at": 1999999990, "tags": [["t", "delete"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    650         "target": { "type": "delete_blob", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    651         "server_domain": "blossom.radroots.test",
    652         "server_scope": "optional_any_match",
    653         "now": 2000000000,
    654         "max_created_age": 300
    655       },
    656       "expected": { "action": "delete" }
    657     },
    658     {
    659       "id": "validate-mirror-uses-upload",
    660       "kind": "blossom.bud11.claim.validate.valid",
    661       "input": {
    662         "claim": { "content": "Mirror farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    663         "target": { "type": "mirror", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    664         "server_domain": "blossom.radroots.test",
    665         "server_scope": "optional_any_match",
    666         "now": 2000000000,
    667         "max_created_age": 300
    668       },
    669       "expected": { "action": "upload" }
    670     },
    671     {
    672       "id": "validate-media",
    673       "kind": "blossom.bud11.claim.validate.valid",
    674       "input": {
    675         "claim": { "content": "Transform farm photo", "created_at": 1999999990, "tags": [["t", "media"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    676         "target": { "type": "media", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    677         "server_domain": "blossom.radroots.test",
    678         "server_scope": "optional_any_match",
    679         "now": 2000000000,
    680         "max_created_age": 300
    681       },
    682       "expected": { "action": "media" }
    683     },
    684     {
    685       "id": "validate-list-ignores-valid-hash-scopes",
    686       "kind": "blossom.bud11.claim.validate.valid",
    687       "input": {
    688         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    689         "target": { "type": "list" },
    690         "server_domain": "blossom.radroots.test",
    691         "server_scope": "optional_any_match",
    692         "now": 2000000000,
    693         "max_created_age": 300
    694       },
    695       "expected": { "action": "list" }
    696     },
    697     {
    698       "id": "validate-optional-server-absent",
    699       "kind": "blossom.bud11.claim.validate.valid",
    700       "input": {
    701         "claim": { "content": "Upload farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    702         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    703         "server_domain": "blossom.radroots.test",
    704         "server_scope": "optional_any_match",
    705         "now": 2000000000,
    706         "max_created_age": 300
    707       },
    708       "expected": { "action": "upload" }
    709     },
    710     {
    711       "id": "validate-multiple-server-any-match",
    712       "kind": "blossom.bud11.claim.validate.valid",
    713       "input": {
    714         "claim": { "content": "Upload farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"], ["server", "other.example.test"], ["server", "blossom.radroots.test"]] },
    715         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    716         "server_domain": "blossom.radroots.test",
    717         "server_scope": "required_any_match",
    718         "now": 2000000000,
    719         "max_created_age": 300
    720       },
    721       "expected": { "action": "upload" }
    722     },
    723     {
    724       "id": "validate-multiple-hash-any-match-required",
    725       "kind": "blossom.bud11.claim.validate.valid",
    726       "input": {
    727         "claim": { "content": "Upload selected farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    728         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    729         "server_domain": "blossom.radroots.test",
    730         "server_scope": "optional_any_match",
    731         "now": 2000000000,
    732         "max_created_age": 300
    733       },
    734       "expected": { "action": "upload" }
    735     },
    736     {
    737       "id": "validate-created-at-now",
    738       "kind": "blossom.bud11.claim.validate.invalid",
    739       "input": {
    740         "claim": { "content": "List farm photos", "created_at": 2000000000, "tags": [["t", "list"], ["expiration", "2000000001"]] },
    741         "target": { "type": "list" },
    742         "server_domain": "blossom.radroots.test",
    743         "server_scope": "optional_any_match",
    744         "now": 2000000000,
    745         "max_created_age": 0
    746       },
    747       "expected": { "error": "authorization_created_in_future" }
    748     },
    749     {
    750       "id": "validate-horizon-300",
    751       "kind": "blossom.bud11.claim.validate.valid",
    752       "input": {
    753         "claim": { "content": "List farm photos", "created_at": 1999999701, "tags": [["t", "list"], ["expiration", "2000000001"]] },
    754         "target": { "type": "list" },
    755         "server_domain": "blossom.radroots.test",
    756         "server_scope": "optional_any_match",
    757         "now": 2000000000,
    758         "max_created_age": 300
    759       },
    760       "expected": { "action": "list" }
    761     },
    762     {
    763       "id": "validate-action-mismatch",
    764       "kind": "blossom.bud11.claim.validate.invalid",
    765       "input": {
    766         "claim": { "content": "Upload farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]] },
    767         "target": { "type": "delete_blob", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    768         "server_domain": "blossom.radroots.test",
    769         "server_scope": "optional_any_match",
    770         "now": 2000000000,
    771         "max_created_age": 300
    772       },
    773       "expected": { "error": "authorization_action_mismatch" }
    774     },
    775     {
    776       "id": "validate-optional-server-mismatch",
    777       "kind": "blossom.bud11.claim.validate.invalid",
    778       "input": {
    779         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000060"], ["server", "other.example.test"]] },
    780         "target": { "type": "list" },
    781         "server_domain": "blossom.radroots.test",
    782         "server_scope": "optional_any_match",
    783         "now": 2000000000,
    784         "max_created_age": 300
    785       },
    786       "expected": { "error": "authorization_server_mismatch" }
    787     },
    788     {
    789       "id": "validate-required-server-missing",
    790       "kind": "blossom.bud11.claim.validate.invalid",
    791       "input": {
    792         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000060"]] },
    793         "target": { "type": "list" },
    794         "server_domain": "blossom.radroots.test",
    795         "server_scope": "required_any_match",
    796         "now": 2000000000,
    797         "max_created_age": 300
    798       },
    799       "expected": { "error": "authorization_server_required" }
    800     },
    801     {
    802       "id": "validate-required-server-multiple-mismatch",
    803       "kind": "blossom.bud11.claim.validate.invalid",
    804       "input": {
    805         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000060"], ["server", "one.example.test"], ["server", "two.example.test"]] },
    806         "target": { "type": "list" },
    807         "server_domain": "blossom.radroots.test",
    808         "server_scope": "required_any_match",
    809         "now": 2000000000,
    810         "max_created_age": 300
    811       },
    812       "expected": { "error": "authorization_server_mismatch" }
    813     },
    814     {
    815       "id": "validate-required-hash-missing",
    816       "kind": "blossom.bud11.claim.validate.invalid",
    817       "input": {
    818         "claim": { "content": "Upload farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"]] },
    819         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    820         "server_domain": "blossom.radroots.test",
    821         "server_scope": "optional_any_match",
    822         "now": 2000000000,
    823         "max_created_age": 300
    824       },
    825       "expected": { "error": "authorization_hash_required" }
    826     },
    827     {
    828       "id": "validate-required-hash-multiple-mismatch",
    829       "kind": "blossom.bud11.claim.validate.invalid",
    830       "input": {
    831         "claim": { "content": "Upload selected farm photo", "created_at": 1999999990, "tags": [["t", "upload"], ["expiration", "2000000060"], ["x", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"], ["x", "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"]] },
    832         "target": { "type": "upload", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    833         "server_domain": "blossom.radroots.test",
    834         "server_scope": "optional_any_match",
    835         "now": 2000000000,
    836         "max_created_age": 300
    837       },
    838       "expected": { "error": "authorization_hash_mismatch" }
    839     },
    840     {
    841       "id": "validate-get-optional-hash-mismatch",
    842       "kind": "blossom.bud11.claim.validate.invalid",
    843       "input": {
    844         "claim": { "content": "Get selected farm photo", "created_at": 1999999990, "tags": [["t", "get"], ["expiration", "2000000060"], ["x", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"]] },
    845         "target": { "type": "get_blob", "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
    846         "server_domain": "blossom.radroots.test",
    847         "server_scope": "optional_any_match",
    848         "now": 2000000000,
    849         "max_created_age": 300
    850       },
    851       "expected": { "error": "authorization_hash_mismatch" }
    852     },
    853     {
    854       "id": "validate-created-at-future",
    855       "kind": "blossom.bud11.claim.validate.invalid",
    856       "input": {
    857         "claim": { "content": "List farm photos", "created_at": 2000000001, "tags": [["t", "list"], ["expiration", "2000000002"]] },
    858         "target": { "type": "list" },
    859         "server_domain": "blossom.radroots.test",
    860         "server_scope": "optional_any_match",
    861         "now": 2000000000,
    862         "max_created_age": 300
    863       },
    864       "expected": { "error": "authorization_created_in_future" }
    865     },
    866     {
    867       "id": "validate-created-at-stale-301",
    868       "kind": "blossom.bud11.claim.validate.invalid",
    869       "input": {
    870         "claim": { "content": "List farm photos", "created_at": 1999999699, "tags": [["t", "list"], ["expiration", "2000000001"]] },
    871         "target": { "type": "list" },
    872         "server_domain": "blossom.radroots.test",
    873         "server_scope": "optional_any_match",
    874         "now": 2000000000,
    875         "max_created_age": 300
    876       },
    877       "expected": { "error": "authorization_stale" }
    878     },
    879     {
    880       "id": "validate-expiration-at-now",
    881       "kind": "blossom.bud11.claim.validate.invalid",
    882       "input": {
    883         "claim": { "content": "List farm photos", "created_at": 1999999990, "tags": [["t", "list"], ["expiration", "2000000000"]] },
    884         "target": { "type": "list" },
    885         "server_domain": "blossom.radroots.test",
    886         "server_scope": "optional_any_match",
    887         "now": 2000000000,
    888         "max_created_age": 300
    889       },
    890       "expected": { "error": "authorization_expired" }
    891     },
    892     {
    893       "id": "validate-horizon-301",
    894       "kind": "blossom.bud11.claim.validate.invalid",
    895       "input": {
    896         "claim": { "content": "List farm photos", "created_at": 1999999999, "tags": [["t", "list"], ["expiration", "2000000300"]] },
    897         "target": { "type": "list" },
    898         "server_domain": "blossom.radroots.test",
    899         "server_scope": "optional_any_match",
    900         "now": 2000000000,
    901         "max_created_age": 300
    902       },
    903       "expected": { "error": "invalid_authorization_lifetime" }
    904     },
    905     {
    906       "id": "authored-upload-lifetime-1",
    907       "kind": "blossom.bud11.authored_upload.valid",
    908       "input": {
    909         "content": "Upload farm photo",
    910         "server_domain": "blossom.radroots.test",
    911         "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    912         "created_at": 2000000000,
    913         "lifetime": 1
    914       },
    915       "expected": {
    916         "kind": 24242,
    917         "content": "Upload farm photo",
    918         "created_at": 2000000000,
    919         "expiration": 2000000001,
    920         "tags": [
    921           ["t", "upload"],
    922           ["expiration", "2000000001"],
    923           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
    924           ["server", "blossom.radroots.test"]
    925         ]
    926       }
    927     },
    928     {
    929       "id": "authored-upload-lifetime-300",
    930       "kind": "blossom.bud11.authored_upload.valid",
    931       "input": {
    932         "content": "Upload farm photo",
    933         "server_domain": "blossom.radroots.test",
    934         "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    935         "created_at": 2000000000,
    936         "lifetime": 300
    937       },
    938       "expected": {
    939         "kind": 24242,
    940         "content": "Upload farm photo",
    941         "created_at": 2000000000,
    942         "expiration": 2000000300,
    943         "tags": [
    944           ["t", "upload"],
    945           ["expiration", "2000000300"],
    946           ["x", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],
    947           ["server", "blossom.radroots.test"]
    948         ]
    949       }
    950     },
    951     {
    952       "id": "authored-upload-lifetime-zero",
    953       "kind": "blossom.bud11.authored_upload.invalid",
    954       "input": {
    955         "content": "Upload farm photo",
    956         "server_domain": "blossom.radroots.test",
    957         "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    958         "created_at": 2000000000,
    959         "lifetime": 0
    960       },
    961       "expected": { "error": "invalid_authorization_lifetime" }
    962     },
    963     {
    964       "id": "authored-upload-lifetime-301",
    965       "kind": "blossom.bud11.authored_upload.invalid",
    966       "input": {
    967         "content": "Upload farm photo",
    968         "server_domain": "blossom.radroots.test",
    969         "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    970         "created_at": 2000000000,
    971         "lifetime": 301
    972       },
    973       "expected": { "error": "invalid_authorization_lifetime" }
    974     },
    975     {
    976       "id": "authored-upload-expiration-overflow",
    977       "kind": "blossom.bud11.authored_upload.invalid",
    978       "input": {
    979         "content": "Upload farm photo",
    980         "server_domain": "blossom.radroots.test",
    981         "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    982         "created_at": 18446744073709551615,
    983         "lifetime": 1
    984       },
    985       "expected": { "error": "authorization_timestamp_overflow" }
    986     }
    987   ]
    988 }