/*
* Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.db;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.constant.ErrorCode;
import org.h2.test.TestBase;
/**
* Test using an encrypted database.
*/
public class TestEncryptedDb extends TestBase {
/**
* Run just this test.
*
* @param a ignored
*/
public static void main(String... a) throws Exception {
TestBase.createCaller().init().test();
}
public void test() throws SQLException {
if (config.memory || config.cipher != null) {
return;
}
deleteDb("encrypted");
Connection conn = getConnection("encrypted;CIPHER=AES", "sa", "123 123");
Statement stat = conn.createStatement();
stat.execute("CREATE TABLE TEST(ID INT)");
stat.execute("CHECKPOINT");
stat.execute("SET WRITE_DELAY 0");
stat.execute("INSERT INTO TEST VALUES(1)");
stat.execute("SHUTDOWN IMMEDIATELY");
assertThrows(ErrorCode.DATABASE_IS_CLOSED, conn).close();
assertThrows(ErrorCode.FILE_ENCRYPTION_ERROR_1, this).
getConnection("encrypted;CIPHER=AES", "sa", "1234 1234");
conn = getConnection("encrypted;CIPHER=AES", "sa", "123 123");
stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT * FROM TEST");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
assertFalse(rs.next());
conn.close();
deleteDb("encrypted");
}
}