Update AbstractTest

master
Stuart Boston 11 years ago
parent c88fde759c
commit febc5185a4

@ -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.");
}
}

Loading…
Cancel
Save