Skip to content

Commit 53dda83

Browse files
committed
Add test to read pre-encrypted file
1 parent 4747d9e commit 53dda83

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

SQLite.xcodeproj/project.pbxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,15 @@
4646
03A65E941C6BB3030062603F /* ValueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B331C3F142E00AE3E12 /* ValueTests.swift */; };
4747
03A65E951C6BB3030062603F /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B161C3F127200AE3E12 /* TestHelpers.swift */; };
4848
03A65E971C6BB3210062603F /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 03A65E961C6BB3210062603F /* libsqlite3.tbd */; };
49+
19A1709C3E7A406E62293B2A /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; };
4950
19A1717B10CC941ACB5533D6 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; };
5051
19A171E6FA242F72A308C594 /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; };
5152
19A171F12AB8B07F2FD7201A /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; };
5253
19A17254FBA7894891F7297B /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; };
54+
19A17408007B182F884E3A53 /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; };
5355
19A174D78559CD30679BCCCB /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; };
5456
19A1750CEE9B05267995CF3D /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; };
57+
19A175DFF47B84757E547C62 /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; };
5558
19A177CC33F2E6A24AF90B02 /* CipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17399EA9E61235D5D77BF /* CipherTests.swift */; };
5659
19A178072B371489E6A1E839 /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; };
5760
19A17835FD5886FDC5A3228F /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; };
@@ -61,7 +64,10 @@
6164
19A17C4B951CB054EE48AB1C /* CipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17399EA9E61235D5D77BF /* CipherTests.swift */; };
6265
19A17E04C4C0956715C5676A /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; };
6366
19A17EC0D68BA8C03288ADF7 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; };
67+
19A17F3E1F7ACA33BD43E138 /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; };
68+
19A17F60B685636D1F83C2DD /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; };
6469
19A17FB80B94E882050AA908 /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; };
70+
19A17FDA323BAFDEC627E76F /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; };
6571
3D67B3E61DB2469200A4F4C6 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D67B3E51DB2469200A4F4C6 /* libsqlite3.tbd */; };
6672
3D67B3E71DB246BA00A4F4C6 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEE1C3F06E900AE3E12 /* Blob.swift */; };
6773
3D67B3E81DB246BA00A4F4C6 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEF1C3F06E900AE3E12 /* Connection.swift */; };
@@ -199,6 +205,8 @@
199205
19A17399EA9E61235D5D77BF /* CipherTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CipherTests.swift; sourceTree = "<group>"; };
200206
19A178A39ACA9667A62663CC /* Cipher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cipher.swift; sourceTree = "<group>"; };
201207
19A1794CC4D7827E997E32A7 /* FoundationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FoundationTests.swift; sourceTree = "<group>"; };
208+
19A17B93B48B5560E6E51791 /* Fixtures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Fixtures.swift; sourceTree = "<group>"; };
209+
19A17E2695737FAB5D6086E3 /* fixtures */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; path = fixtures; sourceTree = "<group>"; };
202210
39548A631CA63C740003E3B5 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
203211
39548A651CA63C740003E3B5 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
204212
39548A671CA63C740003E3B5 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
@@ -465,6 +473,8 @@
465473
19A1721B8984686B9963B45D /* FTS5Tests.swift */,
466474
19A1794CC4D7827E997E32A7 /* FoundationTests.swift */,
467475
19A17399EA9E61235D5D77BF /* CipherTests.swift */,
476+
19A17E2695737FAB5D6086E3 /* fixtures */,
477+
19A17B93B48B5560E6E51791 /* Fixtures.swift */,
468478
);
469479
path = SQLiteTests;
470480
sourceTree = "<group>";
@@ -792,6 +802,7 @@
792802
isa = PBXResourcesBuildPhase;
793803
buildActionMask = 2147483647;
794804
files = (
805+
19A17F3E1F7ACA33BD43E138 /* fixtures in Resources */,
795806
);
796807
runOnlyForDeploymentPostprocessing = 0;
797808
};
@@ -813,6 +824,7 @@
813824
isa = PBXResourcesBuildPhase;
814825
buildActionMask = 2147483647;
815826
files = (
827+
19A17FDA323BAFDEC627E76F /* fixtures in Resources */,
816828
);
817829
runOnlyForDeploymentPostprocessing = 0;
818830
};
@@ -827,6 +839,7 @@
827839
isa = PBXResourcesBuildPhase;
828840
buildActionMask = 2147483647;
829841
files = (
842+
19A175DFF47B84757E547C62 /* fixtures in Resources */,
830843
);
831844
runOnlyForDeploymentPostprocessing = 0;
832845
};
@@ -882,6 +895,7 @@
882895
19A17254FBA7894891F7297B /* FTS5Tests.swift in Sources */,
883896
19A17E04C4C0956715C5676A /* FoundationTests.swift in Sources */,
884897
19A179A0C45377CB09BB358C /* CipherTests.swift in Sources */,
898+
19A17F60B685636D1F83C2DD /* Fixtures.swift in Sources */,
885899
);
886900
runOnlyForDeploymentPostprocessing = 0;
887901
};
@@ -961,6 +975,7 @@
961975
19A171E6FA242F72A308C594 /* FTS5Tests.swift in Sources */,
962976
19A17FB80B94E882050AA908 /* FoundationTests.swift in Sources */,
963977
19A177CC33F2E6A24AF90B02 /* CipherTests.swift in Sources */,
978+
19A17408007B182F884E3A53 /* Fixtures.swift in Sources */,
964979
);
965980
runOnlyForDeploymentPostprocessing = 0;
966981
};
@@ -1013,6 +1028,7 @@
10131028
19A174D78559CD30679BCCCB /* FTS5Tests.swift in Sources */,
10141029
19A178072B371489E6A1E839 /* FoundationTests.swift in Sources */,
10151030
19A17C4B951CB054EE48AB1C /* CipherTests.swift in Sources */,
1031+
19A1709C3E7A406E62293B2A /* Fixtures.swift in Sources */,
10161032
);
10171033
runOnlyForDeploymentPostprocessing = 0;
10181034
};

