40 lines
1.4 KiB
Swift
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)`")
|
|
}
|
|
}
|
|
}
|