r3935 - in trunk/pollen-services/src/test/java/org/chorem/pollen: . services services/service
Author: tchemit Date: 2014-05-13 00:04:28 +0200 (Tue, 13 May 2014) New Revision: 3935 Url: http://forge.chorem.org/projects/pollen/repository/revisions/3935 Log: fix test package Added: trunk/pollen-services/src/test/java/org/chorem/pollen/services/ trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/ trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java Removed: trunk/pollen-services/src/test/java/org/chorem/pollen/service/ Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/AbstractPollenServiceTest.java) =================================================================== --- trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java (rev 0) +++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935) @@ -0,0 +1,78 @@ +package org.chorem.pollen.services; + +/* + * #%L + * Pollen :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2013 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import com.google.common.collect.Multimap; +import org.chorem.pollen.services.service.InvalidFormException; +import org.chorem.pollen.services.test.FakePollenApplicationContext; +import org.chorem.pollen.services.test.FakePollenServiceContext; +import org.junit.Assert; +import org.junit.Rule; + +import java.util.Locale; + +public abstract class AbstractPollenServiceTest { + + protected static final double DELTA = 0.0001; + + @Rule + public final FakePollenApplicationContext application = new FakePollenApplicationContext("pollen-services.properties"); + + protected FakePollenServiceContext serviceContext; + + public void loadFixtures(String fixturesSetName) { + + application.loadFixtures(getServiceContext(), fixturesSetName); + } + + public <E> E fixture(String id) { + + return application.fixture(id); + } + + protected FakePollenServiceContext getServiceContext() { + + if (serviceContext == null) { + serviceContext = application.newServiceContext(application.newPersistenceContext(), Locale.FRANCE); + } + + return serviceContext; + } + + protected <E extends PollenService> E newService(Class<E> serviceClass) { + + return getServiceContext().newService(serviceClass); + } + + protected void assertErrorKeyFound(InvalidFormException e, String... keys) { + Multimap<String, String> errors = e.getErrors(); + + Assert.assertEquals("Expected " + keys.length + " errors, but had " + errors.keySet(), keys.length, errors.keySet().size()); + for (String key : keys) { + + Assert.assertTrue("Expected error:" + key + ", but not found among:" + errors.keySet(), errors.containsKey(key)); + } + } + +} Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/PollServiceTest.java) =================================================================== --- trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java (rev 0) +++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935) @@ -0,0 +1,553 @@ +package org.chorem.pollen.services.service; + +/* + * #%L + * Pollen :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2013 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import org.chorem.pollen.persistence.entity.Choice; +import org.chorem.pollen.persistence.entity.ChoiceType; +import org.chorem.pollen.persistence.entity.Poll; +import org.chorem.pollen.persistence.entity.PollType; +import org.chorem.pollen.persistence.entity.VoterList; +import org.chorem.pollen.persistence.entity.VoterListMember; +import org.chorem.pollen.services.AbstractPollenServiceTest; +import org.chorem.pollen.services.service.security.PollenInvalidPermissionException; +import org.chorem.pollen.services.test.FakePollenSecurityContext; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0 + */ +public class PollServiceTest extends AbstractPollenServiceTest { + + protected PollService service; + + protected ChoiceService choiceService; + + protected VoterListService voterListService; + + @Before + public void setUp() throws ParseException { + + loadFixtures("fixtures"); + + service = newService(PollService.class); + choiceService = newService(ChoiceService.class); + voterListService = newService(VoterListService.class); + + getServiceContext().setDate(new Date(1363948427576l)); + + getServiceContext().setSecurityContext(new FakePollenSecurityContext()); + } + + @Test + public void createSafeFreePoll() throws InvalidFormException { + + Poll poll = service.getNewPoll(); + + poll.setPollType(PollType.FREE); + poll.setTitle("poll1"); + + List<Choice> choices = new ArrayList<>(); + + Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choices.add(choice1); + choice1.setChoiceType(ChoiceType.TEXT); + choice1.setName("A"); + choice1.setDescription("Choice A"); + + + Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choice2.setChoiceType(ChoiceType.TEXT); + choice2.setName("B"); + choice2.setDescription("Choice B"); + choices.add(choice2); + + Poll createdPoll = service.createPoll(poll, choices, null); + Assert.assertNotNull(createdPoll); + Assert.assertNotNull(createdPoll.getTopiaId()); + + Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId()); + Assert.assertEquals(createdPoll, reloadedPoll); + + Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate()); + + Assert.assertNotNull(createdPoll.getCreator()); + Assert.assertNotNull(createdPoll.getCreator().getTopiaId()); + Assert.assertNull(createdPoll.getCreator().getName()); + Assert.assertNull(createdPoll.getCreator().getEmail()); + + List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdChoices); + Assert.assertEquals(2, createdChoices.size()); + + + Choice createdChoice1 = createdChoices.get(0); + Assert.assertNotNull(createdChoice1); + Assert.assertNotNull(createdChoice1.getTopiaId()); + + Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId()); + Assert.assertEquals(createdChoice1, reloadedChoice1); + + Assert.assertEquals(choice1.getName(), createdChoice1.getName()); + Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator()); + + Choice createdChoice2 = createdChoices.get(1); + Assert.assertNotNull(createdChoice2); + Assert.assertNotNull(createdChoice2.getTopiaId()); + + Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId()); + Assert.assertEquals(createdChoice2, reloadedChoice2); + + Assert.assertEquals(choice2.getName(), createdChoice2.getName()); + Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator()); + + } + + @Test + public void testCreateFreePoll() throws InvalidFormException { + + Poll poll = service.getNewPoll(); + + poll.setPollType(PollType.FREE); + + try { + service.createPoll(poll, null, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing title + // missing choice + assertErrorKeyFound(e, "title", "choice"); + } + + poll.setTitle("poll1"); + + List<Choice> choices = new ArrayList<>(); + Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choices.add(choice1); + + try { + service.createPoll(poll, choices, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing choice type + assertErrorKeyFound(e, "choice[0].choiceType"); + } + + choice1.setChoiceType(ChoiceType.TEXT); + try { + service.createPoll(poll, choices, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing choice name + assertErrorKeyFound(e, "choice[0].name"); + } + + choice1.setName("A"); + choice1.setDescription("Choice A"); + + + Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choice2.setChoiceType(ChoiceType.TEXT); + choice2.setName("A"); + choice2.setDescription("Choice B"); + choices.add(choice2); + + try { + service.createPoll(poll, choices, null); + Assert.fail(); + } catch (InvalidFormException e) { + // duplicated choice name + assertErrorKeyFound(e, "choice[1].name"); + } + + choice2.setName("B"); + + + Poll createdPoll = service.createPoll(poll, choices, null); + Assert.assertNotNull(createdPoll); + Assert.assertNotNull(createdPoll.getTopiaId()); + + Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId()); + Assert.assertEquals(createdPoll, reloadedPoll); + + Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate()); + + Assert.assertNotNull(createdPoll.getCreator()); + Assert.assertNotNull(createdPoll.getCreator().getTopiaId()); + Assert.assertNull(createdPoll.getCreator().getName()); + Assert.assertNull(createdPoll.getCreator().getEmail()); +// Assert.assertNull(createdPoll.getComment()); +// Assert.assertNull(createdPoll.getVote()); +// Assert.assertNull(createdPoll.getVoterList()); + + List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdChoices); + Assert.assertEquals(2, createdChoices.size()); + + + Choice createdChoice1 = createdChoices.get(0); + Assert.assertNotNull(createdChoice1); + Assert.assertNotNull(createdChoice1.getTopiaId()); + + Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId()); + Assert.assertEquals(createdChoice1, reloadedChoice1); + + Assert.assertEquals(choice1.getName(), createdChoice1.getName()); + Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator()); + + Choice createdChoice2 = createdChoices.get(1); + Assert.assertNotNull(createdChoice2); + Assert.assertNotNull(createdChoice2.getTopiaId()); + + Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId()); + Assert.assertEquals(createdChoice2, reloadedChoice2); + + Assert.assertEquals(choice2.getName(), createdChoice2.getName()); + Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator()); + + } + + + @Test + public void createSafeRestrictedPoll() throws InvalidFormException { + + Poll poll = service.getNewPoll(); + + poll.setPollType(PollType.GROUP); + poll.setTitle("poll1"); + + List<Choice> choices = new ArrayList<>(); + + Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choices.add(choice1); + choice1.setChoiceType(ChoiceType.TEXT); + choice1.setName("A"); + choice1.setDescription("Choice A"); + + + Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choice2.setChoiceType(ChoiceType.TEXT); + choice2.setName("B"); + choice2.setDescription("Choice B"); + choices.add(choice2); + + List<VoterList> voterLists = new ArrayList<>(); + + // add voter list + VoterList voterList = getServiceContext().getPersistenceContext().getVoterListDao().newInstance(); + + voterLists.add(voterList); + voterList.setName("voterList1"); + voterList.setWeight(1); + + VoterListMember voterListMember1 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance(); + voterList.addMember(voterListMember1); + + voterListMember1.setName("voter1"); + voterListMember1.setWeight(0.3); + voterListMember1.setEmail("voter1@pollen.org"); + + VoterListMember voterListMember2 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance(); + voterList.addMember(voterListMember2); + voterListMember2.setName("voter2"); + voterListMember2.setEmail("voter2@pollen.org"); + voterListMember2.setWeight(0.7); + + Poll createdPoll = service.createPoll(poll, choices, voterLists); + Assert.assertNotNull(createdPoll); + Assert.assertNotNull(createdPoll.getTopiaId()); + + try { + service.getPoll(createdPoll.getTopiaId()); + Assert.fail(); + } catch (PollenInvalidPermissionException e) { + Assert.assertTrue(true); + } + + FakePollenSecurityContext securityContext = (FakePollenSecurityContext) serviceContext.getSecurityContext(); + securityContext.setMainPrincipal(createdPoll.getCreator()); + + Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId()); + Assert.assertEquals(createdPoll, reloadedPoll); + + Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate()); + + Assert.assertNotNull(createdPoll.getCreator()); + Assert.assertNotNull(createdPoll.getCreator().getTopiaId()); + Assert.assertNull(createdPoll.getCreator().getName()); + Assert.assertNull(createdPoll.getCreator().getEmail()); + + List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdChoices); + Assert.assertEquals(2, createdChoices.size()); + + Choice createdChoice1 = createdChoices.get(0); + Assert.assertNotNull(createdChoice1); + Assert.assertNotNull(createdChoice1.getTopiaId()); + + Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId()); + Assert.assertEquals(createdChoice1, reloadedChoice1); + + Assert.assertEquals(choice1.getName(), createdChoice1.getName()); + Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator()); + + Choice createdChoice2 = createdChoices.get(1); + Assert.assertNotNull(createdChoice2); + Assert.assertNotNull(createdChoice2.getTopiaId()); + + Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId()); + Assert.assertEquals(createdChoice2, reloadedChoice2); + + Assert.assertEquals(choice2.getName(), createdChoice2.getName()); + Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator()); + + List<VoterList> createdVoterLists = voterListService.getVoterLists(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdVoterLists); + Assert.assertEquals(1, createdVoterLists.size()); + VoterList createdVoterList = createdVoterLists.get(0); + Assert.assertNotNull(createdVoterList); + Assert.assertNotNull(createdVoterList.getTopiaId()); + + VoterList reloadedVoterList = voterListService.getVoterList(createdPoll.getTopiaId(), createdVoterList.getTopiaId()); + Assert.assertEquals(createdVoterList, reloadedVoterList); + + Assert.assertEquals(voterList.getName(), createdVoterList.getName()); + Assert.assertEquals(voterList.getWeight(), createdVoterList.getWeight(), 0); + + Assert.assertNotNull(createdVoterList.getMember()); + Assert.assertEquals(2, createdVoterList.sizeMember()); + + } + + @Test + public void testCreateRestrictedPoll() throws InvalidFormException { + + Poll poll = service.getNewPoll(); + poll.setPollType(PollType.RESTRICTED); + + poll.setTitle("poll1"); + + List<Choice> choices = new ArrayList<>(); + + Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choice1.setChoiceType(ChoiceType.TEXT); + choice1.setName("A"); + choice1.setDescription("Choice A"); + + choices.add(choice1); + + Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance(); + choice2.setChoiceType(ChoiceType.TEXT); + choice2.setName("B"); + choice2.setDescription("Choice B"); + + choices.add(choice2); + + try { + service.createPoll(poll, choices, null); + Assert.fail(); + } catch (InvalidFormException e) { + // missing voterList + assertErrorKeyFound(e, "voterList"); + } + + List<VoterList> voterLists = new ArrayList<>(); + + // add voter list + VoterList voterList = getServiceContext().getPersistenceContext().getVoterListDao().newInstance(); + + voterLists.add(voterList); + + try { + service.createPoll(poll, choices, voterLists); + Assert.fail(); + } catch (InvalidFormException e) { + // missing name + // missing weight + // missing voterListMember + assertErrorKeyFound(e, "voterList[0].name", "voterList[0].weight", "voterList[0].member"); + } + + voterList.setName("voterList1"); + voterList.setWeight(1); + + VoterListMember voterListMember1 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance(); + voterList.addMember(voterListMember1); + + try { + service.createPoll(poll, choices, voterLists); + Assert.fail(); + } catch (InvalidFormException e) { + // missing member name + // missing member email + assertErrorKeyFound(e, "voterList[0].member[0].name", "voterList[0].member[0].email", "voterList[0].member[0].weight"); + } + + voterListMember1.setName("voter1"); + voterListMember1.setWeight(0.3); + voterListMember1.setEmail("voter1_pollen.org"); + + try { + service.createPoll(poll, choices, voterLists); + Assert.fail(); + } catch (InvalidFormException e) { + // invalid member email + assertErrorKeyFound(e, "voterList[0].member[0].email"); + } + + voterListMember1.setEmail("voter1@pollen.org"); + + VoterListMember voterListMember2 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance(); + voterListMember2.setName("voter1"); + voterListMember2.setWeight(0.7); + voterListMember2.setEmail("voter1@pollen.org"); + voterList.addMember(voterListMember2); + + try { + service.createPoll(poll, choices, voterLists); + Assert.fail(); + } catch (InvalidFormException e) { + // same name + // same email + assertErrorKeyFound(e, "voterList[0].member[1].name", "voterList[0].member[1].email"); + } + + voterListMember2.setName("voter2"); + voterListMember2.setEmail("voter2@pollen.org"); + + Poll createdPoll = service.createPoll(poll, choices, voterLists); + Assert.assertNotNull(createdPoll); + Assert.assertNotNull(createdPoll.getTopiaId()); + + try { + service.getPoll(createdPoll.getTopiaId()); + Assert.fail(); + } catch (PollenInvalidPermissionException e) { + Assert.assertTrue(true); + } + + FakePollenSecurityContext securityContext = (FakePollenSecurityContext) serviceContext.getSecurityContext(); + securityContext.setMainPrincipal(createdPoll.getCreator()); + + Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId()); + Assert.assertEquals(createdPoll, reloadedPoll); + + Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate()); + + Assert.assertNotNull(createdPoll.getCreator()); + Assert.assertNotNull(createdPoll.getCreator().getTopiaId()); + Assert.assertNull(createdPoll.getCreator().getName()); + Assert.assertNull(createdPoll.getCreator().getEmail()); +// Assert.assertNull(createdPoll.getComment()); +// Assert.assertNull(createdPoll.getVote()); + + List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdChoices); + Assert.assertEquals(2, createdChoices.size()); + + Choice createdChoice1 = createdChoices.get(0); + Assert.assertNotNull(createdChoice1); + Assert.assertNotNull(createdChoice1.getTopiaId()); + + Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId()); + Assert.assertEquals(createdChoice1, reloadedChoice1); + + Assert.assertEquals(choice1.getName(), createdChoice1.getName()); + Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator()); + + Choice createdChoice2 = createdChoices.get(1); + Assert.assertNotNull(createdChoice2); + Assert.assertNotNull(createdChoice2.getTopiaId()); + + Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId()); + Assert.assertEquals(createdChoice2, reloadedChoice2); + + Assert.assertEquals(choice2.getName(), createdChoice2.getName()); + Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription()); + Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator()); + + List<VoterList> createdVoterLists = voterListService.getVoterLists(createdPoll.getTopiaId()); + + Assert.assertNotNull(createdVoterLists); + Assert.assertEquals(1, createdVoterLists.size()); + VoterList createdVoterList = createdVoterLists.get(0); + Assert.assertNotNull(createdVoterList); + Assert.assertNotNull(createdVoterList.getTopiaId()); + + VoterList reloadedVoterList = voterListService.getVoterList(createdPoll.getTopiaId(), createdVoterList.getTopiaId()); + Assert.assertEquals(createdVoterList, reloadedVoterList); + + Assert.assertEquals(voterList.getName(), createdVoterList.getName()); + Assert.assertEquals(voterList.getWeight(), createdVoterList.getWeight(), 0); + + Assert.assertNotNull(createdVoterList.getMember()); + Assert.assertEquals(2, createdVoterList.sizeMember()); + +// VoterListMember createdVoterListMember1 = Iterables.get(createdVoterList.getMember(), 0); +// +// Assert.assertNotNull(createdVoterListMember1); +// Assert.assertNotNull(createdVoterListMember1.getTopiaId()); +// VoterListMember reloadedVoterListMember1 = voterListService.getMember(createdPoll.getTopiaId(), createdVoterList.getTopiaId(), createdVoterListMember1.getTopiaId()); +// Assert.assertEquals(createdVoterListMember1, reloadedVoterListMember1); +// +// Assert.assertEquals(reloadedVoterListMember1.getName(), createdVoterListMember1.getName()); +// Assert.assertEquals(reloadedVoterListMember1.getEmail(), createdVoterListMember1.getEmail()); +// Assert.assertEquals(reloadedVoterListMember1.getWeight(), createdVoterListMember1.getWeight(), 0); +// +// VoterListMember createdVoterListMember2 = Iterables.get(createdVoterList.getMember(), 1); +// +// Assert.assertNotNull(createdVoterListMember2); +// Assert.assertNotNull(createdVoterListMember2.getTopiaId()); +// +// VoterListMember reloadedVoterListMember2 = voterListService.getMember(createdPoll.getTopiaId(), createdVoterList.getTopiaId(), createdVoterListMember2.getTopiaId()); +// Assert.assertEquals(createdVoterListMember2, reloadedVoterListMember2); +// +// Assert.assertEquals(reloadedVoterListMember2.getName(), createdVoterListMember2.getName()); +// Assert.assertEquals(reloadedVoterListMember2.getEmail(), createdVoterListMember2.getEmail()); +// Assert.assertEquals(reloadedVoterListMember2.getWeight(), createdVoterListMember2.getWeight(), 0); + + } + +} Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/PollenUserServiceTest.java) =================================================================== --- trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java (rev 0) +++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935) @@ -0,0 +1,206 @@ +package org.chorem.pollen.services.service; + +/* + * #%L + * Pollen :: Service + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2009 - 2013 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ + +import org.apache.commons.collections4.CollectionUtils; +import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.PollenUsers; +import org.chorem.pollen.services.AbstractPollenServiceTest; +import org.chorem.pollen.services.service.security.PollenInvalidEmailActivationTokenException; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.topia.persistence.TopiaNoResultException; + +import java.text.ParseException; +import java.util.Date; +import java.util.List; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0 + */ +public class PollenUserServiceTest extends AbstractPollenServiceTest { + + protected PollenUserService service; + + protected PollenUser user; + + @Before + public void setUp() throws ParseException { + + loadFixtures("fixtures"); + + service = newService(PollenUserService.class); + + getServiceContext().setDate(new Date(1363948427576l)); + + user = application.fixture("user_tony"); + } + + @Test + public void testGetPollenUsers() { + + List<PollenUser> users = service.getUsers(); + + Assert.assertNotNull(users); + Assert.assertTrue(CollectionUtils.isNotEmpty(users)); + } + + @Test + public void testGetPollenUser() { + + try { + service.getUser("pollen_user_tony_" + System.nanoTime()); + + } catch (TopiaNoResultException e) { + Assert.assertTrue(true); + } + + PollenUser user = service.getUser(this.user.getTopiaId()); + + Assert.assertNotNull(user); + Assert.assertEquals(this.user, user); + } + + @Test + public void testCreatePollenUser() throws InvalidFormException { + + try { + service.createUser(user, false); + Assert.fail(); + } catch (IllegalStateException e) { + // Should having id + Assert.assertTrue(true); + } + + PollenUser newUser = getServiceContext().getPersistenceContext().getPollenUserDao().newInstance(); + newUser.setLogin("pollen"); + newUser.setEmail("pollen@pollen.org"); + + PollenUser savedUser = service.createUser(newUser, true); + Assert.assertNotNull(savedUser); + Assert.assertNotNull(savedUser.getTopiaId()); + + PollenUser newUser2 = getServiceContext().getPersistenceContext().getPollenUserDao().newInstance(); + newUser2.setLogin("pollen"); + newUser2.setEmail("pollen@pollen.org"); + + try { + service.createUser(newUser2, true); + Assert.fail(); + } catch (InvalidFormException e) { + // not available login + // not available email + assertErrorKeyFound(e, "login", "email"); + } + + newUser2.setLogin("pollen2"); + try { + service.createUser(newUser2, true); + Assert.fail(); + } catch (InvalidFormException e) { + // not available email + assertErrorKeyFound(e, "email"); + } + + newUser2.setEmail("pollen2@pollen.org"); + PollenUser savedUser2 = service.createUser(newUser2, true); + Assert.assertNotNull(savedUser2); + Assert.assertNotNull(savedUser2.getTopiaId()); + } + + @Test + public void testEditUser() throws InvalidFormException { + + PollenUser user = service.getUser(this.user.getTopiaId()); + + Assert.assertNotNull(user); + Assert.assertNull(user.getEmailActivationToken()); + + getServiceContext().getPersistenceContext().getHibernateSupport().getHibernateSession().evict(user); + + String originalLogin = user.getLogin(); + + user.setLogin("yetanotherlogin"); + String email = "tony@pollen.org"; + user.setEmail(email); + + try { + service.editUser(user); + Assert.fail(); + } catch (InvalidFormException e) { + // invalid password + assertErrorKeyFound(e, "password"); + } + + user.setPassword("fake"); + service.editUser(user); + + PollenUser savedUser = service.getUser(user.getTopiaId()); + Assert.assertNotNull(savedUser); + Assert.assertEquals(originalLogin, savedUser.getLogin()); + Assert.assertEquals(email, savedUser.getEmail()); + Assert.assertNotNull(savedUser.getEmailActivationToken()); + } + + @Test + public void testValidateEmail() throws PollenInvalidEmailActivationTokenException, InvalidFormException { + + PollenUser user = service.getUser0(this.user.getTopiaId()); + Assert.assertNotNull(user); + Assert.assertNull(user.getEmailActivationToken()); + + getServiceContext().getPersistenceContext().getHibernateSupport().getHibernateSession().evict(user); + + String email = "tony@pollen.org"; + user.setEmail(email); + user.setPassword("fake"); + + service.editUser(user); + + PollenUser savedUser = service.getUser(user.getTopiaId()); + Assert.assertNotNull(savedUser); + + Assert.assertEquals(email, savedUser.getEmail()); + Assert.assertNotNull(savedUser.getEmailActivationToken()); + + try { + service.validateUserEmail(user.getTopiaId(), "fakeToken"); + Assert.fail(); + } catch (PollenInvalidEmailActivationTokenException e) { + Assert.assertTrue(true); + } + + Assert.assertFalse(PollenUsers.isEmailActivated(savedUser)); + + service.validateUserEmail(user.getTopiaId(), savedUser.getEmailActivationToken().getToken()); + + PollenUser reloadedUser = service.getUser(this.user.getTopiaId()); + Assert.assertTrue(PollenUsers.isEmailActivated(reloadedUser)); + + } +}
participants (1)
-
tchemit@users.chorem.org