aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-02-22 13:38:03 -0500
committertoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-02-22 13:38:03 -0500
commit12e0923b63492c8ba5ca949d5ce0f3ad8aeb01d0 (patch)
tree86df1a58cf00f5ddf0f29c3c9130bd8113003648
parent77a3dadd0b128f4421e16c3465fbf609c483241b (diff)
Add some basic invalid dictionaries to test
-rw-r--r--test/data/dictionaries/invalid-dictionary1/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary2/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary2/kanji_bank_1.json3
-rw-r--r--test/data/dictionaries/invalid-dictionary3/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary3/kanji_meta_bank_1.json1
-rw-r--r--test/data/dictionaries/invalid-dictionary4/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary4/tag_bank_1.json3
-rw-r--r--test/data/dictionaries/invalid-dictionary5/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary5/term_bank_1.json3
-rw-r--r--test/data/dictionaries/invalid-dictionary6/index.json7
-rw-r--r--test/data/dictionaries/invalid-dictionary6/term_meta_bank_1.json1
-rw-r--r--test/test-database.js42
12 files changed, 95 insertions, 0 deletions
diff --git a/test/data/dictionaries/invalid-dictionary1/index.json b/test/data/dictionaries/invalid-dictionary1/index.json
new file mode 100644
index 00000000..1be3b360
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary1/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 1",
+ "format": 0,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Invalid format number"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary2/index.json b/test/data/dictionaries/invalid-dictionary2/index.json
new file mode 100644
index 00000000..ba2cc669
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary2/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 2",
+ "format": 3,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Empty entry in kanji bank"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary2/kanji_bank_1.json b/test/data/dictionaries/invalid-dictionary2/kanji_bank_1.json
new file mode 100644
index 00000000..5825bcac
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary2/kanji_bank_1.json
@@ -0,0 +1,3 @@
+[
+ []
+] \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary3/index.json b/test/data/dictionaries/invalid-dictionary3/index.json
new file mode 100644
index 00000000..f23fa3f0
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary3/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 3",
+ "format": 3,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Invalid type entry in kanji meta bank"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary3/kanji_meta_bank_1.json b/test/data/dictionaries/invalid-dictionary3/kanji_meta_bank_1.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary3/kanji_meta_bank_1.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary4/index.json b/test/data/dictionaries/invalid-dictionary4/index.json
new file mode 100644
index 00000000..542791d7
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary4/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 4",
+ "format": 3,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Invalid value as part of a tag bank entry"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary4/tag_bank_1.json b/test/data/dictionaries/invalid-dictionary4/tag_bank_1.json
new file mode 100644
index 00000000..4f19b476
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary4/tag_bank_1.json
@@ -0,0 +1,3 @@
+[
+ [{"invalid": true}, "category1", 0, "tag1 notes", 0]
+] \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary5/index.json b/test/data/dictionaries/invalid-dictionary5/index.json
new file mode 100644
index 00000000..e0d0f00e
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary5/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 5",
+ "format": 3,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Invalid type as part of a term bank entry"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary5/term_bank_1.json b/test/data/dictionaries/invalid-dictionary5/term_bank_1.json
new file mode 100644
index 00000000..7288a996
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary5/term_bank_1.json
@@ -0,0 +1,3 @@
+[
+ ["打", "だ", "tag1 tag2", "", 2, false, 1, "tag3 tag4 tag5"]
+] \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary6/index.json b/test/data/dictionaries/invalid-dictionary6/index.json
new file mode 100644
index 00000000..b91acca3
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary6/index.json
@@ -0,0 +1,7 @@
+{
+ "title": "Invalid Dictionary 6",
+ "format": 3,
+ "revision": "test",
+ "sequenced": true,
+ "description": "Invalid root type for term meta bank"
+} \ No newline at end of file
diff --git a/test/data/dictionaries/invalid-dictionary6/term_meta_bank_1.json b/test/data/dictionaries/invalid-dictionary6/term_meta_bank_1.json
new file mode 100644
index 00000000..02e4a84d
--- /dev/null
+++ b/test/data/dictionaries/invalid-dictionary6/term_meta_bank_1.json
@@ -0,0 +1 @@
+false \ No newline at end of file
diff --git a/test/test-database.js b/test/test-database.js
index 6fe515e6..4fb3805d 100644
--- a/test/test-database.js
+++ b/test/test-database.js
@@ -849,6 +849,45 @@ async function testDatabase2() {
}
+async function testDatabase3() {
+ const invalidDictionaries = [
+ 'invalid-dictionary1',
+ 'invalid-dictionary2',
+ 'invalid-dictionary3',
+ 'invalid-dictionary4',
+ 'invalid-dictionary5',
+ 'invalid-dictionary6'
+ ];
+
+ // Setup database
+ const database = new Database();
+ await database.prepare();
+
+ for (const invalidDictionary of invalidDictionaries) {
+ const testDictionary = yomichanTest.createTestDictionaryArchive(invalidDictionary);
+ const testDictionarySource = await testDictionary.generateAsync({type: 'string'});
+
+ let error = null;
+ try {
+ await database.importDictionary(testDictionarySource, () => {}, {});
+ } catch (e) {
+ error = e;
+ }
+
+ if (error === null) {
+ assert.ok(false, `Expected an error while importing ${invalidDictionary}`);
+ } else {
+ const prefix = 'Dictionary has invalid data';
+ const message = error.message;
+ assert.ok(typeof message, 'string');
+ assert.ok(message.startsWith(prefix), `Expected error message to start with '${prefix}': ${message}`);
+ }
+ }
+
+ await database.close();
+}
+
+
async function main() {
const clearTimeout = 5000;
try {
@@ -857,6 +896,9 @@ async function main() {
await testDatabase2();
await clearDatabase(clearTimeout);
+
+ await testDatabase3();
+ await clearDatabase(clearTimeout);
} catch (e) {
console.log(e);
process.exit(-1);