import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.dbObjects.CertificateOwner;
import club.wpia.gigi.dbObjects.Domain;
+import club.wpia.gigi.dbObjects.Organisation;
import club.wpia.gigi.localisation.Language;
import club.wpia.gigi.output.template.Form;
import club.wpia.gigi.output.template.IterableDataset;
private boolean foreign;
+ private boolean readOnly;
+
public DomainManagementForm(HttpServletRequest hsr, CertificateOwner target, boolean foreign) {
super(hsr);
this.target = target;
this.foreign = foreign;
+ readOnly = (target instanceof Organisation && !foreign);
}
@Override
int delId = Integer.parseInt(dels);
Domain d = Domain.getById(delId);
if (d != null && d.getOwner() == target) {
+ if (readOnly) {
+ throw new GigiApiException("You are not allowed to delete a domain.");
+ }
d.delete();
} else {
throw new GigiApiException("Domain was not found.");
}
};
vars.put("domains", dts);
+ if (readOnly) {
+ vars.put("buttonvisible", null);
+ } else {
+ vars.put("buttonvisible", "buttonvisible");
+ }
+
t.output(out, l, vars);
}
}
package club.wpia.gigi.pages.orga;
+import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.io.IOException;
+import java.net.URLConnection;
import java.net.URLEncoder;
import org.junit.Test;
import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.dbObjects.Domain;
import club.wpia.gigi.dbObjects.Organisation;
-import club.wpia.gigi.pages.orga.ViewOrgPage;
+import club.wpia.gigi.dbObjects.User;
+import club.wpia.gigi.pages.account.domain.DomainOverview;
+import club.wpia.gigi.testUtils.IOUtils;
import club.wpia.gigi.testUtils.OrgTest;
public class TestOrgDomain extends OrgTest {
assertEquals(0, o1.getDomains().length);
assertEquals(0, u.getDomains().length);
}
+
+ @Test
+ public void testDelAsAdmin() throws IOException, GigiApiException {
+ Organisation o = createUniqueOrg();
+ String dom = createUniqueName() + ".de";
+ Domain d = new Domain(u, o, dom);
+ assertEquals(1, o.getDomains().length);
+ User admin = createOrgAdmin(o);
+ String adminCookie = login(admin.getEmail(), TEST_PASSWORD);
+ assertNull(executeBasicWebInteraction(adminCookie, SwitchOrganisation.PATH, "org:" + o.getId() + "=y", 0));
+
+ // test that delete button is not displayed
+ URLConnection uc = get(adminCookie, DomainOverview.PATH);
+ uc.setDoOutput(true);
+ String res = IOUtils.readURL(uc);
+ assertThat(res, not(containsString("Delete")));
+
+ // test that domain cannot be deleted by organisation administrator
+ assertNull(executeBasicWebInteraction(adminCookie, SwitchOrganisation.PATH, "org:" + o.getId() + "=y", 0));
+ uc = post(adminCookie, DomainOverview.PATH, "delete=" + d.getId(), 0);
+ res = IOUtils.readURL(uc);
+ assertThat(res, containsString("You are not allowed to delete a domain."));
+
+ // verify that domain still belongs to organisation
+ assertEquals(1, o.getDomains().length);
+
+ }
}
import club.wpia.gigi.GigiApiException;
import club.wpia.gigi.dbObjects.Country;
+import club.wpia.gigi.dbObjects.Country.CountryCodeType;
import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.Organisation;
-import club.wpia.gigi.dbObjects.Country.CountryCodeType;
+import club.wpia.gigi.dbObjects.User;
public class OrgTest extends ClientTest {
Organisation o1 = new Organisation(createUniqueName(), Country.getCountryByCode("DE", CountryCodeType.CODE_2_CHARS), "pr", "city", "test@example.com", "", "", u);
return o1;
}
+
+ public User createOrgAdmin(Organisation o) throws GigiApiException {
+ User ua = User.getById(createVerificationUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
+ o.addAdmin(ua, u, true);
+ return ua;
+ }
}