package io.evercam; import org.json.JSONObject; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.util.ArrayList; import static junit.framework.Assert.*; public class CameraSnapshotTest { @BeforeClass public static void setUpClass() { API.URL = TestURL.URL; } @Test public void testSnapshotsWithPaging() throws EvercamException { final String snapshotListJsonString = "{\"snapshots\": [{\"created_at\": 1410768882,\"notes\": \"Evercam System\"}],\"timezone\":\"Europe/Dublin\",\"pages\": 11}"; SnapshotsWithPaging snapshotsWithPaging = new SnapshotsWithPaging(new JSONObject(snapshotListJsonString)); assertEquals(11, snapshotsWithPaging.getTotalPages()); assertEquals(1, snapshotsWithPaging.getSnapshotsList().size()); } @Test public void testGetSnapshots() throws EvercamException { //Target to production server only for this test case API.resetUrl(); final int TIME_FROM = 1421692800; final int TIME_TO = 1421723075; API.setUserKeyPair(LocalConstants.TEST_API_KEY, LocalConstants.TEST_API_ID); //Get hours that contains snapshots assertEquals(24, Snapshot.getHoursContainSnapshots(LocalConstants.TEST_CAMERA_ID, 2015, 2, 4).size()); //Get days that contains snapshots assertEquals(13, Snapshot.getDaysContainSnapshots(LocalConstants.TEST_CAMERA_ID, 2015, 1).size()); //Get snapshots in the first page assertEquals(1, Snapshot.getSnapshotListWithPaging(LocalConstants.TEST_CAMERA_ID, TIME_FROM, TIME_TO, 1, 1).getSnapshotsList().size()); //Get all snapshots in a certain time ArrayList<Snapshot> snapshotList = Snapshot.getRecordedSnapshots(LocalConstants.TEST_CAMERA_ID, TIME_FROM, TIME_TO); assertEquals(17, snapshotList.size()); //Get snapshot by time Snapshot snapshot = Snapshot.getByTime(LocalConstants.TEST_CAMERA_ID, TIME_FROM, true, 1); assertEquals("Initial snapshot", snapshot.getNotes()); assertNotNull(snapshot.getData()); API.setUserKeyPair(null, null); API.URL = TestURL.URL; } @Test public void testStoreSnapshotAndGetLatest() throws EvercamException { //TODO: Use the testing server / remove the commented code //API.resetUrl(); final String SNAPSHOT_NOTE = "Java Wrapper"; RandomUser randomUser = new RandomUser(); Camera camera = randomUser.addRealCamera(); ApiKeyPair apiKeyPair = API.requestUserKeyPairFromEvercam(randomUser.getUsername(), randomUser.getPassword()); API.setUserKeyPair(apiKeyPair.getApiKey(), apiKeyPair.getApiId()); Snapshot.record(camera.getId(), SNAPSHOT_NOTE); Snapshot.record(camera.getId(), SNAPSHOT_NOTE); Snapshot latestSnapshot = Snapshot.getLatest(camera.getId(), true); assertEquals(SNAPSHOT_NOTE, latestSnapshot.getNotes()); assertNotNull(latestSnapshot.getCompleteData()); assertNotNull(latestSnapshot.getBase64DataString()); assertNotNull(latestSnapshot.getTimeStamp()); Snapshot snapshotWithoutData = Snapshot.getLatest(camera.getId(), false); assertNull(snapshotWithoutData.getCompleteData()); assertNull(snapshotWithoutData.getBase64DataString()); //Delete the user after testing API.setUserKeyPair(apiKeyPair.getApiKey(), apiKeyPair.getApiId()); assertTrue(User.delete(randomUser.getUsername())); API.setUserKeyPair(null, null); //API.URL = TestURL.URL; } @AfterClass public static void destroyClass() { } }