SQLiteTests/CipherTests.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ class CipherTests: XCTestCase {
3030
XCTAssertEqual(1, try! db1.scalar("SELECT count(*) FROM foo") as? Int64)
3131
}
3232

33+
func test_key_blob_literal() {
34+
let db = try! Connection()
35+
try! db.key("x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99'")
36+
}
37+
3338
func test_rekey() {
3439
try! db1.rekey("goodbye")
3540
XCTAssertEqual(1, try! db1.scalar("SELECT count(*) FROM foo") as? Int64)
@@ -67,6 +72,17 @@ class CipherTests: XCTestCase {
6772
XCTAssertEqual(SQLITE_NOTADB, rc)
6873
}
6974

75+
func test_open_db_encrypted_with_sqlcipher() {
76+
// $ sqlcipher SQLiteTests/fixtures/encrypted.sqlite
77+
// sqlite> pragma key = 'sqlcipher-test';
78+
// sqlite> CREATE TABLE foo (bar TEXT);
79+
// sqlite> INSERT INTO foo (bar) VALUES ('world');
80+
let encryptedFile = fixture("encrypted", withExtension: "sqlite")
81+
let conn = try! Connection(encryptedFile)
82+
try! conn.key("sqlcipher-test")
83+
XCTAssertEqual(1, try! conn.scalar("SELECT count(*) FROM foo") as? Int64)
84+
}
85+
7086
private func keyData(length: Int = 64) -> NSMutableData {
7187
let keyData = NSMutableData(length: length)!
7288
let result = SecRandomCopyBytes(kSecRandomDefault, length,

SQLiteTests/Fixtures.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import Foundation
2+
3+
func fixture(_ name: String, withExtension: String?) -> String {
4+
let testBundle = Bundle(for: SQLiteTestCase.self)
5+
return testBundle.url(
6+
forResource: URL(string: "fixtures")?.appendingPathComponent(name).path,
7+
withExtension: withExtension)!.path
8+
}
2 KB
Binary file not shown.

0 commit comments

Comments
 (0)