use of org.alfresco.service.cmr.remoteticket.NoSuchSystemException in project alfresco-remote-api by Alfresco.
the class RemoteAlfrescoTicketServiceTest method testGetTicket.
/**
* Getting cached and non-cached credentials
*/
public void testGetTicket() throws Exception {
// Run this test initially as the first user
AuthenticationUtil.setFullyAuthenticatedUser(USER_ONE);
// First, try an invalid system
try {
remoteAlfrescoTicketService.getAlfrescoTicket(INVALID_REMOTE_SYSTEM_ID);
fail("Shouldn't work for an invalid system");
} catch (NoSuchSystemException e) {
}
try {
remoteAlfrescoTicketService.refetchAlfrescoTicket(INVALID_REMOTE_SYSTEM_ID);
fail("Shouldn't work for an invalid system");
} catch (NoSuchSystemException e) {
}
// Can't get or refresh if no credentials exist
try {
remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
fail("Shouldn't work when no credentials");
} catch (NoCredentialsFoundException e) {
}
try {
remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
fail("Shouldn't work when no credentials");
} catch (NoCredentialsFoundException e) {
}
// Have some stored
remoteAlfrescoTicketService.storeRemoteCredentials(TEST_REMOTE_SYSTEM_ID, USER_ONE, PASSWORD);
// A ticket will now exist
RemoteAlfrescoTicketInfo ticket = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket);
assertNotNull(ticket.getAsUrlParameters());
// Ask again, will get the same one
RemoteAlfrescoTicketInfo ticket2 = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket2);
assertEquals(ticket.getAsUrlParameters(), ticket2.getAsUrlParameters());
// Force a re-fetch, will get another
RemoteAlfrescoTicketInfo ticket3 = remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket3);
assertNotSame(ticket.getAsUrlParameters(), ticket3.getAsUrlParameters());
// Ask for the ticket again, get the 2nd one again
RemoteAlfrescoTicketInfo ticket4 = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket4);
assertEquals(ticket3.getAsUrlParameters(), ticket4.getAsUrlParameters());
// Zap from the cache, will trigger another to be fetched
ticketsCache.clear();
RemoteAlfrescoTicketInfo ticket5 = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket5);
assertNotSame(ticket.getAsUrlParameters(), ticket5.getAsUrlParameters());
assertNotSame(ticket3.getAsUrlParameters(), ticket5.getAsUrlParameters());
// Change the password so it's no longer valid
PasswordCredentialsInfoImpl creds = (PasswordCredentialsInfoImpl) remoteCredentialsService.getPersonCredentials(TEST_REMOTE_SYSTEM_ID);
assertNotNull(creds);
creds.setRemotePassword("INVALID");
remoteCredentialsService.updateCredentials(creds);
// Currently will be marked as still working
assertEquals(true, creds.getLastAuthenticationSucceeded());
// Get will work, as ticket was previously cached
RemoteAlfrescoTicketInfo ticket6 = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket6);
assertEquals(ticket5.getAsUrlParameters(), ticket6.getAsUrlParameters());
// Re-fetch will fail with authentication error
try {
remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
fail("Shouldn't be able to refetch with wrong details");
} catch (AuthenticationException e) {
}
// Now a get will fail too, as the cache will be invalidated
try {
remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
fail("Shouldn't be able to get after refresh with wrong details");
} catch (AuthenticationException e) {
}
// If we check the credentials, will now be marked as failing
creds = (PasswordCredentialsInfoImpl) remoteCredentialsService.getPersonCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(false, creds.getLastAuthenticationSucceeded());
// Change the password back to what it should be, and re-get
creds.setRemotePassword(PASSWORD);
remoteCredentialsService.updateCredentials(creds);
RemoteAlfrescoTicketInfo ticket7 = remoteAlfrescoTicketService.getAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
assertNotNull(ticket7);
assertNotSame(ticket.getAsUrlParameters(), ticket7.getAsUrlParameters());
assertNotSame(ticket3.getAsUrlParameters(), ticket7.getAsUrlParameters());
assertNotSame(ticket5.getAsUrlParameters(), ticket7.getAsUrlParameters());
// Should now be marked as working again
creds = (PasswordCredentialsInfoImpl) remoteCredentialsService.getPersonCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(true, creds.getLastAuthenticationSucceeded());
// Check that failure can be marked in a read only transaction
creds.setRemotePassword("INVALID");
remoteCredentialsService.updateCredentials(creds);
retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() {
public Void execute() {
try {
remoteAlfrescoTicketService.refetchAlfrescoTicket(TEST_REMOTE_SYSTEM_ID);
fail("Shouldn't be able to refetch with wrong details");
} catch (AuthenticationException e) {
}
return null;
}
}, false, // after MNT-13871, POST api/login webscript now requires read-write transaction
true);
// Check it was still marked as invalid, despite a read only transaction
creds = (PasswordCredentialsInfoImpl) remoteCredentialsService.getPersonCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(false, creds.getLastAuthenticationSucceeded());
}
use of org.alfresco.service.cmr.remoteticket.NoSuchSystemException in project alfresco-remote-api by Alfresco.
the class RemoteAlfrescoTicketServiceTest method testGetStoreGetCredentials.
/**
* Getting, storing and fetching credentials
*/
public void testGetStoreGetCredentials() throws Exception {
// Run this test initially as the first user
AuthenticationUtil.setFullyAuthenticatedUser(USER_ONE);
// First, try an invalid system
try {
remoteAlfrescoTicketService.getRemoteCredentials(INVALID_REMOTE_SYSTEM_ID);
fail("Shouldn't work for an invalid system");
} catch (NoSuchSystemException e) {
}
try {
remoteAlfrescoTicketService.storeRemoteCredentials(INVALID_REMOTE_SYSTEM_ID, null, null);
fail("Shouldn't work for an invalid system");
} catch (NoSuchSystemException e) {
}
// Our user starts out without credentials
BaseCredentialsInfo credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(null, credentials);
// Try to store some invalid credentials (real user, but password wrong)
try {
remoteAlfrescoTicketService.storeRemoteCredentials(TEST_REMOTE_SYSTEM_ID, USER_ONE, "invalid");
fail("Credentials invalid, shouldn't be allowed");
} catch (AuthenticationException e) {
}
// And an invalid user
try {
remoteAlfrescoTicketService.storeRemoteCredentials(TEST_REMOTE_SYSTEM_ID, "thisUSERdoesNOTexist", "invalid");
fail("Credentials invalid, shouldn't be allowed");
} catch (AuthenticationException e) {
}
// Still none there
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(null, credentials);
// Store some valid ones
credentials = remoteAlfrescoTicketService.storeRemoteCredentials(TEST_REMOTE_SYSTEM_ID, USER_ONE, PASSWORD);
assertNotNull(credentials);
assertEquals(TEST_REMOTE_SYSTEM_ID, credentials.getRemoteSystemName());
assertEquals(USER_ONE, credentials.getRemoteUsername());
// Check we can find them
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertNotNull(credentials);
assertEquals(TEST_REMOTE_SYSTEM_ID, credentials.getRemoteSystemName());
assertEquals(USER_ONE, credentials.getRemoteUsername());
// Store some different, valid credentials for the user
credentials = remoteAlfrescoTicketService.storeRemoteCredentials(TEST_REMOTE_SYSTEM_ID, USER_TWO, PASSWORD);
assertNotNull(credentials);
assertEquals(TEST_REMOTE_SYSTEM_ID, credentials.getRemoteSystemName());
assertEquals(USER_TWO, credentials.getRemoteUsername());
// Check we see the change
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertNotNull(credentials);
assertEquals(TEST_REMOTE_SYSTEM_ID, credentials.getRemoteSystemName());
assertEquals(USER_TWO, credentials.getRemoteUsername());
// Switch to the other user, no credentials there
AuthenticationUtil.setFullyAuthenticatedUser(USER_TWO);
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(null, credentials);
// Switch back, and delete
AuthenticationUtil.setFullyAuthenticatedUser(USER_ONE);
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertNotNull(credentials);
boolean deleted = remoteAlfrescoTicketService.deleteRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(true, deleted);
// Will have gone
credentials = remoteAlfrescoTicketService.getRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(null, credentials);
// Double delete is reported
deleted = remoteAlfrescoTicketService.deleteRemoteCredentials(TEST_REMOTE_SYSTEM_ID);
assertEquals(false, deleted);
}
Aggregations