/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// This file tests basics of loading SQLite extension.
const VALID_EXTENSION_NAME =
"fts5";
add_setup(async
function () {
cleanup();
});
add_task(async
function test_valid_call() {
info(
"Testing valid call");
let conn = getOpenedUnsharedDatabase();
await
new Promise((resolve, reject) => {
conn.loadExtension(VALID_EXTENSION_NAME, status => {
if (Components.isSuccessCode(status)) {
resolve();
}
else {
reject(status);
}
});
});
cleanup();
});
add_task(async
function test_invalid_calls() {
info(
"Testing invalid calls");
let conn = getOpenedUnsharedDatabase();
await
Assert.rejects(
new Promise((resolve, reject) => {
conn.loadExtension(
"unknown", status => {
if (Components.isSuccessCode(status)) {
resolve();
}
else {
reject(status);
}
});
}),
/NS_ERROR_ILLEGAL_VALUE/,
"Should fail loading unknown extension"
);
cleanup();
await
Assert.rejects(
new Promise((resolve, reject) => {
conn.loadExtension(VALID_EXTENSION_NAME, status => {
if (Components.isSuccessCode(status)) {
resolve();
}
else {
reject(status);
}
});
}),
/NS_ERROR_NOT_INITIALIZED/,
"Should fail loading extension on a closed connection"
);
});
add_task(async
function test_more_invalid_calls() {
let conn = getOpenedUnsharedDatabase();
let promiseClosed = asyncClose(conn);
await
Assert.rejects(
new Promise((resolve, reject) => {
conn.loadExtension(VALID_EXTENSION_NAME, status => {
if (Components.isSuccessCode(status)) {
resolve();
}
else {
reject(status);
}
});
}),
/NS_ERROR_NOT_INITIALIZED/,
"Should fail loading extension on a closing connection"
);
await promiseClosed;
});