Update AbstractTest
This commit is contained in:
@@ -117,6 +117,13 @@
|
||||
<artifactId>api-common</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<!-- Apache Utils -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -26,7 +26,12 @@ import com.omertron.themoviedbapi.model.TokenAuthorisation;
|
||||
import com.omertron.themoviedbapi.model.TokenSession;
|
||||
import com.omertron.themoviedbapi.tools.HttpTools;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang3.SerializationUtils;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
@@ -38,6 +43,8 @@ public class AbstractTests {
|
||||
|
||||
protected static final Logger LOG = LoggerFactory.getLogger(AbstractTests.class);
|
||||
private static final String PROP_FIlENAME = "testing.properties";
|
||||
private static final String ACCT_FILENAME = "account.bin";
|
||||
private static final String TOKEN_FILENAME = "token.bin";
|
||||
private static final Properties props = new Properties();
|
||||
private static HttpClient httpClient;
|
||||
private static HttpTools httpTools;
|
||||
@@ -49,6 +56,11 @@ public class AbstractTests {
|
||||
protected static final String LANGUAGE_ENGLISH = "en";
|
||||
protected static final String LANGUAGE_RUSSIAN = "ru";
|
||||
|
||||
/**
|
||||
* Do the initial configuration for the test cases
|
||||
*
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public static final void doConfiguration() throws MovieDbException {
|
||||
TestLogger.Configure();
|
||||
httpClient = new SimpleHttpClientBuilder().build();
|
||||
@@ -72,7 +84,80 @@ public class AbstractTests {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write out the object to a file
|
||||
*
|
||||
* @param object
|
||||
* @param filename
|
||||
* @return
|
||||
*/
|
||||
private static boolean writeObject(Serializable object, String filename) {
|
||||
File serFile = new File(filename);
|
||||
|
||||
if (serFile.exists()) {
|
||||
long ft = serFile.lastModified();
|
||||
long diff = System.currentTimeMillis() - ft;
|
||||
LOG.info("File time: {}, diff: {} - {}", ft, diff, TimeUnit.HOURS.toMillis(1));
|
||||
if (diff < TimeUnit.HOURS.toMillis(1)) {
|
||||
LOG.info("File is current, no need to reacquire");
|
||||
return true;
|
||||
} else {
|
||||
LOG.info("File is too old, re-acquiring");
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
byte[] serObject = SerializationUtils.serialize(object);
|
||||
FileUtils.writeByteArrayToFile(serFile, serObject);
|
||||
return true;
|
||||
} catch (IOException ex) {
|
||||
LOG.info("Failed to write {}: {}", filename, ex.getMessage(), ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the object back from a file
|
||||
*
|
||||
* @param <T>
|
||||
* @param filename
|
||||
* @return
|
||||
*/
|
||||
private static <T> T readObject(String filename) {
|
||||
File serFile = new File(filename);
|
||||
|
||||
if (serFile.exists()) {
|
||||
long diff = System.currentTimeMillis() - serFile.lastModified();
|
||||
if (diff < TimeUnit.HOURS.toMillis(1)) {
|
||||
LOG.info("File is current, no need to reacquire");
|
||||
return null;
|
||||
} else {
|
||||
LOG.info("File is too old, re-acquiring");
|
||||
}
|
||||
} else {
|
||||
LOG.info("File doesn't exist: {}", filename);
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
byte[] serObject = FileUtils.readFileToByteArray(serFile);
|
||||
return SerializationUtils.deserialize(serObject);
|
||||
} catch (IOException ex) {
|
||||
LOG.info("Failed to read {}: {}", filename, ex.getMessage(), ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the Session ID
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public static final String getSessionId() throws MovieDbException {
|
||||
// Read the object from a file
|
||||
tokenSession = readObject(TOKEN_FILENAME);
|
||||
|
||||
if (tokenSession == null) {
|
||||
TmdbAuthentication auth = new TmdbAuthentication(getApiKey(), getHttpTools());
|
||||
LOG.info("Test and create a session token for the rest of the tests");
|
||||
@@ -85,39 +170,85 @@ public class AbstractTests {
|
||||
tokenSession = auth.getSessionToken(token);
|
||||
assertTrue("Session token is not valid", tokenSession.getSuccess());
|
||||
|
||||
// Write the object to a file
|
||||
writeObject(token, TOKEN_FILENAME);
|
||||
|
||||
}
|
||||
return tokenSession.getSessionId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Account information
|
||||
*
|
||||
* @return
|
||||
* @throws MovieDbException
|
||||
*/
|
||||
public static final int getAccountId() throws MovieDbException {
|
||||
// Read the object from a file
|
||||
account = readObject(ACCT_FILENAME);
|
||||
|
||||
if (account == null) {
|
||||
TmdbAccount instance = new TmdbAccount(getApiKey(), getHttpTools());
|
||||
// Get the account for later tests
|
||||
account = instance.getAccount(tokenSession.getSessionId());
|
||||
|
||||
// Write the object to a file
|
||||
writeObject(account, ACCT_FILENAME);
|
||||
}
|
||||
return account.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* get the Http Client
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static HttpClient getHttpClient() {
|
||||
return httpClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Http Tools
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static HttpTools getHttpTools() {
|
||||
return httpTools;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the API Key
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getApiKey() {
|
||||
return props.getProperty("API_Key");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Account username
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getUsername() {
|
||||
return props.getProperty("Username");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Account password
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String getPassword() {
|
||||
return props.getProperty("Password");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the named property
|
||||
*
|
||||
* @param property
|
||||
* @return
|
||||
*/
|
||||
public static String getProperty(String property) {
|
||||
return props.getProperty(property);
|
||||
}
|
||||
|
||||
@@ -21,22 +21,15 @@ package com.omertron.themoviedbapi.methods;
|
||||
|
||||
import com.omertron.themoviedbapi.AbstractTests;
|
||||
import com.omertron.themoviedbapi.MovieDbException;
|
||||
import com.omertron.themoviedbapi.enumeration.MediaType;
|
||||
import com.omertron.themoviedbapi.model.Account;
|
||||
import com.omertron.themoviedbapi.model.MovieDb;
|
||||
import com.omertron.themoviedbapi.model.MovieDbList;
|
||||
import com.omertron.themoviedbapi.model.StatusCode;
|
||||
import java.util.List;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
@@ -63,11 +56,11 @@ public class TmdbAccountTest extends AbstractTests {
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
public void setUp() throws MovieDbException {
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
public void tearDown() throws MovieDbException {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -86,172 +79,11 @@ public class TmdbAccountTest extends AbstractTests {
|
||||
|
||||
/**
|
||||
* Test of getUserLists method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetUserLists() throws MovieDbException {
|
||||
LOG.info("getUserLists");
|
||||
List<MovieDbList> result = instance.getUserLists(getSessionId(), getAccountId());
|
||||
assertNotNull("Null list returned", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getFavoriteMovies method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetFavoriteMovies() throws MovieDbException {
|
||||
LOG.info("getFavoriteMovies");
|
||||
|
||||
LOG.info("Check favorite list is empty");
|
||||
// make sure it's empty (because it's just a test account
|
||||
List<MovieDb> favList = instance.getFavoriteMovies(getSessionId(), getAccountId());
|
||||
assertTrue("Favorite list was not empty!", favList.isEmpty());
|
||||
|
||||
LOG.info("Add movie to list");
|
||||
// add a movie
|
||||
StatusCode status = instance.changeFavoriteStatus(getSessionId(), getAccountId(), ID_MOVIE_FIGHT_CLUB, MediaType.MOVIE, true);
|
||||
LOG.info("Add Status: {}", status);
|
||||
|
||||
LOG.info("Get favorite list");
|
||||
favList = instance.getFavoriteMovies(getSessionId(), getAccountId());
|
||||
assertNotNull("Empty favorite list returned", favList);
|
||||
assertFalse("Favorite list empty", favList.isEmpty());
|
||||
|
||||
// clean up again
|
||||
LOG.info("Remove movie(s) from list");
|
||||
for (MovieDb movie : favList) {
|
||||
LOG.info("Removing movie {}-'{}'", movie.getId(), movie.getTitle());
|
||||
status = instance.changeFavoriteStatus(getSessionId(), getAccountId(), movie.getId(), MediaType.MOVIE, false);
|
||||
LOG.info("Remove status: {}", status);
|
||||
}
|
||||
assertTrue("Favorite list was not empty", instance.getFavoriteMovies(getSessionId(), getAccountId()).isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of changeFavoriteStatus method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Ignore("Tested as part of getFavoriteMovies")
|
||||
public void testChangeFavoriteStatus() throws MovieDbException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getRatedMovies method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetRatedMovies() throws MovieDbException {
|
||||
LOG.info("getRatedMovies");
|
||||
List<MovieDb> result = instance.getRatedMovies(getSessionId(), getAccountId());
|
||||
assertFalse("No rated movies", result.isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getWatchList method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetWatchList() throws MovieDbException {
|
||||
LOG.info("getWatchList");
|
||||
|
||||
LOG.info("Check list is empty");
|
||||
// make sure it's empty (because it's just a test account
|
||||
List<MovieDb> watchList = instance.getWatchListMovie(getSessionId(), getAccountId());
|
||||
assertTrue("Watch list was not empty!", watchList.isEmpty());
|
||||
|
||||
LOG.info("Add movie to list");
|
||||
// add a movie
|
||||
StatusCode status = instance.modifyWatchList(getSessionId(), getAccountId(), ID_MOVIE_FIGHT_CLUB, MediaType.MOVIE, true);
|
||||
LOG.info("Add Status: {}", status);
|
||||
|
||||
LOG.info("Get watch list");
|
||||
watchList = instance.getWatchListMovie(getSessionId(), getAccountId());
|
||||
assertNotNull("Empty watch list returned", watchList);
|
||||
assertFalse("Watchlist list empty", watchList.isEmpty());
|
||||
|
||||
LOG.info("Removing movie(s) from list");
|
||||
// clean up again
|
||||
for (MovieDb movie : watchList) {
|
||||
LOG.info("Removing movie {}-'{}'", movie.getId(), movie.getTitle());
|
||||
status = instance.modifyWatchList(getSessionId(), getAccountId(), movie.getId(), MediaType.MOVIE, false);
|
||||
LOG.info("Remove status: {}", status);
|
||||
}
|
||||
|
||||
assertTrue(instance.getWatchListMovie(getSessionId(), getAccountId()).isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of modifyWatchList method, of class TmdbAccount.
|
||||
*
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Ignore("Tested as part of testGetWatchList")
|
||||
public void testModifyWatchList() throws MovieDbException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getFavoriteTv method, of class TmdbAccount.
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetFavoriteTv() throws MovieDbException {
|
||||
System.out.println("getFavoriteTv");
|
||||
List result = instance.getFavoriteTv(getSessionId(), getAccountId());
|
||||
// TODO review the generated test code and remove the default call to fail.
|
||||
fail("The test case is a prototype.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getRatedTV method, of class TmdbAccount.
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetRatedTV() throws MovieDbException {
|
||||
System.out.println("getRatedTV");
|
||||
String sessionId = "";
|
||||
int accountId = 0;
|
||||
List expResult = null;
|
||||
List result = instance.getRatedTV(sessionId, accountId);
|
||||
assertEquals(expResult, result);
|
||||
// TODO review the generated test code and remove the default call to fail.
|
||||
fail("The test case is a prototype.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getWatchListMovie method, of class TmdbAccount.
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetWatchListMovie() throws MovieDbException {
|
||||
System.out.println("getWatchListMovie");
|
||||
String sessionId = "";
|
||||
int accountId = 0;
|
||||
List<MovieDb> expResult = null;
|
||||
List<MovieDb> result = instance.getWatchListMovie(sessionId, accountId);
|
||||
assertEquals(expResult, result);
|
||||
// TODO review the generated test code and remove the default call to fail.
|
||||
fail("The test case is a prototype.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Test of getWatchListTV method, of class TmdbAccount.
|
||||
* @throws com.omertron.themoviedbapi.MovieDbException
|
||||
*/
|
||||
@Test
|
||||
public void testGetWatchListTV() throws MovieDbException {
|
||||
System.out.println("getWatchListTV");
|
||||
String sessionId = "";
|
||||
int accountId = 0;
|
||||
List expResult = null;
|
||||
List result = instance.getWatchListTV(sessionId, accountId);
|
||||
assertEquals(expResult, result);
|
||||
// TODO review the generated test code and remove the default call to fail.
|
||||
fail("The test case is a prototype.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user