aboutsummaryrefslogtreecommitdiff
path: root/ext/wasm/tester1.c-pp.js
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2024-04-22 16:46:37 +0000
committerstephan <stephan@noemail.net>2024-04-22 16:46:37 +0000
commit0a42e9913b233d433bd526c4c76825d0e1785bb6 (patch)
tree473dc01375481021f4bfec3515545e536b8f9eef /ext/wasm/tester1.c-pp.js
parent4f2f6c74cab89f6075bc77e1ea0ba128ee8f91bf (diff)
downloadsqlite-0a42e9913b233d433bd526c4c76825d0e1785bb6.tar.gz
sqlite-0a42e9913b233d433bd526c4c76825d0e1785bb6.zip
Extend the JS/WASM SEE build support by (A) filtering SEE-related bits out of the JS when not building with SEE and (B) accepting an optional key/textkey/hexkey option to the sqlite3.oo1.DB and subclass constructors to create/open SEE-encrypted databases with. Demonstrate SEE in the test app using the kvvfs. This obviates the changes made in [5c505ee8a7].
FossilOrigin-Name: 8fbda563d2f56f8dd3f695a5711e4356de79035f332270db45d4b33ed52fdfd2
Diffstat (limited to 'ext/wasm/tester1.c-pp.js')
-rw-r--r--ext/wasm/tester1.c-pp.js52
1 files changed, 50 insertions, 2 deletions
diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js
index fdde98635..e78897bed 100644
--- a/ext/wasm/tester1.c-pp.js
+++ b/ext/wasm/tester1.c-pp.js
@@ -1482,7 +1482,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
/*step() skipped intentionally*/.reset(true);
} finally {
T.assert(0===st.finalize())
- .assert(undefined===st.finalize());
+ .assert(undefined===st.finalize());
}
try {
@@ -2587,7 +2587,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
const pVfs = capi.sqlite3_vfs_find('kvvfs');
T.assert(pVfs);
const JDb = this.JDb = sqlite3.oo1.JsStorageDb;
- const unlink = this.kvvfsUnlink = ()=>{JDb.clearStorage(filename)};
+ const unlink = this.kvvfsUnlink = ()=>JDb.clearStorage(this.kvvfsDbFile);
unlink();
let db = new JDb(filename);
try {
@@ -2605,6 +2605,54 @@ globalThis.sqlite3InitModule = sqlite3InitModule;
}
}
}/*kvvfs sanity checks*/)
+//#if enable-see
+ .t({
+ name: 'kvvfs with SEE encryption',
+ predicate: ()=>(isUIThread()
+ || "Only available in main thread."),
+ test: function(sqlite3){
+ this.kvvfsUnlink();
+ let db;
+ try{
+ db = new this.JDb({
+ filename: this.kvvfsDbFile,
+ key: 'foo'
+ });
+ db.exec([
+ "create table t(a,b);",
+ "insert into t(a,b) values(1,2),(3,4)"
+ ]);
+ db.close();
+ let err;
+ try{
+ db = new this.JDb({
+ filename: this.kvvfsDbFile,
+ flags: 'ct'
+ });
+ T.assert(db) /* opening is fine, but... */;
+ db.exec("select 1 from sqlite_schema");
+ console.warn("sessionStorage =",sessionStorage);
+ }catch(e){
+ err = e;
+ }finally{
+ db.close();
+ }
+ T.assert(err,"Expecting an exception")
+ .assert(sqlite3.capi.SQLITE_NOTADB==err.resultCode,
+ "Expecting NOTADB");
+ db = new sqlite3.oo1.DB({
+ filename: this.kvvfsDbFile,
+ vfs: 'kvvfs',
+ hexkey: new Uint8Array([0x66,0x6f,0x6f]) // equivalent: '666f6f'
+ });
+ T.assert( 4===db.selectValue('select sum(a) from t') );
+ }finally{
+ if( db ) db.close();
+ this.kvvfsUnlink();
+ }
+ }
+ })/*kvvfs with SEE*/
+//#endif enable-see
;/* end kvvfs tests */
////////////////////////////////////////////////////////////////////////