Skip to content

Commit

Permalink
Add SQLCipher test
Browse files Browse the repository at this point in the history
  • Loading branch information
zauguin committed Feb 16, 2017
1 parent 32f8f25 commit 9eb5035
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ addons:
- gcc-5
- g++-5
- libsqlite3-dev
- libsqlcipher-dev
- libboost-all-dev

before_install:
- export CXX="g++-5" CC="gcc-5"

script: ./configure && make test && make clean && make LDFLAGS="-lsqlcipher -DENABLE_SQLCIPHER_TESTS" test
2 changes: 1 addition & 1 deletion Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ tests/%.result_: tests/%.test
a=$$? ;\
if [ $$a != 0 ]; \
then \
if [ $$a -ge 128 and ] ; \
if [ $$a -ge 128 ] ; \
then \
echo Crash!! > $@ ; \
elif [ $$a -eq 42 ] ;\
Expand Down
90 changes: 90 additions & 0 deletions tests/sqlcipher.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#ifdef ENABLE_SQLCIPHER_TESTS
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <sqlite_modern_cpp/sqlcipher.h>
using namespace sqlite;
using namespace std;

struct TmpFile
{
string fname;

TmpFile()
{
char f[]="/tmp/sqlite_modern_cpp_test_XXXXXX";
int fid = mkstemp(f);
close(fid);

fname = f;
}

~TmpFile()
{
unlink(fname.c_str());
}
};

int main()
{
try
{
TmpFile file;
sqlcipher_config config;
{
config.key = "DebugKey";
sqlcipher_database db(file.fname, config);

db << "CREATE TABLE foo (a integer, b string);";
db << "INSERT INTO foo VALUES (?, ?)" << 1 << "hello";
db << "INSERT INTO foo VALUES (?, ?)" << 2 << "world";

string str;
db << "SELECT b from FOO where a=?;" << 2 >> str;

if(str != "world")
{
cout << "Bad result on line " << __LINE__ << endl;
exit(EXIT_FAILURE);
}
}
try {
config.key = "DebugKey2";
sqlcipher_database db(file.fname, config);
db << "INSERT INTO foo VALUES (?, ?)" << 3 << "fail";

cout << "Can open with wrong key";
exit(EXIT_FAILURE);
} catch(exceptions::notadb) {
// Expected, wrong key
}
{
config.key = "DebugKey";
sqlcipher_database db(file.fname, config);
db.rekey("DebugKey2");
}
{
config.key = "DebugKey2";
sqlcipher_database db(file.fname, config);
db << "INSERT INTO foo VALUES (?, ?)" << 3 << "fail";
}
}
catch(sqlite_exception e)
{
cout << "Unexpected error " << e.what() << endl;
exit(EXIT_FAILURE);
}
catch(...)
{
cout << "Unknown error\n";
exit(EXIT_FAILURE);
}

cout << "OK\n";
exit(EXIT_SUCCESS);
}
#else
int main() {
return 42; //Skip test
}
#endif

0 comments on commit 9eb5035

Please sign in to comment.