package org.limewire.xmpp.client.impl;
import java.io.IOException;
import junit.framework.Test;
import org.apache.http.client.HttpClient;
import org.limewire.http.httpclient.LimeHttpClient;
import org.limewire.http.httpclient.SimpleLimeHttpClient;
import org.limewire.security.LimeWireSecurityModule;
import org.limewire.security.certificate.CipherProvider;
import org.limewire.util.BaseTestCase;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* Unit tests for {@link Password}
*/
public class PasswordTest extends BaseTestCase {
private CipherProvider cipherProvider;
public PasswordTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(PasswordTest.class);
}
@Override
protected void setUp() throws Exception {
Injector injector = Guice.createInjector(new LimeWireSecurityModule(), new AbstractModule() {
@Override
protected void configure() {
bind(HttpClient.class).to(SimpleLimeHttpClient.class);
bind(LimeHttpClient.class).to(SimpleLimeHttpClient.class);
}
});
cipherProvider = injector.getInstance(CipherProvider.class);
}
/**
* Test encrypting and decrypting
*/
public void testPasswordEncryptionDecryptionPositiveTest() throws Exception {
String originalPasswd = "thisisasampletestpasswordlongerthanusual";
Password passwd = new Password(cipherProvider, originalPasswd, false);
String encryptedPasswd = passwd.encryptPassword();
Password passwd2 = new Password(cipherProvider, encryptedPasswd, true);
String decryptedPasswd = passwd2.decryptPassword();
assertEquals(originalPasswd, decryptedPasswd);
}
/**
* Test encrypting, modifying the encrypted password, then decrypting
*
* Should fail to decrypt.
*/
public void testPasswordDecryptionWithInvalidEncryptedPassword() throws Exception {
String shouldFailToDecryptString = "nonsensicalstring";
Password passwd = new Password(cipherProvider, shouldFailToDecryptString, true);
try {
passwd.decryptPassword();
fail("Should have encountered error decrypting password!");
} catch (IOException e) {
// received expected error
}
}
}