package com.stacksync.syncservice.test.handler;
import java.sql.Connection;
import java.util.UUID;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import com.stacksync.commons.models.Device;
import com.stacksync.commons.models.User;
import com.stacksync.commons.models.Workspace;
import com.stacksync.syncservice.db.ConnectionPool;
import com.stacksync.syncservice.db.ConnectionPoolFactory;
import com.stacksync.syncservice.db.DAOFactory;
import com.stacksync.syncservice.db.DeviceDAO;
import com.stacksync.syncservice.db.UserDAO;
import com.stacksync.syncservice.db.WorkspaceDAO;
import com.stacksync.syncservice.exceptions.dao.DAOException;
import com.stacksync.syncservice.rpc.parser.IParser;
import com.stacksync.syncservice.rpc.parser.JSONParser;
import com.stacksync.syncservice.util.Config;
public class BasicHandlerTest {
private static IParser reader;
private static WorkspaceDAO workspaceDAO;
private static UserDAO userDao;
private static DeviceDAO deviceDao;
private static UUID user1 = UUID.randomUUID();
@BeforeClass
public static void initializeData() {
try {
Config.loadProperties();
reader = new JSONParser();
String datasource = Config.getDatasource();
ConnectionPool pool = ConnectionPoolFactory.getConnectionPool(datasource);
DAOFactory factory = new DAOFactory(datasource);
Connection connection = pool.getConnection();
workspaceDAO = factory.getWorkspaceDao(connection);
userDao = factory.getUserDao(connection);
deviceDao = factory.getDeviceDAO(connection);
User user = new User(user1, "tester1", "tester1", "AUTH_12312312", "a@a.a", 100L, 0L, 0L);
userDao.add(user);
Workspace workspace = new Workspace(null, 1, user, false, false);
workspaceDAO.add(workspace);
Device device = new Device(null, "junitdevice", user);
deviceDao.add(device);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void doCorrectCommit() throws DAOException {
String firstCommit = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':1," + "'version':1," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1362495000105," + "'status':'NEW',"
+ "'lastModified':1362495000105," + "'checksum':3499525671," + "'clientName':'junitdevice',"
+ "'fileSize':1968," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['a']}," + "{" + "'rootId':'stacksync'," + "'fileId':1,"
+ "'version':2," + "'parentRootId':''," + "'parentFileId':''," + "'parentFileVersion':'',"
+ "'updated':1362495999105," + "'status':'CHANGED'," + "'lastModified':1362495999105,"
+ "'checksum':3499525600," + "'clientName':'junitdevice'," + "'fileSize':900," + "'folder':'0',"
+ "'name':'pgadmin.log'," + "'path':'/'," + "'mimetype':'text/plain'," + "'chunks':['a','b']}," + "{"
+ "'rootId':'stacksync'," + "'fileId':1," + "'version':3," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1362496999105," + "'status':'CHANGED',"
+ "'lastModified':1362496999105," + "'checksum':3499525600," + "'clientName':'junitdevice',"
+ "'fileSize':1900," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['b','c']}]}";
byte[] firstCommitByte = firstCommit.getBytes();
/*Commit commitFirst = (Commit) reader.readMessage(firstCommitByte);
CommitResponse crm = handler.doCommit(commitFirst);
int version = 1;
List<RemoteCommitResponseObject> objects = crm.getObjects();
for (RemoteCommitResponseObject object : objects) {
// Check if all commits are true.
assertTrue("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", version == object.getVersion());
version++;
}
printResponse(crm);
String secondVersion = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':1," + "'version':4," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1362497999105," + "'status':'CHANGED',"
+ "'lastModified':1362497999105," + "'checksum':3499525600," + "'clientName':'junitdevice',"
+ "'fileSize':2000," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['d','e']}]}";
byte[] secondVersionByte = secondVersion.getBytes();
Commit commitSecondVersion = (Commit) reader.readMessage(secondVersionByte);
crm = handler.doCommit(commitSecondVersion);
objects = crm.getObjects();
RemoteCommitResponseObject object = objects.get(0);
// Check if all commits are true.
assertTrue("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", object.getMetadata().getVersion() == 4);
*/
}
@Test
public void incorrectCommitNewObject() throws DAOException {
String msg = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':2," + "'version':2," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1361792469000," + "'status':'NEW',"
+ "'lastModified':1360830517000," + "'checksum':3499525600," + "'clientName':'junitdevice',"
+ "'fileSize':1," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['a']}]}";
/*Commit request = (Commit) reader.readMessage(msg.getBytes());
CommitResponse crm = handler.doCommit(request);
List<RemoteCommitResponseObject> objects = crm.getObjects();
RemoteCommitResponseObject object = objects.get(0);
// Check if all commits are true.
assertFalse("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", object.getVersion() == 2);
printResponse(crm);*/
}
@Test
public void commitIncorrectVersion() throws DAOException {
String firstCommit = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':3," + "'version':1," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1362495000105," + "'status':'NEW',"
+ "'lastModified':1362495000105," + "'checksum':3499525671," + "'clientName':'junitdevice',"
+ "'fileSize':1968," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['d']}," + "{" + "'rootId':'stacksync'," + "'fileId':3,"
+ "'version':2," + "'parentRootId':''," + "'parentFileId':''," + "'parentFileVersion':'',"
+ "'updated':1362495999105," + "'status':'CHANGED'," + "'lastModified':1362495999105,"
+ "'checksum':3499525600," + "'clientName':'junitdevice'," + "'fileSize':900," + "'folder':'0',"
+ "'name':'pgadmin.log'," + "'path':'/'," + "'mimetype':'text/plain'," + "'chunks':['e','c']}]}";
byte[] firstCommitByte = firstCommit.getBytes();
/*Commit commitFirst = (Commit) reader.readMessage(firstCommitByte);
CommitResponse crm = handler.doCommit(commitFirst);
int version = 1;
List<RemoteCommitResponseObject> objects = crm.getObjects();
for (RemoteCommitResponseObject object : objects) {
// Check if all commits are true.
assertTrue("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", version == object.getVersion());
version++;
}
ObjectMetadata secondVersion = objects.get(1).getMetadata();
printResponse(crm);
String msg = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':3," + "'version':1," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1362495000105," + "'status':'NEW',"
+ "'lastModified':1362495000105," + "'checksum':3499525671," + "'clientName':'junitdevice',"
+ "'fileSize':1968," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['d']}]}";
byte[] secondVersionByte = msg.getBytes();
Commit commitSecondVersion = (Commit) reader.readMessage(secondVersionByte);
crm = handler.doCommit(commitSecondVersion);
objects = crm.getObjects();
RemoteCommitResponseObject object = objects.get(0);
// Check if committed is true
assertTrue("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", object.getVersion() == 1);
// Check metadata to be the last version
ObjectMetadata metadata = object.getMetadata();
assertTrue("Comparing metadata.", metadata.equals(secondVersion));
*/
}
@Test
public void commitWithNewDevice() throws DAOException {
String msg = "{" + "'user':'111aaa'," + "'type':'commit'," + "'workspace':'junituser/',"
+ "'requestId':'junitdevice-1361792472697'," + "'device':'junitdevice2'," + "'metadata':[{"
+ "'rootId':'stacksync'," + "'fileId':4," + "'version':1," + "'parentRootId':'',"
+ "'parentFileId':''," + "'parentFileVersion':''," + "'updated':1361792469000," + "'status':'NEW',"
+ "'lastModified':1360830517000," + "'checksum':3499525600," + "'clientName':'junitdevice4',"
+ "'fileSize':1," + "'folder':'0'," + "'name':'pgadmin.log'," + "'path':'/',"
+ "'mimetype':'text/plain'," + "'chunks':['a']}]}";
/*Commit request = (Commit) reader.readMessage(msg.getBytes());
CommitResponse crm = handler.doCommit(request);
List<RemoteCommitResponseObject> objects = crm.getObjects();
RemoteCommitResponseObject object = objects.get(0);
// Check if all commits are true.
assertTrue("Object committed.", object.isCommitted());
// Check if commits are ordered
assertTrue("Correct version.", object.getVersion() == 1);
printResponse(crm);
*/
}
@AfterClass
public static void cleanDB() throws DAOException {
userDao.delete(user1);
}
/*private void printResponse(CommitResponse crm) {
String response = reader.createResponse(crm);
System.out.println(response);
}*/
}