package org.jboss.tools.foundation.core.test.credentials;
import org.jboss.tools.foundation.core.credentials.CredentialAdapter;
import org.jboss.tools.foundation.core.credentials.CredentialService;
import org.jboss.tools.foundation.core.credentials.ICredentialDomain;
import org.jboss.tools.foundation.core.credentials.ICredentialListener;
import org.jboss.tools.foundation.core.credentials.ICredentialsModel;
import org.junit.Test;
import junit.framework.TestCase;
public class CredentialsModelTest extends TestCase {
@Test
public void testInitialization() {
ICredentialsModel m = CredentialService.getCredentialModel();
assertNotNull(m);
ICredentialDomain[] domains = m.getDomains();
assertEquals(2, domains.length);
assertNotNull(m.getDomain("access.redhat.com"));
assertNotNull(m.getDomain("jboss.org"));
assertFalse(domains[0].getRemovable());
assertFalse(domains[1].getRemovable());
}
@Test
public void testAddRemoveDomain() {
ICredentialsModel m = CredentialService.getCredentialModel();
assertNotNull(m);
final Boolean[] checkAdded = new Boolean[]{false};
final Boolean[] checkRemoved = new Boolean[]{false};
ICredentialListener listener = new CredentialAdapter() {
public void domainRemoved(ICredentialDomain domain) {
checkRemoved[0] = true;
}
public void domainAdded(ICredentialDomain domain) {
checkAdded[0] = true;
}
};
m.addCredentialListener(listener);
try {
ICredentialDomain[] domains = m.getDomains();
assertEquals(2, domains.length);
ICredentialDomain added = m.addDomain("test1", "test1", true);
domains = m.getDomains();
assertEquals(3, domains.length);
m.removeDomain(added);
domains = m.getDomains();
assertEquals(2, domains.length);
assertTrue(checkAdded[0]);
assertTrue(checkRemoved[0]);
} finally {
m.removeCredentialListener(listener);
}
}
@Test
public void testAddRemoveCredential() {
ICredentialsModel m = CredentialService.getCredentialModel();
assertNotNull(m);
final Boolean[] checkAdded = new Boolean[]{false};
final Boolean[] checkRemoved = new Boolean[]{false};
ICredentialListener listener = new CredentialAdapter() {
@Override
public void credentialAdded(ICredentialDomain domain, String user) {
checkAdded[0] = true;
}
@Override
public void credentialRemoved(ICredentialDomain domain, String user) {
checkRemoved[0] = true;
}
};
m.addCredentialListener(listener);
try {
ICredentialDomain d = m.getDomain("jboss.org");
String[] users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
m.addCredentials(d, "username", "p4ssw0rD");
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
m.removeCredentials(d, "username");
users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
assertTrue(checkAdded[0]);
assertTrue(checkRemoved[0]);
} finally {
m.removeCredentialListener(listener);
}
}
@Test
public void testChangePassword() {
ICredentialsModel m = CredentialService.getCredentialModel();
assertNotNull(m);
final Boolean[] checkChanged = new Boolean[]{false};
ICredentialListener listener = new CredentialAdapter() {
public void credentialChanged(ICredentialDomain domain, String user) {
checkChanged[0] = true;
}
};
m.addCredentialListener(listener);
try {
ICredentialDomain d = m.getDomain("jboss.org");
String[] users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
m.addCredentials(d, "username", "p4ssw0rD");
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
// Add the same user again
m.addCredentials(d, "username", "p4ssw0rD");
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
// credential changed will be fired even if the password is the same
assertTrue(checkChanged[0]);
checkChanged[0] = true;
m.addCredentials(d, "username", "n3wPASS");
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
assertTrue(checkChanged[0]); // password changed should be called
m.removeCredentials(d, "username");
users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
assertTrue(checkChanged[0]);
} finally {
m.removeCredentialListener(listener);
}
}
@Test
public void testDefaultUser() {
ICredentialsModel m = CredentialService.getCredentialModel();
assertNotNull(m);
final Boolean[] checkDefaultChanged = new Boolean[]{false};
ICredentialListener listener = new CredentialAdapter() {
public void defaultUsernameChanged(ICredentialDomain domain, String user) {
checkDefaultChanged[0] = true;
}
};
m.addCredentialListener(listener);
try {
ICredentialDomain d = m.getDomain("jboss.org");
String[] users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
m.addCredentials(d, "username", "p4ssw0rD");
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
assertTrue(checkDefaultChanged[0]);
assertEquals("username", d.getDefaultUsername());
checkDefaultChanged[0] = false;
// Add the a different user
m.addCredentials(d, "username2", "p4ssw0rD");
users = d.getUsernames();
assertNotNull(users);
assertEquals(2, users.length);
assertFalse(checkDefaultChanged[0]);
assertEquals("username", d.getDefaultUsername());
m.setDefaultCredential(d, "username");
assertFalse(checkDefaultChanged[0]); // didnt change the default, so no event
m.setDefaultCredential(d, "username2");
assertTrue(checkDefaultChanged[0]);
assertEquals("username2", d.getDefaultUsername());
checkDefaultChanged[0] = false;
m.removeCredentials(d, "username2"); // Remove the current default, verify default changed
assertTrue(checkDefaultChanged[0]);
users = d.getUsernames();
assertNotNull(users);
assertEquals(1, users.length);
m.removeCredentials(d, "username");
users = d.getUsernames();
assertNotNull(users);
assertEquals(0, users.length);
} finally {
m.removeCredentialListener(listener);
}
}
}