summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_core.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/tests/test_core.c b/tests/test_core.c
index 56c70dd..70a1ab7 100644
--- a/tests/test_core.c
+++ b/tests/test_core.c
@@ -508,8 +508,18 @@ static void test_pre_migration_snapshot(const char *tmpdir,
sqlite3_close(sdb);
/* the reopened database is at the current version and usable */
+ char ver[16];
+ snprintf(ver, sizeof ver, "%d", BOKF_SCHEMA_VERSION);
v = db_text(db, "SELECT value FROM meta WHERE key='schema_version'");
- CHECK(v && strcmp(v, "6") == 0);
+ CHECK(v && strcmp(v, ver) == 0);
+ free(v);
+ v = db_text(db, "SELECT name FROM sqlite_master WHERE type='trigger'"
+ " AND name='attachments_no_update'");
+ CHECK(v && strcmp(v, "attachments_no_update") == 0);
+ free(v);
+ v = db_text(db, "SELECT name FROM sqlite_master WHERE type='trigger'"
+ " AND name='attachments_no_delete'");
+ CHECK(v && strcmp(v, "attachments_no_delete") == 0);
free(v);
int64_t user_id = 0;
CHECK(db_create_user(db, "migrated", "Migrated", "secret123", 0, &user_id,
@@ -2414,7 +2424,21 @@ int main(void)
sqlite3_finalize(ast);
CHECK(attachment_id > 0);
- /* attachments are re-hashed only with full:true */
+ /* the append-only triggers block updates and deletes; dropping one
+ simulates a modified database file for the re-hash check */
+ err = NULL;
+ CHECK(db_exec(g_db, reqf("UPDATE attachments SET content=x'00'"
+ " WHERE id=%lld", (long long)attachment_id),
+ &err) != 0);
+ free(err);
+ err = NULL;
+ CHECK(db_exec(g_db, reqf("DELETE FROM attachments WHERE id=%lld",
+ (long long)attachment_id),
+ &err) != 0);
+ free(err);
+ err = NULL;
+ CHECK(db_exec(g_db, "DROP TRIGGER attachments_no_update", &err) == 0);
+ free(err);
err = NULL;
CHECK(db_exec(g_db, reqf("UPDATE attachments SET content=x'00'"
" WHERE id=%lld", (long long)attachment_id),