You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by em...@apache.org on 2014/07/04 00:58:03 UTC
svn commit: r1607764 [7/7] - in /james/bond/trunk/src:
main/java/org/apache/james/bond/ main/java/org/apache/james/bond/client/
main/java/org/apache/james/bond/client/configure/
main/java/org/apache/james/bond/client/configure/dns/ main/java/org/apache...
Added: james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringService.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringService.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringService.java (added)
+++ james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringService.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,41 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.monitor;
+
+/**
+ * It connects to the server via JMX and defines the services that the
+ * RequestFactory offers to access monitoring information
+ */
+public class MonitoringService {
+
+ private static JMXBondConnector jmxBondConnector;
+
+ /**
+ * It retrieves all the monitoring information from the server
+ *
+ * @return
+ * @throws Exception
+ */
+ public static Monitoring getMonitoringInformation() throws Exception {
+ if (jmxBondConnector == null) {
+ jmxBondConnector = new JMXBondConnector();
+ }
+ return jmxBondConnector.getMonitoringInformation();
+ }
+}
Added: james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringServiceLocator.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringServiceLocator.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringServiceLocator.java (added)
+++ james/bond/trunk/src/main/java/org/apache/james/bond/server/monitor/MonitoringServiceLocator.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,36 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.monitor;
+
+import com.google.web.bindery.requestfactory.shared.ServiceLocator;
+
+public class MonitoringServiceLocator implements ServiceLocator {
+ private static MonitoringService serviceInstance;
+
+ @Override
+ public Object getInstance(Class<?> clazz) {
+ return MonitoringServiceLocator.getServiceInstance();
+ }
+
+ private static MonitoringService getServiceInstance() {
+ if (serviceInstance == null)
+ serviceInstance = new MonitoringService();
+ return serviceInstance;
+ }
+}
\ No newline at end of file
Added: james/bond/trunk/src/main/java/org/apache/james/bond/server/servlet/JamesBondFilter.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/main/java/org/apache/james/bond/server/servlet/JamesBondFilter.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/main/java/org/apache/james/bond/server/servlet/JamesBondFilter.java (added)
+++ james/bond/trunk/src/main/java/org/apache/james/bond/server/servlet/JamesBondFilter.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,143 @@
+package org.apache.james.bond.server.servlet;
+
+import static org.apache.james.bond.shared.BondConst.*;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.james.bond.server.JamesConnector;
+
+/**
+ * Filter to authorize certain ip addresses requests.
+ *
+ * Configure the filter in the web.xml with the parameter 'ip.range'
+ * or using the System property 'ip.range'
+ */
+public class JamesBondFilter implements Filter {
+
+ private String allowed_ips_regex = "127.0.0.1";
+
+ /**
+ * check if IP address match pattern
+ *
+ * @param pattern *, *.*.*.*, 192.168.1.0-255
+ * @param address n.n.n.n
+ */
+ public boolean checkIPMatching(String pattern, String address) {
+ if (!address.equals("127.0.0.1") && !pattern.equals("*.*.*.*") && !pattern.equals("*")) {
+ String[] mask = pattern.split("\\.");
+ String[] ip_address = address.split("\\.");
+ for (int i = 0; i < mask.length; i++) {
+ if (mask[i].equals("*") || mask[i].equals(ip_address[i])) {
+ continue;
+ } else if (mask[i].contains("-")) {
+ byte min = Byte.parseByte(mask[i].split("-")[0]);
+ byte max = Byte.parseByte(mask[i].split("-")[1]);
+ byte ip = Byte.parseByte(ip_address[i]);
+ if (ip < min || ip > max) {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ public boolean checkJamesJMXConnection() {
+ try {
+ return JamesConnector.getServerProbe() != null;
+ } catch (Exception e) {
+ }
+ return false;
+ }
+
+ public boolean checkJamesConfFolder() {
+ File conf = new File(JAMES_CONF);
+ return conf.isDirectory() && conf.canWrite();
+ }
+
+ public void doFilter(ServletRequest servletRequest,
+ ServletResponse servletResponse, FilterChain filterChain)
+ throws IOException, ServletException {
+
+ HttpServletResponse resp = (HttpServletResponse) servletResponse;
+ HttpServletRequest req = (HttpServletRequest) servletRequest;
+ String address = req.getRemoteAddr();
+
+ if (!checkIPMatching(allowed_ips_regex, address)) {
+ resp.sendError(HttpServletResponse.SC_UNAUTHORIZED,
+ BOND + "\n\nYour Ip Address (" + address + ") does not match the range of authorized ip addresses." +
+ getConfigurationHint(SYSPROP_AUTHORIZED_IPS, allowed_ips_regex));
+ } else if (!checkJamesConfFolder()) {
+ resp.sendError(HttpServletResponse.SC_EXPECTATION_FAILED,
+ BOND + "\n\nFolder with James configuration files (" + JAMES_CONF + ") is not writable." +
+ getConfigurationHint(SYSPROP_JAMES_CONF, JAMES_CONF));
+ } else if (!checkJamesJMXConnection()) {
+ resp.sendError(HttpServletResponse.SC_EXPECTATION_FAILED,
+ BOND + "\n\nUnable to connect with the JMX service (" + JAMES_ADDRESS + ":" + JAMES_PORT + ")." +
+ "\n\n-- make sure James is running." +
+ getConfigurationHint(SYSPROP_JAMES_JMX, JAMES_ADDRESS + ":" + JAMES_PORT));
+ } else if (filterChain != null) {
+ filterChain.doFilter(req, resp);
+ }
+ }
+
+
+ @Override
+ public void destroy() {
+ }
+
+ private String getConfigurationHint(String prop, String value) {
+ return "\n\n-- run Bond with the parameter:\n -D" + prop + "=" + value +
+ "\n\n-- or configure your web.xml file appropriately:" +
+ "\n <env-entry>" +
+ "\n <env-entry-name>" + prop + "</env-entry-name>" +
+ "\n <env-entry-value>" + value + "</env-entry-value>" +
+ "\n <env-entry-type>java.lang.String</env-entry-type>" +
+ "\n </evn-entry>";
+ }
+
+ @Override
+ public void init(FilterConfig config) throws ServletException {
+ String value = getProperty(config, SYSPROP_AUTHORIZED_IPS);
+ if (!value.isEmpty()) {
+ allowed_ips_regex = value;
+ }
+
+ value = getProperty(config, SYSPROP_JAMES_JMX);
+ if (!value.isEmpty()) {
+ String arr[] = value.split(":");
+ JAMES_ADDRESS = arr[0];
+ if (arr.length > 1) {
+ JAMES_PORT = Integer.parseInt(arr[1]);
+ }
+ }
+
+ value = getProperty(config, SYSPROP_JAMES_CONF);
+ if (!value.isEmpty()) {
+ JAMES_CONF = value;
+ }
+ }
+
+ private String getProperty(FilterConfig config, String name) {
+ String value = System.getProperty(name);
+ if (value == null || value.isEmpty()) {
+ value = config.getServletContext().getInitParameter(name);
+ }
+ if (value == null || value.isEmpty()) {
+ value = config.getInitParameter(name);
+ }
+ return value == null ? "" : value;
+ }
+}
\ No newline at end of file
Added: james/bond/trunk/src/main/java/org/apache/james/bond/shared/BondConst.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/main/java/org/apache/james/bond/shared/BondConst.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/main/java/org/apache/james/bond/shared/BondConst.java (added)
+++ james/bond/trunk/src/main/java/org/apache/james/bond/shared/BondConst.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,42 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ */
+package org.apache.james.bond.shared;
+
+
+/**
+ * abstract class to define static stuff used anywhere in the app
+ */
+public abstract class BondConst {
+
+ public static final String BOND = "Apache James Bond";
+
+ public static String JAMES_CONF = "/opt/apache-james-3.0-beta4/conf";
+ public static String JAMES_ADDRESS = "127.0.0.1";
+ public static int JAMES_PORT = 9999;
+
+ public static final String SYSPROP_JAMES_CONF = "james.conf";
+ public static final String SYSPROP_JAMES_JMX = "james.jmx";
+ public static final String SYSPROP_AUTHORIZED_IPS = "ip.range";
+
+ public static final String NAME_TEMPL_DNS = "dnsservice";
+ public static final String NAME_TEMPL_POP3 = "pop3server";
+ public static final String NAME_TEMPL_SMTP = "smtpserver";
+ public static final String NAME_TEMPL_LMTP = "lmtpserver";
+ public static final String NAME_TEMPL_IMAP = "imapserver";
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/TestConst.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/TestConst.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/TestConst.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/TestConst.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,26 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ */
+package org.apache.james.bond;
+
+/**
+ * abstract class to define static stuff used in tests
+ */
+public abstract class TestConst {
+ public static final String TEST_CONF_FOLDER = "target/test.conf";
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/client/UtilTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/client/UtilTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/client/UtilTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/client/UtilTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,31 @@
+package org.apache.james.bond.client;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class UtilTest {
+
+ @Test
+ public void convertStringToInt() {
+ assertEquals(0, Util.convertStringToInt("asdf"));
+ assertEquals(5, Util.convertStringToInt("5"));
+ assertEquals(5, Util.convertStringToInt("dfadf", 5));
+ }
+
+ @Test
+ public void isIPAddress() {
+ assertTrue(Util.isIPAddress("0.0.0.0"));
+ assertTrue(Util.isIPAddress("10.0.0.0"));
+ assertTrue(Util.isIPAddress("123.21.12.32"));
+ assertTrue(Util.isIPAddress("255.255.255.255"));
+
+ assertFalse(Util.isIPAddress("255.255.255.255 "));
+ assertFalse(Util.isIPAddress("256.255.255.255"));
+ assertFalse(Util.isIPAddress("0000.0.0.0"));
+ assertFalse(Util.isIPAddress("0.0.0"));
+ assertFalse(Util.isIPAddress("dssgd"));
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/client/ioc/ClientFactoryTestImpl.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/client/ioc/ClientFactoryTestImpl.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/client/ioc/ClientFactoryTestImpl.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/client/ioc/ClientFactoryTestImpl.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,187 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.client.ioc;
+
+import org.apache.james.bond.client.configure.ConfigureView;
+import org.apache.james.bond.client.configure.ConfigureViewImpl;
+import org.apache.james.bond.client.configure.dns.ConfigureDNSView;
+import org.apache.james.bond.client.configure.dns.ConfigureDNSViewImpl;
+import org.apache.james.bond.client.configure.imap.ConfigureImapView;
+import org.apache.james.bond.client.configure.lmtp.ConfigureLmtpView;
+import org.apache.james.bond.client.configure.pop3.ConfigurePop3View;
+import org.apache.james.bond.client.configure.pop3.ConfigurePop3ViewImpl;
+import org.apache.james.bond.client.configure.smtp.ConfigureSmtpView;
+import org.apache.james.bond.client.configure.smtp.ConfigureSmtpViewImpl;
+import org.apache.james.bond.client.manage.ManageView;
+import org.apache.james.bond.client.manage.ManageViewImpl;
+import org.apache.james.bond.client.manage.domain.DomainsAsyncDataProvider;
+import org.apache.james.bond.client.manage.domain.ManageDomainsTabView;
+import org.apache.james.bond.client.manage.domain.ManageDomainsTabViewImpl;
+import org.apache.james.bond.client.manage.mappings.ManageMappingsView;
+import org.apache.james.bond.client.manage.user.ManageUsersTabView;
+import org.apache.james.bond.client.manage.user.ManageUsersTabViewImpl;
+import org.apache.james.bond.client.manage.user.UsersAsyncDataProvider;
+import org.apache.james.bond.client.monitor.MonitorSummaryView;
+import org.apache.james.bond.client.monitor.MonitorView;
+import org.apache.james.bond.client.serverconnection.AppRequestFactory;
+
+import com.google.gwt.place.shared.PlaceController;
+import com.google.web.bindery.event.shared.EventBus;
+import com.google.web.bindery.event.shared.SimpleEventBus;
+import com.google.web.bindery.requestfactory.server.ExceptionHandler;
+import com.google.web.bindery.requestfactory.server.ServiceLayer;
+import com.google.web.bindery.requestfactory.server.SimpleRequestProcessor;
+import com.google.web.bindery.requestfactory.server.testing.InProcessRequestTransport;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
+import com.google.web.bindery.requestfactory.vm.RequestFactorySource;
+
+/**
+ * Test implementation of ClientFactory.
+ *
+ * @author manolo
+ *
+ */
+public class ClientFactoryTestImpl implements ClientFactory {
+
+ private static final EventBus eventBus = new SimpleEventBus();
+
+ private final AppRequestFactory requestFactory;
+ private static PlaceController placeController;
+ private static ManageUsersTabView manageUsersTabView;
+ private static ManageDomainsTabView manageDomainsTabView;
+ private static ManageView manageView;
+ private static ConfigureView configureView;
+ private static ConfigureDNSView configureDNSView;
+ private static ConfigurePop3View configurePop3View;
+ private static ConfigureSmtpView configureSmtpView;
+
+ public ClientFactoryTestImpl() {
+ // Create a requstFactory which works in JVM
+ requestFactory = RequestFactorySource.create(AppRequestFactory.class);
+ SimpleRequestProcessor processor = new SimpleRequestProcessor(
+ ServiceLayer.create());
+
+ processor.setExceptionHandler(new ExceptionHandler() {
+ public ServerFailure createServerFailure(Throwable e) {
+ e.printStackTrace();
+ return new ServerFailure(e.getMessage());
+ }
+ });
+ requestFactory.initialize(new SimpleEventBus(),
+ new InProcessRequestTransport(processor));
+ }
+
+ @Override
+ public AppRequestFactory getRequestFactory() {
+ return requestFactory;
+ }
+
+ @Override
+ public EventBus getEventBus() {
+ return eventBus;
+ }
+
+ @Override
+ public PlaceController getPlaceController() {
+ if (placeController == null)
+ placeController = new PlaceController(getEventBus());
+ return placeController;
+ }
+
+ @Override
+ public ManageView getManageView(String place) {
+ if (manageView == null)
+ manageView = new ManageViewImpl(place);
+ return manageView;
+ }
+
+ @Override
+ public ConfigureView getConfigureView(String place) {
+ if (configureView == null)
+ configureView = new ConfigureViewImpl(place);
+ return configureView;
+ }
+
+ @Override
+ public ManageUsersTabView getManageUsersTabView() {
+ if (manageUsersTabView == null)
+ manageUsersTabView = new ManageUsersTabViewImpl(
+ new UsersAsyncDataProvider(getRequestFactory()));
+ return manageUsersTabView;
+ }
+
+ @Override
+ public ManageDomainsTabView getManageDomainsTabView() {
+ if (manageDomainsTabView == null)
+ manageDomainsTabView = new ManageDomainsTabViewImpl(
+ new DomainsAsyncDataProvider(getRequestFactory()));
+ return manageDomainsTabView;
+ }
+
+ @Override
+ public ConfigureDNSView getConfigureDNSView() {
+ if (configureDNSView == null)
+ configureDNSView = new ConfigureDNSViewImpl();
+ return configureDNSView;
+ }
+
+ @Override
+ public ConfigurePop3View getConfigurePop3View() {
+ if (configurePop3View == null)
+ configurePop3View = new ConfigurePop3ViewImpl();
+ return configurePop3View;
+ }
+
+ @Override
+ public ConfigureSmtpView getConfigureSmtpView() {
+ if (configureSmtpView == null)
+ configureSmtpView = new ConfigureSmtpViewImpl();
+ return configureSmtpView;
+ }
+
+ @Override
+ public ConfigureLmtpView getConfigureLmtpView() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ConfigureImapView getConfigureImapView() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public MonitorView getMonitorView(String place) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public MonitorSummaryView getMonitorSummaryView() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ManageMappingsView getManageMappingsView() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/client/manage/ManageActivityTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/client/manage/ManageActivityTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/client/manage/ManageActivityTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/client/manage/ManageActivityTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,158 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.client.manage;
+
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.james.bond.client.ioc.ClientFactory;
+import org.apache.james.bond.client.ioc.ClientFactoryTestImpl;
+import org.apache.james.bond.client.manage.domain.ManageDomainsTabView;
+import org.apache.james.bond.client.manage.mappings.ManageMappingsView;
+import org.apache.james.bond.client.manage.user.ManageUsersTabView;
+import org.apache.james.bond.client.mvp.AppActivityMapper;
+import org.apache.james.bond.client.serverconnection.UserProxy;
+import org.junit.Test;
+
+import com.google.gwt.event.logical.shared.SelectionEvent;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.web.bindery.requestfactory.shared.Receiver;
+
+/**
+ * Just an example of how to test activities in JVM
+ *
+ * @author manolo
+ */
+public class ManageActivityTest {
+
+ boolean userRfSucceed = false;
+
+ @Test
+ public void testRequestFactory() throws Exception {
+ try {
+ ClientFactory clientFactory = new ClientFactoryTestImpl();
+ clientFactory.getRequestFactory().createUserRequest().listUsers()
+ .fire(new Receiver<List<UserProxy>>() {
+ @Override
+ public void onSuccess(List<UserProxy> response) {
+ userRfSucceed = true;
+ }
+ });
+
+ Assert.assertTrue(userRfSucceed);
+ } catch (Exception e) {
+ System.err.println("James not reachable");
+ }
+ }
+
+ int selectedTab = -1;
+
+ @Test
+ public void testManageActivity() throws Exception {
+ try {
+ // We create our test version of clientFactory
+ ClientFactory clientFactory = new ClientFactoryTestImpl() {
+
+ // For this test we only need an implementation of ManageView
+ @Override
+ public ManageView getManageView(String place) {
+ return new ManageView() {
+ @Override
+ public Widget asWidget() {
+ return null;
+ }
+
+ @Override
+ public void selectTab(int index) {
+ selectedTab = index;
+ }
+
+ @Override
+ public void setPlaceString(String place) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String getPlaceString() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void addTab(IsWidget widget, String text) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getTabsCount() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void onSelection(SelectionEvent<Integer> event) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setUsersView(ManageUsersTabView manageUsersTabView) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setDomainsView(ManageDomainsTabView manageDomainsTabView) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void addTab(IsWidget widget, String text, String title) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setMappingsView(ManageMappingsView manageMappingsView) {
+ // TODO Auto-generated method stub
+
+ }
+ };
+ }
+ };
+
+ // We use the mapper to get the activity
+ AppActivityMapper mapper = new AppActivityMapper(clientFactory);
+ //
+ // // when the activity is created it selects the appropriate tab
+ // // and does a RF call to the server
+ // ManageActivity manageActivity = (ManageActivity) mapper
+ // .getActivity(new ManagePlace(""));
+ //
+ // Assert.assertEquals(1, selectedTab);
+ } catch (Exception e) {
+ System.err.println("James not reachable");
+ }
+ }
+}
\ No newline at end of file
Added: james/bond/trunk/src/test/java/org/apache/james/bond/client/serverconnection/AppRequestFactoryTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/client/serverconnection/AppRequestFactoryTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/client/serverconnection/AppRequestFactoryTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/client/serverconnection/AppRequestFactoryTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,273 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.client.serverconnection;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.client.ioc.ClientFactory;
+import org.apache.james.bond.client.ioc.ClientFactoryTestImpl;
+import org.apache.james.bond.client.serverconnection.AppRequestFactory.DnsRequest;
+import org.apache.james.bond.client.serverconnection.AppRequestFactory.Pop3Request;
+import org.apache.james.bond.client.serverconnection.AppRequestFactory.SmtpRequest;
+import org.apache.james.bond.client.serverconnection.AppRequestFactory.UserRequest;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.web.bindery.requestfactory.shared.Receiver;
+import com.google.web.bindery.requestfactory.shared.ServerFailure;
+
+public class AppRequestFactoryTest {
+ ClientFactory clientFactory = new ClientFactoryTestImpl();
+ AppRequestFactory requestFactory = clientFactory.getRequestFactory();
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ }
+
+ @Test
+ public void userFunctionalityTest() {
+ clearUser();
+ addUser();
+ removeUser();
+ }
+
+ private void clearUser() {
+ Receiver<List<UserProxy>> rec = new Receiver<List<UserProxy>>() {
+ public void onSuccess(List<UserProxy> users) {
+ UserRequest context = requestFactory.createUserRequest();
+ UserProxy user1234 = context.create(UserProxy.class);
+ String username = "user1234@yo.es";
+ user1234.setUsername(username);
+ user1234.setPassword("1234");
+
+ boolean contains = false;
+
+ for (UserProxy user : users) {
+ if (user.getId().equals(username)) {
+ contains = true;
+ }
+ }
+
+ if (contains) {
+ context.remove(user1234).fire();
+ }
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ System.err.println(msg);
+ }
+ };
+ requestFactory.createUserRequest().listUsers().fire(rec);
+ }
+
+ private void addUser() {
+ Receiver<List<UserProxy>> rec = new Receiver<List<UserProxy>>() {
+ public void onSuccess(List<UserProxy> users) {
+ UserRequest context = requestFactory.createUserRequest();
+ UserProxy user1234 = context.create(UserProxy.class);
+ String username = "user1234@yo.es";
+ user1234.setUsername(username);
+ user1234.setPassword("1234");
+
+ boolean contains = false;
+
+ for (UserProxy user : users) {
+
+ if (user.getId().equals(username)) {
+ contains = true;
+ }
+ }
+ assertFalse(contains);
+
+ context.persist(user1234).fire();
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ System.err.println(msg);
+ }
+ };
+ requestFactory.createUserRequest().listUsers().fire(rec);
+ }
+
+ private void removeUser() {
+ Receiver<List<UserProxy>> rec = new Receiver<List<UserProxy>>() {
+ public void onSuccess(List<UserProxy> users) {
+ UserRequest context = requestFactory.createUserRequest();
+ UserProxy user1234 = context.create(UserProxy.class);
+ String username = "user1234@yo.es";
+ user1234.setUsername(username);
+ user1234.setPassword("1234");
+
+ boolean contains = false;
+
+ for (UserProxy user : users) {
+
+ if (user.getId().equals(username)) {
+ contains = true;
+ }
+ }
+ assertFalse(!contains);
+
+ context.remove(user1234).fire();
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ System.err.println(msg);
+ }
+ };
+ requestFactory.createUserRequest().listUsers().fire(rec);
+ }
+
+ DnsRequest editableDnsRequest;
+ DNSProxy editableDnsProxy;
+
+ @Test
+ public void readDnsTest() {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_DNS + ".conf");
+ conf.delete();
+
+ Receiver<DNSProxy> rec = new Receiver<DNSProxy>() {
+ public void onSuccess(DNSProxy dns) {
+ editableDnsRequest = requestFactory.createDnsRequest();
+ editableDnsProxy = editableDnsRequest.edit(dns);
+
+ List<String> dnsServerList = dns.getServersIp();
+ for (String server : dnsServerList) {
+ System.err.println(server);
+ }
+ assertTrue(dnsServerList.isEmpty());
+
+ assertTrue(dns.isAutodiscover());
+ assertFalse(dns.isAuthoritative());
+ assertFalse(dns.isSingleIPperMX());
+ assertEquals("50000", dns.getMaxCacheSize());
+ assertEquals(0, dns.getServersIp().size());
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ fail(msg);
+ }
+ };
+
+ this.requestFactory.createDnsRequest().getAllDNSData().fire(rec);
+ }
+
+ Pop3Request editablePop3Request;
+ Pop3Proxy editablePop3Proxy;
+
+ @Test
+ public void readPop3Test() {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_POP3 + ".conf");
+ conf.delete();
+
+ Receiver<Pop3Proxy> rec = new Receiver<Pop3Proxy>() {
+ public void onSuccess(Pop3Proxy pop3) {
+ editablePop3Request = requestFactory.createPop3Request();
+ editablePop3Proxy = editablePop3Request.edit(pop3);
+
+ assertTrue(pop3.isEnabled());
+ assertEquals("0.0.0.0:110", pop3.getBind());
+ assertEquals("200", pop3.getConnectionBacklog());
+ assertEquals("1200", pop3.getConnectionTimeout());
+ assertEquals("0", pop3.getConnectionLimit());
+ assertEquals("0", pop3.getConnectionLimitPerIp());
+ assertTrue(pop3.isHelloNameAutodetect());
+ assertNull(pop3.getHelloNameValue());
+ assertFalse(pop3.isTlsSocket());
+ assertFalse(pop3.isTlsStart());
+ assertEquals("file://conf/keystore", pop3.getTlsKeystore());
+ assertEquals("yoursecret", pop3.getTlsSecret());
+ assertEquals("org.bouncycastle.jce.provider.BouncyCastleProvider",
+ pop3.getTlsProvider());
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ fail(msg);
+ }
+ };
+
+ this.requestFactory.createPop3Request().getAllPop3Data().fire(rec);
+ }
+
+ SmtpRequest editableSmtpRequest;
+ SmtpProxy editableSmtpProxy;
+
+ @Test
+ public void readSmtpTest() {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_SMTP + ".conf");
+ conf.delete();
+
+ Receiver<SmtpProxy> rec = new Receiver<SmtpProxy>() {
+ public void onSuccess(SmtpProxy smtp) {
+ editableSmtpRequest = requestFactory.createSmtpRequest();
+ editableSmtpProxy = editableSmtpRequest.edit(smtp);
+
+ assertTrue(smtp.isEnabled());
+ assertEquals("0.0.0.0:25", smtp.getBind());
+ assertEquals("200", smtp.getConnectionBacklog());
+ assertEquals("360", smtp.getConnectionTimeout());
+ assertEquals("0", smtp.getConnectionLimit());
+ assertEquals("0", smtp.getConnectionLimitPerIp());
+ assertTrue(smtp.isHelloNameAutodetect());
+ assertNull(smtp.getHelloNameValue());
+ assertFalse(smtp.isTlsSocket());
+ assertFalse(smtp.isTlsStart());
+ assertEquals("file://conf/keystore", smtp.getTlsKeystore());
+ assertEquals("yoursecret", smtp.getTlsSecret());
+ assertEquals("org.bouncycastle.jce.provider.BouncyCastleProvider",
+ smtp.getTlsProvider());
+ assertEquals("SunX509", smtp.getTlsAlgorithm());
+
+ assertEquals("false", smtp.getAuthRequired());
+ assertTrue(smtp.isVerifyIdentity());
+ assertEquals("0", smtp.getMaximumMessageSize());
+ assertTrue(smtp.isHeloEhloEnforcement());
+ assertTrue(smtp.isAddrBracketsEnforcement());
+ assertNull(smtp.getGreeting());
+ assertEquals("127.0.0.0/8", smtp.getAuthorizedAddresses());
+ }
+
+ public void onFailure(ServerFailure error) {
+ String msg = "Server error: " + error.getMessage();
+ fail(msg);
+ }
+ };
+
+ this.requestFactory.createSmtpRequest().getAllSmtpData().fire(rec);
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/JamesConnectorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/JamesConnectorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/JamesConnectorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/JamesConnectorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,73 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.apache.james.bond.server.manage.domain.Domain;
+import org.apache.james.bond.server.manage.user.User;
+import org.junit.Test;
+
+public class JamesConnectorTest {
+
+ @Test
+ public void testAddDeleteUser() {
+ try {
+ List<User> users = JamesConnector.listUsers();
+ User user1234 = new User("user1234@yo.es", "1234");
+
+ if (users.contains(user1234))
+ JamesConnector.removeUser(user1234);
+
+ JamesConnector.addUser(user1234);
+ users = JamesConnector.listUsers();
+ assertTrue(users.contains(user1234));
+
+ JamesConnector.removeUser(user1234);
+ users = JamesConnector.listUsers();
+ assertFalse(users.contains(user1234));
+ } catch (Exception e) {
+ System.err.println("James server not reachable");
+ }
+ }
+
+ @Test
+ public void testAddDeleteDomain() {
+ try {
+ List<Domain> domains = JamesConnector.listDomains();
+ Domain domain = new Domain("domain.es");
+
+ if (domains.contains(domain))
+ JamesConnector.removeDomain(domain);
+
+ JamesConnector.addDomain(domain);
+ domains = JamesConnector.listDomains();
+ assertTrue(domains.contains(domain));
+
+ JamesConnector.removeDomain(domain);
+ domains = JamesConnector.listDomains();
+ assertFalse(domains.contains(domain));
+ } catch (Exception e) {
+ System.err.println("James server not reachable");
+ }
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/dns/DNSEditorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/dns/DNSEditorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/dns/DNSEditorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/dns/DNSEditorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,96 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.configure.dns;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.server.configure.dns.DNS;
+import org.apache.james.bond.server.configure.dns.DNSEditor;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DNSEditorTest {
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ }
+
+ @Test
+ public void testReadXml() throws Exception {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_DNS + ".conf");
+ conf.delete();
+
+ DNS dns = DNSEditor.readProtocol();
+
+ assertTrue(conf.exists());
+
+ List<String> dnsServerList = dns.getServersIp();
+ assertTrue(dnsServerList.isEmpty());
+
+ assertTrue(dns.isAutodiscover());
+ assertFalse(dns.isAuthoritative());
+ assertFalse(dns.isSingleIPperMX());
+ assertEquals("50000", dns.getMaxCacheSize());
+ assertEquals(0, dns.getServersIp().size());
+
+ dns.setAutodiscover(false);
+ dns.setAuthoritative(true);
+ dns.setSingleIPperMX(true);
+ dns.setMaxCacheSize("10000");
+ dns.setServersIp(Arrays.asList("127.0.0.1", "192.168.1.1"));
+
+ DNSEditor.writeProtocol(dns);
+
+ dns = DNSEditor.readProtocol();
+ assertFalse(dns.isAutodiscover());
+ assertTrue(dns.isAuthoritative());
+ assertTrue(dns.isSingleIPperMX());
+ assertEquals("10000", dns.getMaxCacheSize());
+ assertEquals(2, dns.getServersIp().size());
+ assertTrue(dns.getServersIp().contains("127.0.0.1"));
+ assertTrue(dns.getServersIp().contains("192.168.1.1"));
+
+ dns.setServersIp(Arrays.asList("127.0.0.1", "192.168.1.1", "10.0.0.1"));
+ assertEquals(3, dns.getServersIp().size());
+ assertTrue(dns.getServersIp().contains("127.0.0.1"));
+ assertTrue(dns.getServersIp().contains("192.168.1.1"));
+ assertTrue(dns.getServersIp().contains("10.0.0.1"));
+
+ DNSEditor.writeProtocol(dns);
+ dns = DNSEditor.readProtocol();
+ assertFalse(dns.isAutodiscover());
+ assertTrue(dns.isAuthoritative());
+ assertTrue(dns.isSingleIPperMX());
+ assertEquals("10000", dns.getMaxCacheSize());
+ assertEquals(3, dns.getServersIp().size());
+
+ conf.delete();
+ }
+}
\ No newline at end of file
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/imap/ImapEditorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/imap/ImapEditorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/imap/ImapEditorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/imap/ImapEditorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,83 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.configure.imap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ImapEditorTest {
+ private ImapEditor imapEditor;
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ imapEditor = new ImapEditor();
+ }
+
+ @Test
+ public void testReadXml() throws Exception {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_IMAP + ".conf");
+ conf.delete();
+
+ Imap imap;
+ imap = imapEditor.readProtocol();
+
+ assertTrue(conf.exists());
+
+ assertTrue(imap.isEnabled());
+ assertEquals("0.0.0.0:143", imap.getBind());
+ assertEquals("200", imap.getConnectionBacklog());
+ assertEquals("1800", imap.getConnectionTimeout());
+ assertEquals("0", imap.getConnectionLimit());
+ assertEquals("0", imap.getConnectionLimitPerIp());
+ assertTrue(imap.isHelloNameAutodetect());
+ assertNull(imap.getHelloNameValue());
+ assertFalse(imap.isTlsSocket());
+ assertFalse(imap.isTlsStart());
+ assertEquals("file://conf/keystore", imap.getTlsKeystore());
+ assertEquals("yoursecret", imap.getTlsSecret());
+ assertEquals("org.bouncycastle.jce.provider.BouncyCastleProvider",
+ imap.getTlsProvider());
+
+ // imap.setConnectionBacklog(300);
+ // imap.setConnectionTimeout(1400);
+ // imap.setHelloNameAutodetect(false);
+ // imap.setHelloNameValue("Hello");
+ //
+ // imapEditor.writeProtocol(imap);
+ //
+ // imap = imapEditor.readProtocol();
+ //
+ // assertEquals(300, imap.getConnectionBacklog());
+ // assertEquals(1400, imap.getConnectionTimeout());
+ // assertFalse(imap.isHelloNameAutodetect());
+ // assertEquals("Hello", imap.getHelloNameValue());
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/lmtp/LmtpEditorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/lmtp/LmtpEditorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/lmtp/LmtpEditorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/lmtp/LmtpEditorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,91 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.configure.lmtp;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+public class LmtpEditorTest {
+ private LmtpEditor lmtpEditor;
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ lmtpEditor = new LmtpEditor();
+ }
+
+ @Test
+ public void testReadXml() throws Exception {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_LMTP + ".conf");
+ conf.delete();
+
+ Lmtp lmtp;
+ lmtp = lmtpEditor.readProtocol();
+
+ assertTrue(conf.exists());
+
+ assertFalse(lmtp.isEnabled());
+ assertEquals("127.0.0.1:24", lmtp.getBind());
+ assertEquals("200", lmtp.getConnectionBacklog());
+ assertEquals("1200", lmtp.getConnectionTimeout());
+ assertEquals("0", lmtp.getConnectionLimit());
+ assertEquals("0", lmtp.getConnectionLimitPerIp());
+ assertTrue(lmtp.isHelloNameAutodetect());
+ assertNull(lmtp.getHelloNameValue());
+ assertFalse(lmtp.isTlsSocket());
+ assertFalse(lmtp.isTlsStart());
+ assertNull(lmtp.getTlsKeystore());
+ assertNull(lmtp.getTlsSecret());
+ assertNull(lmtp.getTlsProvider());
+
+ assertEquals("0", lmtp.getMaximumMessageSize());
+ assertNull(lmtp.getGreeting());
+
+ lmtp.setConnectionBacklog("300");
+ lmtp.setConnectionTimeout("1400");
+ lmtp.setHelloNameAutodetect(false);
+ lmtp.setHelloNameValue("Hello");
+
+ lmtp.setMaximumMessageSize("30");
+ lmtp.setGreeting("James Lmtp Hello");
+
+ lmtpEditor.writeProtocol(lmtp);
+
+ lmtp = lmtpEditor.readProtocol();
+
+ assertEquals("300", lmtp.getConnectionBacklog());
+ assertEquals("1400", lmtp.getConnectionTimeout());
+ assertFalse(lmtp.isHelloNameAutodetect());
+ assertEquals("Hello", lmtp.getHelloNameValue());
+
+ assertEquals("30", lmtp.getMaximumMessageSize());
+ assertEquals("James Lmtp Hello", lmtp.getGreeting());
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/pop3/Pop3EditorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/pop3/Pop3EditorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/pop3/Pop3EditorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/pop3/Pop3EditorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,85 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.configure.pop3;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+public class Pop3EditorTest {
+ private Pop3Editor pop3Editor;
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ pop3Editor = new Pop3Editor();
+ }
+
+ @Test
+ public void testReadXml() throws Exception {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_POP3 + ".conf");
+ conf.delete();
+
+ Pop3 pop3;
+ pop3 = pop3Editor.readProtocol();
+
+ assertTrue(conf.exists());
+
+ assertTrue(pop3.isEnabled());
+ assertEquals("0.0.0.0:110", pop3.getBind());
+ assertEquals("200", pop3.getConnectionBacklog());
+ assertEquals("1200", pop3.getConnectionTimeout());
+ assertEquals("0", pop3.getConnectionLimit());
+ assertEquals("0", pop3.getConnectionLimitPerIp());
+ assertTrue(pop3.isHelloNameAutodetect());
+ assertNull(pop3.getHelloNameValue());
+ assertFalse(pop3.isTlsSocket());
+ assertFalse(pop3.isTlsStart());
+ assertEquals("file://conf/keystore", pop3.getTlsKeystore());
+ assertEquals("yoursecret", pop3.getTlsSecret());
+ assertEquals("org.bouncycastle.jce.provider.BouncyCastleProvider",
+ pop3.getTlsProvider());
+
+ // pop3.setEnabled(false);
+ pop3.setConnectionBacklog("300");
+ pop3.setConnectionTimeout("1400");
+ pop3.setHelloNameAutodetect(false);
+ pop3.setHelloNameValue("Hello");
+
+ pop3Editor.writeProtocol(pop3);
+
+ pop3 = pop3Editor.readProtocol();
+
+ // assertFalse(pop3.isEnabled());
+ assertEquals("300", pop3.getConnectionBacklog());
+ assertEquals("1400", pop3.getConnectionTimeout());
+ assertFalse(pop3.isHelloNameAutodetect());
+ assertEquals("Hello", pop3.getHelloNameValue());
+ }
+}
\ No newline at end of file
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/smtp/SmtpEditorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/smtp/SmtpEditorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/smtp/SmtpEditorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/configure/smtp/SmtpEditorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,108 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.configure.smtp;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.james.bond.TestConst;
+import org.apache.james.bond.shared.BondConst;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SmtpEditorTest {
+ private SmtpEditor smtpEditor;
+
+ @Before
+ public void setup() {
+ new File(TestConst.TEST_CONF_FOLDER).mkdirs();
+ BondConst.JAMES_CONF = TestConst.TEST_CONF_FOLDER;
+ smtpEditor = new SmtpEditor();
+ }
+
+ @Test
+ public void testReadXml() throws Exception {
+ File conf = new File(TestConst.TEST_CONF_FOLDER + "/"
+ + BondConst.NAME_TEMPL_SMTP + ".conf");
+ conf.delete();
+
+ Smtp smtp;
+ smtp = smtpEditor.readProtocol();
+
+ assertTrue(conf.exists());
+
+ assertTrue(smtp.isEnabled());
+ assertEquals("0.0.0.0:25", smtp.getBind());
+ assertEquals("200", smtp.getConnectionBacklog());
+ assertEquals("360", smtp.getConnectionTimeout());
+ assertEquals("0", smtp.getConnectionLimit());
+ assertEquals("0", smtp.getConnectionLimitPerIp());
+ assertTrue(smtp.isHelloNameAutodetect());
+ assertNull(smtp.getHelloNameValue());
+ assertFalse(smtp.isTlsSocket());
+ assertFalse(smtp.isTlsStart());
+ assertEquals("file://conf/keystore", smtp.getTlsKeystore());
+ assertEquals("yoursecret", smtp.getTlsSecret());
+ assertEquals("org.bouncycastle.jce.provider.BouncyCastleProvider",
+ smtp.getTlsProvider());
+ assertEquals("SunX509", smtp.getTlsAlgorithm());
+
+ assertEquals("false", smtp.getAuthRequired());
+ assertTrue(smtp.isVerifyIdentity());
+ assertEquals("0", smtp.getMaximumMessageSize());
+ assertTrue(smtp.isHeloEhloEnforcement());
+ assertTrue(smtp.isAddrBracketsEnforcement());
+ assertNull(smtp.getGreeting());
+ assertEquals("127.0.0.0/8", smtp.getAuthorizedAddresses());
+
+ smtp.setConnectionBacklog("300");
+ smtp.setConnectionTimeout("1400");
+ smtp.setHelloNameAutodetect(false);
+ smtp.setHelloNameValue("Hello");
+
+ smtp.setAuthRequired("announce");
+ smtp.setVerifyIdentity(false);
+ smtp.setMaximumMessageSize("30");
+ smtp.setHeloEhloEnforcement(false);
+ smtp.setAddrBracketsEnforcement(false);
+ smtp.setGreeting("James Smtp Hello");
+ smtp.setAuthorizedAddresses("127.0.0.0/255.0.0.0");
+
+ smtpEditor.writeProtocol(smtp);
+
+ smtp = smtpEditor.readProtocol();
+
+ assertEquals("300", smtp.getConnectionBacklog());
+ assertEquals("1400", smtp.getConnectionTimeout());
+ assertFalse(smtp.isHelloNameAutodetect());
+ assertEquals("Hello", smtp.getHelloNameValue());
+
+ assertEquals("announce", smtp.getAuthRequired());
+ assertFalse(smtp.isVerifyIdentity());
+ assertEquals("30", smtp.getMaximumMessageSize());
+ assertFalse(smtp.isHeloEhloEnforcement());
+ assertFalse(smtp.isAddrBracketsEnforcement());
+ assertEquals("James Smtp Hello", smtp.getGreeting());
+ assertEquals("127.0.0.0/255.0.0.0", smtp.getAuthorizedAddresses());
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/manage/domain/DomainCacheTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/manage/domain/DomainCacheTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/manage/domain/DomainCacheTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/manage/domain/DomainCacheTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.bond.server.manage.domain;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.junit.Test;
+
+public class DomainCacheTest {
+
+ @Test
+ public void testAddDeleteDomain() {
+ try {
+ DomainCache domainsCache = new DomainCache();
+
+ List<Domain> domains = domainsCache.listDomains();
+ Domain domain = new Domain("domain.es");
+
+ if (domains.contains(domain)) {
+ domainsCache.removeDomain(domain);
+ }
+ domainsCache.addDomain(domain);
+ domains = domainsCache.listDomains();
+ assertTrue(domains.contains(domain));
+
+ domainsCache.removeDomain(domain);
+ domains = domainsCache.listDomains();
+ assertFalse(domains.contains(domain));
+ } catch (Exception e) {
+ System.err.println("James server not reachable");
+ }
+ }
+}
Added: james/bond/trunk/src/test/java/org/apache/james/bond/server/monitor/JMXBondConnectorTest.java
URL: http://svn.apache.org/viewvc/james/bond/trunk/src/test/java/org/apache/james/bond/server/monitor/JMXBondConnectorTest.java?rev=1607764&view=auto
==============================================================================
--- james/bond/trunk/src/test/java/org/apache/james/bond/server/monitor/JMXBondConnectorTest.java (added)
+++ james/bond/trunk/src/test/java/org/apache/james/bond/server/monitor/JMXBondConnectorTest.java Thu Jul 3 22:57:59 2014
@@ -0,0 +1,22 @@
+package org.apache.james.bond.server.monitor;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class JMXBondConnectorTest {
+ @Test
+ public void testConnection() {
+ try {
+ JMXBondConnector jmxConnector = new JMXBondConnector();
+
+ Monitoring m = jmxConnector.getMonitoringInformation();
+
+ Assert.assertTrue(m.getDaemonThreadCount() > 0);
+ } catch (IOException e) {
+ System.err.println("James server not reachable");
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org