Files
UUVPN/iOS-SwiftUI-Code/GRDB.swift-6.29.3/Tests/GRDBTests/DatabaseQueueReadOnlyTests.swift
T
2025-01-28 12:28:03 +08:00

40 lines
1.4 KiB
Swift

import XCTest
import GRDB
class DatabaseQueueReadOnlyTests : GRDBTestCase {
func testOpenReadOnlyMissingDatabase() throws {
dbConfiguration.readonly = true
do {
_ = try makeDatabaseQueue()
} catch let error as DatabaseError {
XCTAssertEqual(error.resultCode, .SQLITE_CANTOPEN)
}
}
func testReadOnlyDatabaseCanNotBeModified() throws {
// Create database
do {
_ = try makeDatabaseQueue(filename: "test.sqlite")
}
// Open it again, readonly
dbConfiguration.readonly = true
let dbQueue = try makeDatabaseQueue(filename: "test.sqlite")
let statement = try dbQueue.inDatabase { db in
try db.makeStatement(sql: "CREATE TABLE items (id INTEGER PRIMARY KEY)")
}
do {
try dbQueue.inDatabase { db in
try statement.execute()
}
XCTFail()
} catch let error as DatabaseError {
XCTAssertEqual(error.resultCode, .SQLITE_READONLY)
XCTAssertEqual(error.message!, "attempt to write a readonly database")
XCTAssertEqual(error.sql!, "CREATE TABLE items (id INTEGER PRIMARY KEY)")
XCTAssertEqual(error.description, "SQLite error 8: attempt to write a readonly database - while executing `CREATE TABLE items (id INTEGER PRIMARY KEY)`")
}
}
}