From eda7bbea8c0e69b963217614bd6e8b7f37ce5367 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 23 Feb 2010 08:04:09 +0000 Subject: [PATCH] LMS-1361 more system tests, improved error messages SVN: 14876 --- .../plugin/query/server/QueryServer.java | 13 ++- openbis/source/java/service.properties | 2 - .../openbis/systemtest/SystemTestCase.java | 6 +- .../plugin/query/QueryEditingTest.java | 102 +++++++++++++++++- .../plugin/query/QuerySystemTestCase.java | 12 +-- 5 files changed, 115 insertions(+), 20 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java index 64a5902fc3f..ebabc090627 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.openbis.plugin.query.server; import java.util.List; +import java.util.Properties; import javax.annotation.Resource; @@ -122,7 +123,8 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS getDAOFactory().getQueryDAO().createQuery(query); } catch (DataAccessException ex) { - DataAccessExceptionTranslator.throwException(ex, "Query", null); + DataAccessExceptionTranslator.throwException(ex, "Query definition '" + + expression.getName() + "'", null); } } @@ -140,7 +142,7 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS } } catch (DataAccessException ex) { - DataAccessExceptionTranslator.throwException(ex, "Query", null); + DataAccessExceptionTranslator.throwException(ex, "Query definition", null); } } @@ -160,7 +162,8 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS queryDAO.validateAndSaveUpdatedEntity(query); } catch (DataAccessException ex) { - DataAccessExceptionTranslator.throwException(ex, "Query", null); + DataAccessExceptionTranslator.throwException(ex, "Query definition '" + + updates.getName() + "'", null); } } @@ -215,8 +218,10 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS { if (databaseDefinition == null) { + Properties resolvedProps = configurer.getResolvedProps(); + resolvedProps.list(System.out); ExtendedProperties databaseProperties = - ExtendedProperties.getSubset(configurer.getResolvedProps(), + ExtendedProperties.getSubset(resolvedProps, DATABASE_PROPERTIES_PREFIX, true); if (databaseProperties.isEmpty() == false) { diff --git a/openbis/source/java/service.properties b/openbis/source/java/service.properties index 7c3d0787b4c..a12927a5bf1 100644 --- a/openbis/source/java/service.properties +++ b/openbis/source/java/service.properties @@ -78,5 +78,3 @@ query-database.label = openBIS meta data query-database.databaseEngineCode = ${database.engine} query-database.basicDatabaseName = openbis query-database.databaseKind = ${database.kind} -query-database.owner = read-only-user -query-database.owner-password = diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java index fa6f8cba62b..e3b0d180cc5 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SystemTestCase.java @@ -21,6 +21,7 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.testng.AssertJUnit; +import org.testng.annotations.BeforeSuite; import ch.systemsx.cisd.common.servlet.SpringRequestContextProvider; import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientService; @@ -40,11 +41,12 @@ public abstract class SystemTestCase extends AbstractTestNGSpringContextTests protected ICommonServer commonServer; protected ICommonClientService commonClientService; - static + @BeforeSuite + public void beforeSuite() { TestInitializer.init(); } - + /** * Sets a {@link MockHttpServletRequest} for the specified context provider */ diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QueryEditingTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QueryEditingTest.java index 0c1c2fe8e2c..a4d703c79b7 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QueryEditingTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QueryEditingTest.java @@ -17,15 +17,28 @@ package ch.systemsx.cisd.openbis.systemtest.plugin.query; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.fail; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; import java.util.List; +import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GridRowModels; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSetFetchConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; +import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow; import ch.systemsx.cisd.openbis.plugin.query.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.plugin.query.shared.basic.dto.QueryParameterBindings; @@ -37,6 +50,25 @@ import ch.systemsx.cisd.openbis.plugin.query.shared.basic.dto.QueryParameterBind @Test(groups = "system test") public class QueryEditingTest extends QuerySystemTestCase { + @AfterMethod + public void tearDown() + { + List<QueryExpression> queries = queryClientService.listQueries(); + List<TechId> ids = new ArrayList<TechId>(); + for (QueryExpression queryExpression : queries) + { + ids.add(new TechId(queryExpression.getId())); + } + queryClientService.deleteQueries(ids); + } + + @Test + public void testGetQueryDatabaseLabel() + { + logIntoCommonClientService(); + + assertEquals("openBIS meta data", queryClientService.tryToGetQueryDatabaseLabel()); + } @Test public void testRegisterEditAndDeleteQueryDefinition() @@ -71,6 +103,59 @@ public class QueryEditingTest extends QuerySystemTestCase assertEquals(0, queryClientService.listQueries().size()); } + @Test + public void testRegisterQueryDefinitionsWithSameName() + { + logIntoCommonClientService(); + + NewExpression query = createQuery("query", "select * from sample_types", true); + queryClientService.registerQuery(query); + + try + { + queryClientService.registerQuery(query); + fail("UserFailureException expected"); + } catch (UserFailureException ex) + { + assertEquals("Query definition 'query' already exists " + + "in the database and needs to be unique.", ex.getMessage()); + } + } + + @Test + public void testChangeNameOfQueryDefinitionsToAnExistingOne() + { + logIntoCommonClientService(); + + NewExpression query1 = createQuery("query1", "select * from sample_types", true); + NewExpression query2 = createQuery("query2", "select * from experiment_types", true); + queryClientService.registerQuery(query1); + queryClientService.registerQuery(query2); + + List<QueryExpression> queries = queryClientService.listQueries(); + assertEquals(2, queries.size()); + Collections.sort(queries, new Comparator<QueryExpression>() + { + public int compare(QueryExpression o1, QueryExpression o2) + { + return o1.getName().compareTo(o2.getName()); + } + }); + QueryExpression queryExpression = queries.get(0); + assertEquals("query1", queryExpression.getName()); + queryExpression.setName("query2"); + + try + { + queryClientService.updateQuery(queryExpression); + fail("UserFailureException expected"); + } catch (UserFailureException ex) + { + assertEquals("Query definition 'query2' already exists " + + "in the database and needs to be unique.", ex.getMessage()); + } + } + @Test(groups = "broken") public void testCreateQueryResult() { @@ -80,7 +165,22 @@ public class QueryEditingTest extends QuerySystemTestCase bindings.addBinding("id", "1"); TableModelReference table = queryClientService.createQueryResultsReport( - "select * from sample_types where id = ${id}", bindings); + "select id, code from sample_types where id = ${id}", bindings); + List<TableModelColumnHeader> headers = table.getHeader(); + assertEquals("id", headers.get(0).getTitle()); + assertEquals(DataTypeCode.INTEGER, headers.get(0).getDataType()); + assertEquals(true, headers.get(0).isNumeric()); + assertEquals("code", headers.get(1).getTitle()); + assertEquals(DataTypeCode.VARCHAR, headers.get(1).getDataType()); + assertEquals(false, headers.get(1).isNumeric()); + assertEquals(2, headers.size()); + + DefaultResultSetConfig<String, TableModelRow> config = new DefaultResultSetConfig<String, TableModelRow>(); + config.setCacheConfig(ResultSetFetchConfig.createFetchFromCache(table.getResultSetKey())); + ResultSet<TableModelRow> rs = commonClientService.listReport(config); + GridRowModels<TableModelRow> l = rs.getList(); + assertEquals("[1, MASTER_PLATE]", l.get(0).getOriginalObject().getValues().toString()); + assertEquals(1, rs.getTotalLength()); } private NewExpression createQuery(String name, String expression, boolean isPublic) diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QuerySystemTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QuerySystemTestCase.java index 8e4e62a0603..b666241c975 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QuerySystemTestCase.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/plugin/query/QuerySystemTestCase.java @@ -28,18 +28,8 @@ import ch.systemsx.cisd.openbis.systemtest.SystemTestCase; */ public class QuerySystemTestCase extends SystemTestCase { - static - { - System.setProperty("query-database.label", "openBIS"); - System.setProperty("query-database.databaseEngineCode", "postgresql"); - System.setProperty("query-database.basicDatabaseName", "openbis"); - System.setProperty("query-database.databaseKind", "test"); - System.setProperty("query-database.owner", "postgres"); - System.setProperty("query-database.owner-password", ""); - } - protected IQueryClientService queryClientService; - + @Autowired public final void setQueryClientService(IQueryClientService queryClientService) { -- GitLab