package com.megagoodsoftware.smugmug.test;
import java.io.*;
import java.util.*;
import junit.framework.*;
import org.apache.http.*;
import android.os.Bundle;
import com.megagoodsoftware.MediaShare.fakes.FakeHttpClient;
import com.megagoodsoftware.MediaShare.fakes.FakeSmugMugClient;
import com.megagoodsoftware.smugmug.*;
import com.megagoodsoftware.smugmug.exceptions.*;
import com.megagoodsoftware.smugmug.util.*;
public class SmugMugTest extends TestCase {
private static final String STATE_ACCOUNT = "foo";
FakeSmugMugClient successClient;
@Override
protected void setUp() throws Exception {
successClient = new FakeSmugMugClient(new FakeHttpClient());
}
private static void assertHttpHeaderEquals(HashMap<String, String> expectedHeaderMap, Header[] actualHeaders) {
for (int i = 0; i < actualHeaders.length; i++)
{
if (expectedHeaderMap.containsKey(actualHeaders[i].getName()))
assertEquals(expectedHeaderMap.get(actualHeaders[i].getName()), actualHeaders[i].getValue());
}
}
public void testLoginWithPassword() {
String email = "fred@gmail.com";
String password = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, email, password);
SmugMugAccount account = smugmug.getAccount();
assertEquals("d2964l9adecc9a6843bfaa4alba5fa22", account.getSession());
assertEquals("$1$qZ2KzsuJ$GllBdngm3V5KLaY7Hkhcu/", account.getPassword());
assertEquals(1234, account.getUserId());
assertEquals("Pro", account.getType());
assertEquals(25165824, account.getFilesizeLimit());
assertEquals("fred", account.getNickName());
assertEquals("Fred Nerk", account.getDisplayName());
} catch (Exception e) {
fail("Unexpected exception, login failed");
}
}
public void testSmugMugWithSeparateLogin() {
String email = "fred@gmail.com";
String password = "xxx";
try {
SmugMug smugmug = new SmugMug();
smugmug.setClient(successClient);
smugmug.loginWithPassword(email, password);
SmugMugAccount account = smugmug.getAccount();
assertEquals("d2964l9adecc9a6843bfaa4alba5fa22", account.getSession());
assertEquals("$1$qZ2KzsuJ$GllBdngm3V5KLaY7Hkhcu/", account.getPassword());
assertEquals(1234, account.getUserId());
assertEquals("Pro", account.getType());
assertEquals(25165824, account.getFilesizeLimit());
assertEquals("fred", account.getNickName());
assertEquals("Fred Nerk", account.getDisplayName());
} catch (Exception e) {
fail("Unexpected exception, login failed");
}
}
public void testLoginWithHashSuccess() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
SmugMugAccount account = smugmug.getAccount();
assertEquals("abcdef", account.getSession());
assertEquals(hashPassword, account.getPassword());
assertEquals(userId, account.getUserId());
assertEquals("Power", account.getType());
assertEquals(12582912, account.getFilesizeLimit());
assertEquals("fakenick", account.getNickName());
assertEquals("Fake Name", account.getDisplayName());
} catch (Exception e) {
fail("Unexpected exception, login failed");
}
}
public void testLoginWithHashFailure() {
int userId = 111;
String hashPassword = "xxx";
try {
successClient.setFailureResponse();
new SmugMug(successClient, userId, hashPassword);
fail("Login should fail");
} catch (SmugMugBadAuthentication e) {
assertTrue(true);
} catch (SmugMugInternalError e) {
fail("Unexpected Exception");
}
}
public void testLogout() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
assertTrue(smugmug.logout());
} catch (Exception e) {
fail("Unexpected exception, login failed");
}
}
public void testInvalidSession() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
successClient.setInvalidSession(true);
smugmug.updateCache();
fail("Should have thrown invalid session");
} catch (SmugMugInvalidSession e) {
// expecting this to be thrown
assertTrue(true);
} catch (Exception e) {
fail("Unexpected exception");
}
}
public void testGetAllAlbums() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
ArrayList<SmugMugAlbum> albums = smugmug.getAlbums();
assertEquals(6, albums.size());
assertEquals(2398750, albums.get(2).getId());
assertEquals("fVPoA", albums.get(2).getKey());
assertEquals("Album1", albums.get(0).getTitle());
} catch (Exception e) {
fail("Unexpected exception");
}
}
public void testGetAlbumsThruNameSuccess() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
ArrayList<SmugMugAlbum> albums = smugmug.getAlbums("Album3");
assertEquals(1, albums.size());
assertEquals(2398750, albums.get(0).getId());
} catch (Exception e) {
fail("Unexpected exception");
}
}
public void testGetAlbumThruIdSuccess() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
SmugMugAlbum album = smugmug.getAlbum(2398748);
assertEquals("Album1", album.getTitle());
assertEquals("Other", album.getCategory());
} catch (Exception e) {
fail("Unexpected exception\n" + e.getLocalizedMessage());
}
}
public void testGetAlbumThruIdFailure() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
assertNull(smugmug.getAlbum(555));
} catch (Exception e) {
fail("Unexpected exception\n" + e.getLocalizedMessage());
}
}
public void testSimpleUploadSuccess() {
int userId = 111;
String hashPassword = "xxx";
HashMap<String, String> expectedHeaderMap = new HashMap<String, String>();
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
SmugMugAlbum album = smugmug.getAlbum(2398751);
String dummyFilename = "dummy.jpg";
byte[] dummyContent = "abcdefghijklmnopqrstuvwxyz".getBytes();
String md5 = SmugMugUtil.getMd5Hash(dummyContent);
InputStream is = new ByteArrayInputStream(dummyContent);
expectedHeaderMap.put("User-Agent", Constants.USER_AGENT);
expectedHeaderMap.put("Content-Length", Integer.toString(dummyContent.length));
expectedHeaderMap.put("Content-MD5", md5);
expectedHeaderMap.put("X-Smug-SessionID", "abcdef");
expectedHeaderMap.put("X-Smug-Version", SmugMugClient.API_VERSION);
expectedHeaderMap.put("X-Smug-ResponseType", "JSON");
expectedHeaderMap.put("X-Smug-AlbumID", Integer.toString(album.getId()));
expectedHeaderMap.put("X-Smug-FileName", dummyFilename);
SmugMugImage image = smugmug.upload(null, is, md5, album, dummyFilename);
assertEquals(201510850, image.getId());
assertEquals("bQ8fG", image.getKey());
assertEquals(dummyFilename, image.getName());
assertHttpHeaderEquals(expectedHeaderMap, successClient.getHttpPut().getAllHeaders());
assertTrue(album.hasImage(image));
} catch (Exception e) {
fail("Unexpected exception");
}
}
public void testGetCategories() {
int userId = 111;
String hashPassword = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, userId, hashPassword);
assertEquals(6, smugmug.getCategories().size());
} catch (Exception e) {
fail("Unexpected exception");
}
}
public void testAccountParcelable() {
String email = "fred@gmail.com";
String password = "xxx";
try {
SmugMug smugmug = new SmugMug(successClient, email, password);
SmugMugAccount account_in = smugmug.getAccount();
Bundle b = new Bundle();
b.putParcelable(STATE_ACCOUNT, account_in);
SmugMugAccount account = b.getParcelable(STATE_ACCOUNT);
assertEquals("d2964l9adecc9a6843bfaa4alba5fa22", account.getSession());
assertEquals("$1$qZ2KzsuJ$GllBdngm3V5KLaY7Hkhcu/", account.getPassword());
assertEquals(1234, account.getUserId());
assertEquals("Pro", account.getType());
assertEquals(25165824, account.getFilesizeLimit());
assertEquals("fred", account.getNickName());
assertEquals("Fred Nerk", account.getDisplayName());
} catch (Exception e) {
fail("Unexpected exception, login failed");
}
}
}
|