diff --git a/hsarback/src/test/java/de/hsadmin/remote/DomainTest.java b/hsarback/src/test/java/de/hsadmin/remote/DomainTest.java index f2f8421..2c7a6e8 100644 --- a/hsarback/src/test/java/de/hsadmin/remote/DomainTest.java +++ b/hsarback/src/test/java/de/hsadmin/remote/DomainTest.java @@ -19,7 +19,7 @@ import org.junit.Test; public class DomainTest { private static final String MODULE = "domain"; - + private XmlRpcClient client; private RemoteCASHelper cas; @@ -40,8 +40,8 @@ public class DomainTest { String user = "aaa00"; String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); - Object[] params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), whereParams }; try { Object execute = client.execute(MODULE + ".search", params); @@ -61,15 +61,15 @@ public class DomainTest { } @Test - public void testUpdate() { + public void testUpdateWithoutPermissionFail() { String user = "aaa00"; String grantingTicketURL = cas.getGrantingTicketURL(user); Map setParams = new HashMap(); Map whereParams = new HashMap(); setParams.put("user", "aaa00"); whereParams.put("name", "example01.org"); - Object[] params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), setParams, whereParams }; try { Object execute = client.execute(MODULE + ".update", params); @@ -87,8 +87,8 @@ public class DomainTest { Map setParams = new HashMap(); setParams.put("name", "f8n.de"); setParams.put("user", "aaa00-admin"); - Object[] params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), setParams }; try { Object execute = client.execute(MODULE + ".add", params); @@ -99,6 +99,100 @@ public class DomainTest { assertEquals(count + 1, getDomsCount()); } + @Test + public void testUpdateDomain() { + String user = "aaa00"; + String grantingTicketURL = cas.getGrantingTicketURL(user); + + // first create the domain + Map setParams = new HashMap(); + setParams.put("name", "exampleupdate.de"); + setParams.put("user", "aaa00-admin"); + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + setParams }; + try { + Object execute = client.execute(MODULE + ".add", params); + assertTrue(execute instanceof Map); + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + + // check initial values + Map whereParams = new HashMap(); + whereParams.put("name", "exampleupdate.de"); + params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + whereParams }; + try { + Object execute = client.execute(MODULE + ".search", params); + if (execute instanceof Object[]) { + Object[] result = (Object[]) execute; + assertTrue("expected 1 result, but got " + result.length, 1 == result.length); + for (Object o : result) { + if (o instanceof Map) { + Map row = (Map) o; + assertTrue("Domain name should be exampleupdate.de but is " + row.get("name"), "exampleupdate.de".equals(row.get("name"))); + assertTrue("ValidSubdomainNames should be * but is " + row.get("validsubdomainnames"), "*".equals(row.get("validsubdomainnames"))); + Object[] domainoptions = (Object[]) row.get("domainoptions"); + String options = ""; + for (Object option: domainoptions) { + options += option + " "; + } + String defaultDomainOptions = "htdocsfallback indexes dkim autoconfig greylisting includes letsencrypt multiviews "; + assertTrue("Domainoptions should be " + defaultDomainOptions + " but are " + options, defaultDomainOptions.equals(options)); + } + else { + fail("Map expected"); + } + } + } + else { + fail("Object[] expected"); + } + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + + // now update the domain + setParams = new HashMap(); + whereParams = new HashMap(); + setParams.put("validsubdomainnames", "www2"); + setParams.put("domainoptions", new String[] {"greylisting", "letsencrypt"}); + whereParams.put("name", "exampleupdate.de"); + params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + setParams, whereParams }; + try { + Object execute = client.execute(MODULE + ".update", params); + if (execute instanceof Object[]) { + Object[] result = (Object[]) execute; + assertTrue("expected 1 result, but got " + result.length, 1 == result.length); + for (Object o : result) { + if (o instanceof Map) { + Map row = (Map) o; + assertTrue("Domain name should be exampleupdate.de but is " + row.get("name"), "exampleupdate.de".equals(row.get("name"))); + assertTrue("ValidSubdomainNames should be www2 but is " + row.get("validsubdomainnames"), "www2".equals(row.get("validsubdomainnames"))); + Object[] domainoptions = (Object[]) row.get("domainoptions"); + String options = ""; + for (Object option: domainoptions) { + options += option + " "; + } + assertTrue("Domainoptions should be greylisting letsencrypt but are " + options, "greylisting letsencrypt ".equals(options)); + } + else { + fail("Map expected"); + } + } + } + else { + fail("Object[] expected"); + } + } catch (XmlRpcException e) { + fail(e.getMessage()); + } + } + @Test public void testCreateForeignSubdomain() throws UnknownHostException, IOException { int count = getDomsCount(); @@ -107,8 +201,8 @@ public class DomainTest { Map setParams = new HashMap(); setParams.put("name", "f6n.de"); setParams.put("user", "aaa00-admin"); - Object[] params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), setParams }; try { Object execute = client.execute(MODULE + ".add", params); @@ -123,8 +217,8 @@ public class DomainTest { setParams = new HashMap(); setParams.put("name", "subdomain.f6n.de"); setParams.put("user", "aaa01"); - params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), setParams }; try { Object execute = client.execute(MODULE + ".add", params); @@ -140,8 +234,8 @@ public class DomainTest { String user = "aaa00"; String grantingTicketURL = cas.getGrantingTicketURL(user); Map whereParams = new HashMap(); - Object[] params = new Object[] { user, - cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), + Object[] params = new Object[] { user, + cas.getServiceTicket(grantingTicketURL, RemoteTestHelper.getBackendURL()), whereParams }; try { Object execute = client.execute(MODULE + ".search", params);