Index: lams_contentrepository/.classpath =================================================================== diff -u -r63cf7c6482ec3eb90b170034bca0899f413d0d15 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/.classpath (.../.classpath) (revision 63cf7c6482ec3eb90b170034bca0899f413d0d15) +++ lams_contentrepository/.classpath (.../.classpath) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -25,7 +25,7 @@ - + Index: lams_contentrepository/build.xml =================================================================== diff -u -rb09eea4e497cd5697447c2b7fb76eaa746b94494 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/build.xml (.../build.xml) (revision b09eea4e497cd5697447c2b7fb76eaa746b94494) +++ lams_contentrepository/build.xml (.../build.xml) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -356,7 +356,7 @@ - Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IRepository.java =================================================================== diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IRepository.java (.../IRepository.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IRepository.java (.../IRepository.java) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -36,6 +36,10 @@ /** String used to define the path to the context file */ public static final String REPOSITORY_CONTEXT_PATH = "/org/lamsfoundation/lams/contentrepository/contentRepositoryApplicationContext.xml"; + /** String used to define the path to the context file used for + * JUNIT testing. This file uses local datasources */ + public static final String LOCAL_CONTEXT_PATH = + "/org/lamsfoundation/lams/contentrepository/contentRepositoryLocalApplicationContext.xml"; /** * Login, creating a new ticket for the given credentials and specified @@ -81,9 +85,10 @@ * * @param newCredential this user/password will be added to the repository * @throws RepositoryCheckedException if parameters are missing. + * @throws ItemExistsException if the credential already exists. */ - public void createCredential(ICredentials newCredential) - throws AccessDeniedException, RepositoryCheckedException; + public void createCredentials(ICredentials newCredential) + throws AccessDeniedException, RepositoryCheckedException, ItemExistsException; /** * Update a credential. Name cannot change, so really only the password changes Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleRepository.java =================================================================== diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleRepository.java (.../SimpleRepository.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleRepository.java (.../SimpleRepository.java) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -177,8 +177,8 @@ * Possibly this should only be available to an internal management tool * *** Security Risk - I'm converting two passwords to a string... *** */ - public void createCredential(ICredentials newCredential) - throws AccessDeniedException, RepositoryCheckedException { + public void createCredentials(ICredentials newCredential) + throws AccessDeniedException, RepositoryCheckedException, ItemExistsException { if ( newCredential == null || newCredential.getName() == null || newCredential.getPassword() == null) throw new RepositoryCheckedException("Credential is null or name/password is missing - cannot create credential."); @@ -187,7 +187,7 @@ // check that the user doesn't already exist CrCredential cred = credentialDAO.findByName(newCredential.getName()); if ( cred != null ) - throw new RepositoryCheckedException("Credential name "+newCredential.getName()+" already exists - cannot create credential."); + throw new ItemExistsException("Credential name "+newCredential.getName()+" already exists - cannot create credential."); // try to create the credential - this should be done via the Spring bean factory. cred = new CrCredential(); Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/contentRepositoryApplicationContext.xml =================================================================== diff -u -r8774613cfd0a6e8ddbab1c14aa88f160279e1090 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/contentRepositoryApplicationContext.xml (.../contentRepositoryApplicationContext.xml) (revision 8774613cfd0a6e8ddbab1c14aa88f160279e1090) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/contentRepositoryApplicationContext.xml (.../contentRepositoryApplicationContext.xml) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -81,7 +81,7 @@ - + @@ -114,7 +114,7 @@ - + Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/struts/action/LoginRepositoryAction.java =================================================================== diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/struts/action/LoginRepositoryAction.java (.../LoginRepositoryAction.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/struts/action/LoginRepositoryAction.java (.../LoginRepositoryAction.java) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -121,7 +121,7 @@ // add the tool credential, then create the workspace // if the credential isn't added first, then the addWorkspace // call will fail - only a valid credential can add a workspace. - repository.createCredential(cred); + repository.createCredentials(cred); repository.addWorkspace(cred, workspaceName); } catch (LoginException e) { log.error("LoginException occured ",e); Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/BaseTestCase.java =================================================================== diff -u -r59a810e17dffd1a080d8f1637cd202b9cc6fa4cb -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/BaseTestCase.java (.../BaseTestCase.java) (revision 59a810e17dffd1a080d8f1637cd202b9cc6fa4cb) +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/BaseTestCase.java (.../BaseTestCase.java) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -23,13 +23,7 @@ import junit.framework.TestCase; -import org.lamsfoundation.lams.contentrepository.ICredentials; -import org.lamsfoundation.lams.contentrepository.IRepository; -import org.lamsfoundation.lams.contentrepository.IRepositoryAdmin; -import org.lamsfoundation.lams.contentrepository.ITicket; -import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; -import org.lamsfoundation.lams.contentrepository.SimpleCredentials; -import org.lamsfoundation.lams.contentrepository.SimpleVersionedNode; +import org.apache.log4j.BasicConfigurator; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -73,7 +67,7 @@ // this is run for each test so once we have it, we don't // want to get it again! if ( context == null ) { - context = new ClassPathXmlApplicationContext("/org/lamsfoundation/lams/contentrepository/testContentRepositoryApplicationContext.xml"); + context = new ClassPathXmlApplicationContext(IRepository.LOCAL_CONTEXT_PATH); } if ( repository == null ) { Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/TestSimpleRepository.java =================================================================== diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r595537f66a61e42170b21864bed399d665d49c5f --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/TestSimpleRepository.java (.../TestSimpleRepository.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092) +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/TestSimpleRepository.java (.../TestSimpleRepository.java) (revision 595537f66a61e42170b21864bed399d665d49c5f) @@ -157,6 +157,9 @@ assertNotNull("Add workspace succeeded - can login to workspace. Ticket is "+ticket, ticket); } catch ( AccessDeniedException ae ) { assertTrue("Access denied exception thrown as expected. Exception was "+ae.getMessage(), true); + } catch ( ItemExistsException iee ) { + log.error("Workspace already exists - unable to check that it can be created.\n" + +" The test should really be run with a newly rebuilt database & test data loaded"); } catch ( Exception e ) { failUnexpectedException(e); } @@ -181,10 +184,13 @@ ICredentials cred1 = new SimpleCredentials(newUser, newPassword1); ICredentials cred2 = new SimpleCredentials(newUser, newPassword2); try { - repository.createCredential(cred1); + repository.createCredentials(cred1); repository.assignCredentials(cred1, INITIAL_WORKSPACE); ITicket newTicket = repository.login(cred1, INITIAL_WORKSPACE); assertTrue("Login succeeded for new user to original workspace.",true); + } catch ( ItemExistsException iee ) { + log.error("Credential already exists - unable to check that it can be created.\n" + +" The test should really be run with a newly rebuilt database & test data loaded"); } catch ( LoginException le ) { assertTrue("Login exception unexpectededly - user newly created. Exception was "+le.getMessage(),true); } catch ( Exception e ) { @@ -206,9 +212,9 @@ // try recreating a new user - should fail // setup credential with known username/password try { - repository.createCredential(cred1); + repository.createCredentials(cred1); fail("User creation should have failed due to duplicate username"); - } catch ( RepositoryCheckedException re ) { + } catch ( ItemExistsException re ) { assertTrue("Repository exception thrown was due to name duplication as expected: "+re.getMessage(), re.getMessage() != null && re.getMessage().equals(userAlreadyExistsMessage)); } catch ( Exception e ) {