from test/more import *;

requires_capability( "fs" );
requires_capability( "db" );

from std/db import DB;
from std/io import Path;
from std/string/base64 import decode, encode;

let payload := ~to_binary("A\u0000B\u0001C\u00ff");
let bin_file := Path.tempfile();
bin_file.spew(payload);
let raw := bin_file.slurp();

let dbh := DB.temp();
dbh.prepare( "create table blobs (id integer, b64 text)" ).execute();
let ins := dbh.prepare( "insert into blobs (id, b64) values (?, ?)" );
ins.execute( 1, encode(raw) );

let q := dbh.prepare( "select b64 from blobs where id = 1" );
q.execute();
let stored := q.next_array()[0];
let decoded := decode(stored);

is( typeof decoded, "BinaryString", "decoded db payload is BinaryString" );
ok( decoded == raw, "binary payload roundtrips through db base64 storage" );

done_testing();
