/*
* Copyright 2010 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.db;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import ome.model.core.Image;
import ome.model.core.OriginalFile;
import ome.model.core.Pixels;
import ome.model.meta.Experimenter;
import ome.parameters.Parameters;
import ome.server.itests.AbstractManagedContextTest;
import ome.testing.ObjectFactory;
import ome.util.SqlAction;
import org.hibernate.SessionFactory;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.metadata.ClassMetadata;
import org.springframework.dao.DataAccessException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Tests the JDBC-based array methods of {@link PgArrayHelper}
*/
@Test(groups = "integration")
public class SqlActionTest extends AbstractManagedContextTest {
String key;
String value;
OriginalFile f;
Pixels p;
SqlAction sql;
@BeforeMethod
public void setup() {
sql = (SqlAction) applicationContext.getBean("simpleSqlAction");
f = makefile();
p = makepixels();
key = uuid();
value = uuid();
}
@Test
public void testEmptyPasswordSetting() {
final Experimenter e = loginNewUser();
final String n = e.getOmeName();
loginRoot();
iAdmin.changeUserPassword(n, "");
assertTrue(iAdmin.checkPassword(n, "anything", false));
assertTrue(iAdmin.checkPassword(n, "", false));
assertTrue(iAdmin.checkPassword(n, null, false));
iAdmin.changeUserPassword(n, "ome");
assertTrue(iAdmin.checkPassword(n, "ome", false));
assertFalse(iAdmin.checkPassword(n, "", false));
assertFalse(iAdmin.checkPassword(n, null, false));
iAdmin.changeUserPassword(n, null);
assertFalse(iAdmin.checkPassword(n, "ome", false));
assertFalse(iAdmin.checkPassword(n, "", false));
assertFalse(iAdmin.checkPassword(n, null, false));
}
@Test
public void testGetCurrentEventLog() {
sql.setCurrentEventLog(1, "test.log");
sql.selectCurrentEventLog("test.log");
}
@Test(groups = "ticket:3886", expectedExceptions = DataAccessException.class)
public void testUnknownSequenceGet() {
sql.nextValue("This_is_unknown", 50);
}
/**
* Walks through all model object classes, and any that have a generator
* annotation:
* <pre>
* @org.hibernate.annotations.GenericGenerator(name = "seq_lightpathemissionfilterlink",
* strategy = "ome.util.TableIdGenerator",
* parameters = {
* @org.hibernate.annotations.Parameter(name = "table_name", value = "seq_table"),
* @org.hibernate.annotations.Parameter(name = "segment_value", value = "seq_lightpathemissionfilterlink"),
* @org.hibernate.annotations.Parameter(name = "optimizer", value = "pooled"),
* @org.hibernate.annotations.Parameter(name = "increment_size", value = "50")
* })
* </pre>
* will be tested.
*/
@SuppressWarnings("unchecked")
@Test(groups = "ticket:3886")
public void testGetEachSequenceOnce() throws Exception {
final SessionFactory factory =
applicationContext.getBean("sessionFactory", SessionFactory.class);
final Map<String, ClassMetadata> m = factory.getAllClassMetadata();
for (String seq : m.keySet()) {
Class<?> k = Class.forName(seq);
GenericGenerator gg = k.getAnnotation(GenericGenerator.class);
if (gg == null) {
continue;
}
String segment_value = null;
for (Parameter p : gg.parameters()) {
if (p.name().equals("segment_value")) {
segment_value = p.value();
break;
}
}
assertNotNull(segment_value);
sql.nextValue(segment_value, 1);
}
}
@Test(groups = "ticket:3961")
public void testLargeInClause() throws Exception {
final String query = "select i from Image i where i.id in (:ids)";
final List<Long> ids = new ArrayList<Long>();
for (int i = 0; i < 1001; i++) {
ids.add(Long.valueOf(i));
}
super.setUp();
Parameters p = new Parameters();
p.addList("ids", ids);
iQuery.findAllByQuery(query, p);
}
//
// HELPERS
//
private OriginalFile makefile() {
OriginalFile f = new OriginalFile();
f.setName("name");
f.setPath("path");
f = iUpdate.saveAndReturnObject(f);
return f;
}
private Pixels makepixels() {
Pixels p = ObjectFactory.createPixelGraph(null);
Image i = iUpdate.saveAndReturnObject(p.getImage());
p = i.getPrimaryPixels();
return p;
}
}