Author: fdesbois Date: 2010-12-23 14:42:28 +0000 (Thu, 23 Dec 2010) New Revision: 849 Log: Resolve tests, use proper instances instead of mock, two much methods to wrap otherwise Modified: trunk/ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java Property changes on: trunk ___________________________________________________________________ Modified: svn:ignore - *.ipr *.iws *.iml target nbactions.xml + *.ipr *.iws *.iml *.idea target nbactions.xml Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-23 14:42:28 UTC (rev 849) @@ -35,11 +35,7 @@ import fr.ifremer.wao.ui.services.ServiceAuthentication; import org.apache.tapestry5.Link; import org.apache.tapestry5.PersistenceConstants; -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary; -import org.apache.tapestry5.annotations.InjectComponent; -import org.apache.tapestry5.annotations.Log; -import org.apache.tapestry5.annotations.Persist; -import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.*; import org.apache.tapestry5.corelib.components.Form; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; @@ -261,14 +257,14 @@ WaoUser user = serviceAuthentication.getConnectedUser().getUser(); if (logger.isDebugEnabled()) { - logger.debug("Load user roles for " + user.getLogin()); + logger.debug("Load user roles for " + user.getFullName()); } List<UserProfile> profiles = new ArrayList<UserProfile>(user.getUserProfile()); profileSelectModel = new GenericSelectModel<UserProfile>(profiles, - UserProfile.class, "Description", "topiaId", propertyAccess); + UserProfile.class, "description", "topiaId", propertyAccess); } else if (profileSelectModel == null) { profileSelectModel = new GenericSelectModel<UserProfile>(new ArrayList<UserProfile>(), - UserProfile.class, "Description", "topiaId", propertyAccess); + UserProfile.class, "description", "topiaId", propertyAccess); } return profileSelectModel; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-12-23 14:42:28 UTC (rev 849) @@ -28,23 +28,7 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.PieChartData; import fr.ifremer.wao.bean.PieChartDataImpl; -import fr.ifremer.wao.service.ServiceBoat; -import fr.ifremer.wao.service.ServiceBoatImpl; -import fr.ifremer.wao.service.ServiceCartography; -import fr.ifremer.wao.service.ServiceCartographyImpl; -import fr.ifremer.wao.service.ServiceChart; -import fr.ifremer.wao.service.ServiceContact; -import fr.ifremer.wao.service.ServiceContactImpl; -import fr.ifremer.wao.service.ServiceNews; -import fr.ifremer.wao.service.ServiceNewsImpl; -import fr.ifremer.wao.service.ServiceReferential; -import fr.ifremer.wao.service.ServiceReferentialImpl; -import fr.ifremer.wao.service.ServiceSampling; -import fr.ifremer.wao.service.ServiceSamplingImpl; -import fr.ifremer.wao.service.ServiceSynthesis; -import fr.ifremer.wao.service.ServiceSynthesisImpl; -import fr.ifremer.wao.service.ServiceUser; -import fr.ifremer.wao.service.ServiceUserImpl; +import fr.ifremer.wao.service.*; import fr.ifremer.wao.ui.pages.PieChart; import org.apache.tapestry5.SymbolConstants; import org.apache.tapestry5.ioc.Configuration; @@ -56,15 +40,7 @@ import org.apache.tapestry5.ioc.services.Coercion; import org.apache.tapestry5.ioc.services.CoercionTuple; import org.apache.tapestry5.ioc.services.RegistryShutdownHub; -import org.apache.tapestry5.services.ApplicationStateContribution; -import org.apache.tapestry5.services.ApplicationStateCreator; -import org.apache.tapestry5.services.ApplicationStateManager; -import org.apache.tapestry5.services.ComponentRequestFilter; -import org.apache.tapestry5.services.PageRenderLinkSource; -import org.apache.tapestry5.services.Request; -import org.apache.tapestry5.services.RequestFilter; -import org.apache.tapestry5.services.RequestHandler; -import org.apache.tapestry5.services.Response; +import org.apache.tapestry5.services.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -258,6 +234,9 @@ new ApplicationStateCreator<ConnectedUser>() { @Override public ConnectedUser create() { + if (logger.isDebugEnabled()) { + logger.debug("Create new ConnectedUser"); + } return serviceAuthentication.getNewUserInstance(); } }; Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-12-23 14:42:28 UTC (rev 849) @@ -63,7 +63,7 @@ </a> </div> <div id="user-infos" class="fleft"> - Vous êtes <strong>${currentUser.user.fullName}</strong> de la société <strong>${currentUser.company.name}</strong> + Vous êtes <strong>${currentUser.fullName}</strong> de la société <strong>${currentUser.company.name}</strong> (${accessText}) </div> <div id="user-actions" class="fright"> Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java =================================================================== --- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-23 14:42:28 UTC (rev 849) @@ -29,23 +29,15 @@ import fr.ifremer.wao.bean.ConnectedUserImpl; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; -import fr.ifremer.wao.entity.Company; -import fr.ifremer.wao.entity.CompanyImpl; -import fr.ifremer.wao.entity.UserProfile; -import fr.ifremer.wao.entity.UserProfileImpl; -import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.entity.WaoUserImpl; +import fr.ifremer.wao.entity.*; import fr.ifremer.wao.ui.services.AppModule; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.services.ApplicationStateManager; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.nuiton.topia.persistence.TopiaId; import test.fr.ifremer.wao.ui.demo.DemoModule; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - /** * AbstractApplicationTest * @@ -71,48 +63,54 @@ MockitoAnnotations.initMocks(this); } - @Mock - protected ConnectedUser user; - @Inject private ApplicationStateManager stateManager; - protected void prepareObserverUser(boolean contributeSession) { - /* - Company company = mock(Company.class); - when(company.getName()).thenReturn("TARTANPION"); + protected ConnectedUser createUser(String firstName, + String lastName, + String companyName, + UserRole role) { - when(user.getFullName()).thenReturn("Jean Michmuche"); - when(user.isAdmin()).thenReturn(false); - when(user.getRole()).thenReturn(UserRole.OBSERVER); - when(user.getCompany()).thenReturn(company); - */ - Company company = new CompanyImpl(); - company.setName("TARTANPION"); - WaoUser user = new WaoUserImpl(); - user.setFirstName("Jean"); - user.setLastName("Michmuche"); - user.setCompany(company); - UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true); - user.addUserProfile(observerProfile); + company.setName(companyName); + WaoUser waoUser = new WaoUserImpl(); + waoUser.setFirstName(firstName); + waoUser.setLastName(lastName); + waoUser.setCompany(company); + UserProfile profile = createProfile(role, ObsProgram.OBSMER, true); + waoUser.addUserProfile(profile); - ConnectedUser connectedUser = new ConnectedUserImpl(); - connectedUser.setUser(user); - connectedUser.setProfile(observerProfile); + ConnectedUser user = new ConnectedUserImpl(); + user.setUser(waoUser); + user.setProfile(profile); + return user; + } + protected UserProfile createProfile(UserRole role, + ObsProgram program, + boolean canWrite) { + + UserProfile profile = new UserProfileImpl(); + profile.setTopiaId(TopiaId.create(UserProfile.class)); + profile.setCanWrite(canWrite); + profile.setObsProgram(program); + profile.setUserRole(role); + return profile; + + } + + protected ConnectedUser createObserver(boolean contributeSession) { + + ConnectedUser user = + createUser("Jean", "Michmuche", "TARTANPION", UserRole.OBSERVER); + if (contributeSession) { - stateManager.set(ConnectedUser.class, connectedUser); + stateManager.set(ConnectedUser.class, user); } + return user; } - protected void prepareAdminUser() { - Company company = mock(Company.class); - when(company.getName()).thenReturn("ADMIN"); - - when(user.getFullName()).thenReturn("Super Admin"); - when(user.isAdmin()).thenReturn(true); - when(user.getRole()).thenReturn(UserRole.ADMIN); - when(user.getCompany()).thenReturn(company); + protected ConnectedUser createAdmin() { + return createUser("Super", "Admin", "ADMIN", UserRole.ADMIN); } } Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java =================================================================== --- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java 2010-12-23 14:42:28 UTC (rev 849) @@ -46,7 +46,7 @@ public void testAuthenticationFailed() { logger.info("## testAuthenticationFailed"); - prepareObserverUser(true); + createObserver(true); Document page = tester.renderPage("administration"); // User not allowed will be redirect on Unavailable page Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java =================================================================== --- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-23 11:42:31 UTC (rev 848) +++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-23 14:42:28 UTC (rev 849) @@ -28,13 +28,10 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; -import fr.ifremer.wao.bean.ConnectedUserImpl; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.UserRole; -import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.News; -import fr.ifremer.wao.entity.UserProfileImpl; -import fr.ifremer.wao.entity.WaoUser; +import fr.ifremer.wao.entity.UserProfile; import fr.ifremer.wao.service.ServiceNews; import fr.ifremer.wao.service.ServiceUser; import fr.ifremer.wao.ui.services.ServiceAuthentication; @@ -50,12 +47,9 @@ import test.fr.ifremer.wao.ui.AbstractApplicationTest; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; -import java.util.LinkedList; import java.util.Map; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** @@ -74,14 +68,14 @@ public void testUserSession() throws WaoException, WaoBusinessException { logger.info("## testUserSession"); - prepareObserverUser(true); + createObserver(true); ConnectedUser sso = stateManager.getIfExists(ConnectedUser.class); Assert.assertNotNull(sso); Assert.assertFalse(sso.isAdmin()); Assert.assertTrue(serviceAuthentication.existConnectedUser()); - Assert.assertNotNull(serviceAuthentication.getConnectedUser().getUser().getFullName()); + Assert.assertNotNull(serviceAuthentication.getConnectedUser().getFullName()); Assert.assertNotNull(serviceAuthentication.getConnectedUser().getProfile()); Document page = tester.renderPage("index"); @@ -117,7 +111,7 @@ Assert.assertNotNull(connectionPage.getElementById("so-connexion-box")); // Prepare user connection - prepareAdminUser(); + ConnectedUser user = createAdmin(); logger.info("-- Connect user : rediction to 'Index' page"); Document indexPage = connect(connectionPage, user); @@ -128,61 +122,30 @@ checkIndexPage(indexPage); } - private Document connect(Document connectionPage, ConnectedUser user) - throws WaoBusinessException { - when(serviceUser.connect("login", "password")).thenReturn(user); - when(serviceNews.getNews(user)).thenReturn(new ArrayList<News>()); - - Map<String, String> fieldValues = new HashMap<String, String>(); - fieldValues.put("login", "login"); - fieldValues.put("password", "password"); - Document result = tester.submitForm( - connectionPage.getElementById("connexionForm"), fieldValues); - return result; - } - - private Element checkIndexPage(Document page) { - Element main = page.getElementById("so-news"); - if (logger.isDebugEnabled()) { - logger.debug("Content page News : " + main); - } - Assert.assertNotNull(main); - return main; - } - - private WaoUser getMultiRoleUser() { - Company company = mock(Company.class); - when(company.getName()).thenReturn("TEST"); - - Collection<fr.ifremer.wao.entity.UserProfile> profiles = new LinkedList<fr.ifremer.wao.entity.UserProfile>(); - profiles.add(new UserProfileImpl(ObsProgram.OBSMER, UserRole.ADMIN, true)); - profiles.add(new UserProfileImpl(ObsProgram.OBSMER, UserRole.COORDINATOR, true)); - - WaoUser user = mock(WaoUser.class); - when(user.getUserProfile()).thenReturn(profiles); - when(user.getLogin()).thenReturn("multiroleUser"); - when(user.getFullName()).thenReturn("User Test"); - when(user.getCompany()).thenReturn(company); - - return user; - } - @Test public void testMultiRoleUserConnection() throws WaoBusinessException { logger.info("## testMultiRoleUserConnection"); /** PREPARE LOADING **/ + ConnectedUser user = null; + logger.info("-- Load 'Index' page : redirection to 'Connexion' page"); when(serviceNews.getNews(user)).thenReturn(new ArrayList<News>()); Document connectionPage1 = tester.renderPage("index"); // Prepare user for connection - ConnectedUser userConnected = new ConnectedUserImpl(); - userConnected.setUser(getMultiRoleUser()); + user = createUser("User", "Test", "TEST", UserRole.ADMIN); + // reset selected profile, because more than one is available + user.setProfile(null); + // Add other profile + UserProfile coordinatorProfile = + createProfile(UserRole.COORDINATOR, ObsProgram.OBSMER, true); + user.getUser().addUserProfile(coordinatorProfile); + logger.info("-- Connect user : no unique role found, refresh 'Connexion' page"); - Document connectionPage2 = connect(connectionPage1, userConnected); + Document connectionPage2 = connect(connectionPage1, user); if (logger.isInfoEnabled()) { logger.info("Content with popup roles : " + connectionPage2); } @@ -190,24 +153,42 @@ Assert.assertNotNull(connectionPage2.getElementById("roleForm")); Assert.assertTrue(serviceAuthentication.existConnectedUser()); - /** EXECUTE SUBMISSION FOR ROLE **/ + /** EXECUTE SUBMISSION FOR PROFILE **/ logger.info("-- Choose role ADMIN : redirection to 'Index' page"); - /* Map<String, String> fieldValues = new HashMap<String, String>(); - fieldValues.put("userRole", UserRole.ADMIN.name()); + fieldValues.put("userProfile", coordinatorProfile.getTopiaId()); Document result = tester.submitForm( connectionPage2.getElementById("roleForm"), fieldValues); - */ + UserRole connectionRole = + serviceAuthentication.getConnectedUser().getRole(); + Assert.assertNotNull(connectionRole); + Assert.assertEquals(UserRole.COORDINATOR, connectionRole); + + checkIndexPage(result); + } + + private Document connect(Document connectionPage, ConnectedUser user) + throws WaoBusinessException { + when(serviceUser.connect("login", "password")).thenReturn(user); + when(serviceNews.getNews(user)).thenReturn(new ArrayList<News>()); + Map<String, String> fieldValues = new HashMap<String, String>(); - fieldValues.put("userProfile", user.getProfile().getTopiaId()); + fieldValues.put("login", "login"); + fieldValues.put("password", "password"); Document result = tester.submitForm( - connectionPage2.getElementById("roleForm"), fieldValues); + connectionPage.getElementById("connexionForm"), fieldValues); + return result; + } - Assert.assertNotNull(serviceAuthentication.getConnectedUser().getRole()); - - checkIndexPage(result); + private Element checkIndexPage(Document page) { + Element main = page.getElementById("so-news"); + if (logger.isDebugEnabled()) { + logger.debug("Content page News : " + main); + } + Assert.assertNotNull(main); + return main; } }