diff options
Diffstat (limited to 'tests/test_core.c')
| -rw-r--r-- | tests/test_core.c | 28 |
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), |
