Make LoginService tests use single database and drop and recreate tables
This commit is contained in:
parent
e9a77b6ac7
commit
d580c3279b
|
@ -53,29 +53,42 @@ import org.junit.Test;
|
|||
*/
|
||||
public class DataSourceLoginServiceTest
|
||||
{
|
||||
|
||||
|
||||
public static final String _content = "This is some protected content";
|
||||
private static File _docRoot;
|
||||
private static File _dbRoot;
|
||||
private static HttpClient _client;
|
||||
private static String __realm = "DSRealm";
|
||||
private static URI _baseUri;
|
||||
private static final int __cacheInterval = 200;
|
||||
private static DatabaseLoginServiceTestServer _testServer;
|
||||
|
||||
|
||||
|
||||
|
||||
@BeforeClass
|
||||
public static void setUp() throws Exception
|
||||
{
|
||||
_docRoot = MavenTestingUtils.getTargetTestingDir(DataSourceLoginServiceTest.class.getSimpleName());
|
||||
FS.ensureEmpty(_docRoot);
|
||||
|
||||
|
||||
_docRoot = MavenTestingUtils.getTargetTestingDir("loginservice-test");
|
||||
FS.ensureDirExists(_docRoot);
|
||||
|
||||
File content = new File(_docRoot,"input.txt");
|
||||
FileOutputStream out = new FileOutputStream(content);
|
||||
out.write(_content.getBytes("utf-8"));
|
||||
out.close();
|
||||
|
||||
File scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
|
||||
_dbRoot = DatabaseLoginServiceTestServer.createDB(scriptFile,"dstest");
|
||||
|
||||
//clear previous runs
|
||||
File scriptFile = MavenTestingUtils.getTestResourceFile("droptables.sql");
|
||||
int result = DatabaseLoginServiceTestServer.runscript(scriptFile);
|
||||
//ignore result as derby spits errors for dropping tables that dont exist
|
||||
|
||||
//create afresh
|
||||
scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
|
||||
result = DatabaseLoginServiceTestServer.runscript(scriptFile);
|
||||
assertThat("runScript result",result, is(0));
|
||||
|
||||
_testServer = new DatabaseLoginServiceTestServer();
|
||||
_testServer.setResourceBase(_docRoot.getAbsolutePath());
|
||||
_testServer.setLoginService(configureLoginService());
|
||||
|
@ -115,7 +128,8 @@ public class DataSourceLoginServiceTest
|
|||
|
||||
//create a datasource
|
||||
EmbeddedDataSource ds = new EmbeddedDataSource();
|
||||
ds.setDatabaseName(_dbRoot.getAbsolutePath());
|
||||
File db = new File (DatabaseLoginServiceTestServer.getDbRoot(), "loginservice");
|
||||
ds.setDatabaseName(db.getAbsolutePath());
|
||||
org.eclipse.jetty.plus.jndi.Resource binding = new org.eclipse.jetty.plus.jndi.Resource(null, "dstest",
|
||||
ds);
|
||||
assertThat("Created binding for dstest", binding, notNullValue());
|
||||
|
@ -157,9 +171,10 @@ public class DataSourceLoginServiceTest
|
|||
protected void changePassword (String user, String newpwd) throws Exception
|
||||
{
|
||||
Loader.loadClass(this.getClass(), "org.apache.derby.jdbc.EmbeddedDriver").newInstance();
|
||||
try (Connection connection = DriverManager.getConnection("jdbc:derby:dstest", "", ""))
|
||||
try (Connection connection = DriverManager.getConnection(DatabaseLoginServiceTestServer.__dbURL, "", "");
|
||||
Statement stmt = connection.createStatement())
|
||||
{
|
||||
Statement stmt = connection.createStatement();
|
||||
connection.setAutoCommit(true);
|
||||
stmt.executeUpdate("update users set pwd='"+newpwd+"' where username='"+user+"'");
|
||||
}
|
||||
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
|
||||
package org.eclipse.jetty;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
@ -65,6 +62,7 @@ import org.eclipse.jetty.util.security.Constraint;
|
|||
*/
|
||||
public class DatabaseLoginServiceTestServer
|
||||
{
|
||||
protected static String __dbURL = "jdbc:derby:loginservice;create=true";
|
||||
protected Server _server;
|
||||
protected static String _protocol;
|
||||
protected static URI _baseUri;
|
||||
|
@ -74,30 +72,30 @@ public class DatabaseLoginServiceTestServer
|
|||
private static File commonDerbySystemHome;
|
||||
protected static String _requestContent;
|
||||
|
||||
protected static File createDB(File scriptFile, String dbName) throws Exception
|
||||
protected static File _dbRoot;
|
||||
|
||||
|
||||
static
|
||||
{
|
||||
if(commonDerbySystemHome == null)
|
||||
{
|
||||
commonDerbySystemHome = MavenTestingUtils.getTargetTestingDir("derby-system-common");
|
||||
FS.ensureEmpty(commonDerbySystemHome);
|
||||
System.setProperty("derby.system.home", commonDerbySystemHome.getAbsolutePath());
|
||||
}
|
||||
|
||||
String dbUrl = "jdbc:derby:directory:" + dbName + ";create=true";
|
||||
|
||||
_dbRoot = new File(MavenTestingUtils.getTargetTestingDir("loginservice-test"), "derby");
|
||||
FS.ensureDirExists(_dbRoot);
|
||||
System.setProperty("derby.system.home", _dbRoot.getAbsolutePath());
|
||||
}
|
||||
|
||||
public static File getDbRoot ()
|
||||
{
|
||||
return _dbRoot;
|
||||
}
|
||||
|
||||
public static int runscript (File scriptFile) throws Exception
|
||||
{
|
||||
//System.err.println("Running script:"+scriptFile.getAbsolutePath());
|
||||
try (FileInputStream fileStream = new FileInputStream(scriptFile))
|
||||
{
|
||||
Loader.loadClass(fileStream.getClass(), "org.apache.derby.jdbc.EmbeddedDriver").newInstance();
|
||||
Connection connection = DriverManager.getConnection(dbUrl, "", "");
|
||||
|
||||
OutputStream out = new ByteArrayOutputStream();
|
||||
int result = ij.runScript(connection, fileStream, "UTF-8", out, "UTF-8");
|
||||
|
||||
assertThat("runScript result",result, is(0));
|
||||
|
||||
File dbRoot = new File(commonDerbySystemHome, dbName);
|
||||
assertThat("exists: " + dbRoot, dbRoot.exists(), is(true));
|
||||
return dbRoot;
|
||||
Connection connection = DriverManager.getConnection(__dbURL, "", "");
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
return ij.runScript(connection, fileStream, "UTF-8", out, "UTF-8");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,8 +18,10 @@
|
|||
|
||||
package org.eclipse.jetty;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
@ -49,6 +51,8 @@ import org.junit.Test;
|
|||
|
||||
public class JdbcLoginServiceTest
|
||||
{
|
||||
|
||||
|
||||
private static String _content =
|
||||
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In quis felis nunc. "+
|
||||
"Quisque suscipit mauris et ante auctor ornare rhoncus lacus aliquet. Pellentesque "+
|
||||
|
@ -68,22 +72,31 @@ public class JdbcLoginServiceTest
|
|||
private static String __realm = "JdbcRealm";
|
||||
private static URI _baseUri;
|
||||
private static DatabaseLoginServiceTestServer _testServer;
|
||||
|
||||
|
||||
|
||||
@BeforeClass
|
||||
public static void setUp() throws Exception
|
||||
{
|
||||
_docRoot = MavenTestingUtils.getTargetTestingDir(JdbcLoginServiceTest.class.getSimpleName());
|
||||
FS.ensureEmpty(_docRoot);
|
||||
|
||||
_docRoot = MavenTestingUtils.getTargetTestingDir("loginservice-test");
|
||||
FS.ensureDirExists(_docRoot);
|
||||
File content = new File(_docRoot,"input.txt");
|
||||
|
||||
|
||||
try (FileOutputStream out = new FileOutputStream(content))
|
||||
{
|
||||
out.write(_content.getBytes("utf-8"));
|
||||
}
|
||||
|
||||
//drop any tables that might have existed
|
||||
File scriptFile = MavenTestingUtils.getTestResourceFile("droptables.sql");
|
||||
int result = DatabaseLoginServiceTestServer.runscript(scriptFile);
|
||||
//ignore result, if the tables dont already exist, derby spits out an error
|
||||
|
||||
File scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
|
||||
DatabaseLoginServiceTestServer.createDB(scriptFile,"jdbcrealm");
|
||||
//create the tables afresh
|
||||
scriptFile = MavenTestingUtils.getTestResourceFile("createdb.sql");
|
||||
result = DatabaseLoginServiceTestServer.runscript(scriptFile);
|
||||
assertThat("runScript result",result, is(0));
|
||||
|
||||
File jdbcRealmFile = MavenTestingUtils.getTestResourceFile("jdbcrealm.properties");
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
DROP TABLE roles;
|
||||
|
||||
DROP TABLE users;
|
||||
|
||||
DROP TABLE user_roles;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
jdbcdriver = org.apache.derby.jdbc.EmbeddedDriver
|
||||
url = jdbc:derby:jdbcrealm
|
||||
url = jdbc:derby:loginservice
|
||||
username =
|
||||
password =
|
||||
usertable = users
|
||||
|
|
Loading…
Reference in New Issue