From 6e68a37137bfb773a9eae63fb756e881644fafae Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Mon, 27 Oct 2014 21:27:39 +0100 Subject: [PATCH] ADD: Delete affiliations + testcase --- .../gigi/pages/orga/AffiliationForm.java | 11 +++- .../gigi/pages/orga/AffiliationForm.templ | 5 +- .../gigi/pages/orga/TestOrgaManagement.java | 66 +++++++++++++++++++ .../cacert/gigi/testUtils/ManagedTest.java | 6 +- 4 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 tests/org/cacert/gigi/pages/orga/TestOrgaManagement.java diff --git a/src/org/cacert/gigi/pages/orga/AffiliationForm.java b/src/org/cacert/gigi/pages/orga/AffiliationForm.java index e9ab64b4..b9a42e7a 100644 --- a/src/org/cacert/gigi/pages/orga/AffiliationForm.java +++ b/src/org/cacert/gigi/pages/orga/AffiliationForm.java @@ -30,7 +30,15 @@ public class AffiliationForm extends Form { @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { - o.addAdmin(User.getByEmail(req.getParameter("email")), LoginPage.getUser(req), req.getParameter("master") != null); + User toRemove = User.getByEmail(req.getParameter("del")); + if (toRemove != null) { + o.removeAdmin(toRemove, LoginPage.getUser(req)); + } + + User byEmail = User.getByEmail(req.getParameter("email")); + if (byEmail != null) { + o.addAdmin(byEmail, LoginPage.getUser(req), req.getParameter("master") != null); + } return true; } @@ -48,6 +56,7 @@ public class AffiliationForm extends Form { Affiliation aff = iter.next(); vars.put("name", aff.getTarget().getName()); vars.put("master", aff.isMaster() ? l.getTranslation("master") : ""); + vars.put("e-mail", aff.getTarget().getEmail()); return true; } }); diff --git a/src/org/cacert/gigi/pages/orga/AffiliationForm.templ b/src/org/cacert/gigi/pages/orga/AffiliationForm.templ index e3d2410c..7fbc513c 100644 --- a/src/org/cacert/gigi/pages/orga/AffiliationForm.templ +++ b/src/org/cacert/gigi/pages/orga/AffiliationForm.templ @@ -2,16 +2,19 @@ + + : ? + - + diff --git a/tests/org/cacert/gigi/pages/orga/TestOrgaManagement.java b/tests/org/cacert/gigi/pages/orga/TestOrgaManagement.java new file mode 100644 index 00000000..90355a49 --- /dev/null +++ b/tests/org/cacert/gigi/pages/orga/TestOrgaManagement.java @@ -0,0 +1,66 @@ +package org.cacert.gigi.pages.orga; + +import static org.junit.Assert.*; + +import java.io.IOException; +import java.net.URLEncoder; +import java.util.List; + +import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.dbObjects.Organisation; +import org.cacert.gigi.dbObjects.Organisation.Affiliation; +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.testUtils.ManagedTest; +import org.junit.Test; + +public class TestOrgaManagement extends ManagedTest { + + public User u = User.getById(createVerifiedUser("testuser", "testname", uniq + "@testdom.com", TEST_PASSWORD)); + + public String session; + + public TestOrgaManagement() throws IOException { + u.grantGroup(u, Group.getByString("orgassurer")); + clearCaches(); + session = login(uniq + "@testdom.com", TEST_PASSWORD); + } + + @Test + public void testAdd() throws IOException { + executeBasicWebInteraction(session, CreateOrgPage.DEFAULT_PATH, "O=name&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0); + Organisation[] orgs = Organisation.getOrganisations(0, 30); + assertEquals(1, orgs.length); + assertEquals("name", orgs[0].getName()); + assertEquals("Köln", orgs[0].getCity()); + assertEquals("ÜÖÄß", orgs[0].getProvince()); + + User u2 = User.getById(createVerifiedUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD)); + executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&affiliate=y&master=y", 1); + List allAdmins = orgs[0].getAllAdmins(); + assertEquals(1, allAdmins.size()); + Affiliation affiliation = allAdmins.get(0); + assertSame(u2, affiliation.getTarget()); + assertTrue(affiliation.isMaster()); + + executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "email=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&affiliate=y", 1); + allAdmins = orgs[0].getAllAdmins(); + assertEquals(2, allAdmins.size()); + Affiliation affiliation2 = allAdmins.get(0); + if (affiliation2.getTarget().getId() == u2.getId()) { + affiliation2 = allAdmins.get(1); + } + assertSame(u.getId(), affiliation2.getTarget().getId()); + assertFalse(affiliation2.isMaster()); + + executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u.getEmail(), "UTF-8") + "&email=&affiliate=y", 1); + assertEquals(1, orgs[0].getAllAdmins().size()); + + executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&email=&affiliate=y", 1); + assertEquals(0, orgs[0].getAllAdmins().size()); + + executeBasicWebInteraction(session, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "O=name1&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0); + clearCaches(); + orgs = Organisation.getOrganisations(0, 30); + assertEquals("name1", orgs[0].getName()); + } +} diff --git a/tests/org/cacert/gigi/testUtils/ManagedTest.java b/tests/org/cacert/gigi/testUtils/ManagedTest.java index a65d3f24..2303ef70 100644 --- a/tests/org/cacert/gigi/testUtils/ManagedTest.java +++ b/tests/org/cacert/gigi/testUtils/ManagedTest.java @@ -155,8 +155,12 @@ public class ManagedTest extends ConfiguredTest { e.printStackTrace(); } System.out.println(" in " + (System.currentTimeMillis() - ms) + " ms"); - String type = testProps.getProperty("type"); + clearCaches(); + } + + public static void clearCaches() throws IOException { ObjectCache.clearAllCaches(); + String type = testProps.getProperty("type"); if (type.equals("local")) { URL u = new URL("https://" + getServerName() + "/manage"); u.openConnection().getHeaderField("Location"); -- 2.39.2