// // Copyright (c) 2011 Linkeos. // // This file is part of Elveos.org. // Elveos.org is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the // Free Software Foundation, either version 3 of the License, or (at your // option) any later version. // // Elveos.org 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 General Public License along // with Elveos.org. If not, see http://www.gnu.org/licenses/. // package com.bloatit.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.Locale; import org.junit.Test; import com.bloatit.data.DaoMember; import com.bloatit.data.exceptions.ElementNotFoundException; import com.bloatit.framework.exceptions.highlevel.BadProgrammerException; import com.bloatit.framework.utils.i18n.Language; import com.bloatit.framework.webprocessor.context.User.ActivationState; import com.bloatit.model.managers.MemberManager; import com.bloatit.model.managers.TeamManager; import com.bloatit.model.right.AuthToken; import com.bloatit.model.right.UnauthorizedOperationException; import com.bloatit.model.right.UnauthorizedPrivateAccessException; public class MemberTest extends ModelTestUnit { @Test public void testAddToPublicGroup() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); final DaoMember daouser = new Member("User", "password", "user@gmail.com", Locale.FRANCE).getDao(); daouser.setFullname("Thomas Guyard"); daouser.setActivationState(ActivationState.ACTIVE); final Member user = Member.create(daouser); AuthToken.authenticate(user); user.addToPublicTeam(TeamManager.getByName("publicGroup")); assertTrue(user.isInTeam(TeamManager.getByName("publicGroup"))); assertTrue(yo.isInTeam(TeamManager.getByName("publicGroup"))); AuthToken.authenticate(memberYo); try { yo.addToPublicTeam(TeamManager.getByName("publicGroup")); fail(); } catch (final BadProgrammerException e) { assertTrue(true); } try { AuthToken.authenticate(memeberFred); // A user can only add himself to a public group. yo.addToPublicTeam(TeamManager.getByName("publicGroup")); fail(); } catch (final Exception e) { assertTrue(true); } } @Test public void testRemoveFromGroup() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); yo.kickFromTeam(TeamManager.getByName("publicGroup"), yo); assertFalse(yo.isInTeam(TeamManager.getByName("publicGroup"))); try { AuthToken.authenticate(memeberFred); // A user can only remove himself from a group. yo.kickFromTeam(TeamManager.getByName("publicGroup"), memeberFred); fail(); } catch (final Exception e) { assertTrue(true); } } @Test public void testInviteIntoProtectedGroup() { MemberManager.getMemberByLogin("Yoann"); MemberManager.getMemberByLogin("Fred"); } @Test public void testGetKarma() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); assertEquals(0, yo.getKarma()); AuthToken.authenticate(memeberFred); assertEquals(0, yo.getKarma()); AuthToken.authenticate(memberTom); assertEquals(0, yo.getKarma()); } @Test public void testSetFullName() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); assertEquals(0, yo.getKarma()); AuthToken.authenticate(memeberFred); assertEquals(0, yo.getKarma()); AuthToken.authenticate(memberTom); assertEquals(0, yo.getKarma()); } @Test public void testGetFullname() { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); assertEquals("Yoann Plénet", yo.getFullname()); AuthToken.authenticate(memeberFred); assertEquals("Yoann Plénet", yo.getFullname()); AuthToken.authenticate(memberTom); assertEquals("Yoann Plénet", yo.getFullname()); } @Test public void testSetFullname() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); yo.setFullname("Plénet Yoann"); try { AuthToken.authenticate(memeberFred); yo.setFullname("plop"); fail(); } catch (final Exception e) { assertTrue(true); } assertEquals("Plénet Yoann", yo.getFullname()); } @Test public void testSetPassword() throws UnauthorizedOperationException { final Member yo = MemberManager.getMemberByLogin("Yoann"); AuthToken.authenticate(memberYo); yo.setPassword("Coucou"); try { AuthToken.authenticate("Yoann", "Coucou"); } catch (final ElementNotFoundException e) { fail(); } } @Test public void testGetFeatures() { final Member yo = MemberManager.getMemberByLogin("Yoann"); assertEquals("Mon titre", yo.getFeatures(false).iterator().next().getDescription().getTranslationOrDefault(Language.EN).getTitle()); AuthToken.authenticate(memberYo); assertEquals("Mon titre", yo.getFeatures(false).iterator().next().getDescription().getTranslationOrDefault(Language.EN).getTitle()); AuthToken.authenticate(memeberFred); assertEquals("Mon titre", yo.getFeatures(false).iterator().next().getDescription().getTranslationOrDefault(Language.EN).getTitle()); } @Test public void testGetKudos() { final Member yo = MemberManager.getMemberByLogin("Yoann"); try { assertEquals(1, yo.getKudos().size()); fail(); } catch (final UnauthorizedPrivateAccessException e) { assertTrue(true); } try { AuthToken.authenticate(memberYo); assertEquals(1, yo.getKudos().size()); } catch (final UnauthorizedPrivateAccessException e) { fail(); } try { AuthToken.authenticate(memeberFred); assertEquals(1, yo.getKudos().size()); fail(); } catch (final UnauthorizedPrivateAccessException e) { assertTrue(true); } } // public void testGetSpecifications() { // fail("Not yet implemented"); // } // // public void testGetContributions() { // fail("Not yet implemented"); // } // // public void testGetComments() { // fail("Not yet implemented"); // } // // public void testGetOffers() { // fail("Not yet implemented"); // } // // public void testGetTranslations() { // fail("Not yet implemented"); // } // // public void testIsInGroup() { // fail("Not yet implemented"); // } // // public void testGetEmail() { // fail("Not yet implemented"); // } // // public void testSetEmail() { // fail("Not yet implemented"); // } // // public void testGetLogin() { // fail("Not yet implemented"); // } // // public void testGetDateCreation() { // fail("Not yet implemented"); // } // // public void testCanGetInternalAccount() { // fail("Not yet implemented"); // } // // public void testGetInternalAccount() { // fail("Not yet implemented"); // } // // public void testGetExternalAccount() { // fail("Not yet implemented"); // } // // public void testSetExternalAccount() { // fail("Not yet implemented"); // } }