Check that nested process has the same i/o ports as the child workflow
diff --git a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
index bb5bcbe..e3b5d6e 100644
--- a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
+++ b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
@@ -764,10 +764,10 @@
 		if(nestedWorkflowForProcessor(processor, profile) != null) {
 			throw new IllegalStateException("Processor " + processor + " already has a nested workflow");
 		}
-        List<ProcessorBinding> processorBindings = processorBindingsForProcessor(processor, profile);
-        if(processorBindings.size() != 0) {
-            throw new IllegalStateException("Processor " + processor + "already has a binding")
-        }
+		List<ProcessorBinding> processorBindings = processorBindingsForProcessor(processor, profile);
+		if(processorBindings.size() != 0) {
+				throw new IllegalStateException("Processor " + processor + "already has a binding");
+		}
 
 		Activity activity = createActivityFromProcessor(processor, profile);
 		activity.setType(NESTED_WORKFLOW);
diff --git a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java
index f336af0..d397168 100644
--- a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java
+++ b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java
@@ -31,7 +31,10 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
 
+import java.util.stream.Collectors;
 import org.apache.taverna.scufl2.api.ExampleWorkflow;
 import org.apache.taverna.scufl2.api.activity.Activity;
 import org.apache.taverna.scufl2.api.common.Visitor.VisitorWithPath;
@@ -42,8 +45,10 @@
 import org.apache.taverna.scufl2.api.core.Workflow;
 import org.apache.taverna.scufl2.api.port.InputActivityPort;
 import org.apache.taverna.scufl2.api.port.InputProcessorPort;
+import org.apache.taverna.scufl2.api.port.InputWorkflowPort;
 import org.apache.taverna.scufl2.api.port.OutputActivityPort;
 import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
+import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
 import org.apache.taverna.scufl2.api.profiles.ProcessorBinding;
 import org.apache.taverna.scufl2.api.profiles.ProcessorInputPortBinding;
 import org.apache.taverna.scufl2.api.profiles.ProcessorOutputPortBinding;
@@ -51,7 +56,6 @@
 import org.apache.taverna.scufl2.api.profiles.Profile;
 import org.junit.Before;
 import org.junit.Test;
-import sun.security.krb5.Config;
 
 
 public class TestScufl2Tools extends ExampleWorkflow {
@@ -84,11 +88,37 @@
 
 		ProcessorBinding binding = processor.getBinding(profile);
 		Activity activity = binding.getBoundActivity();
-        Configuration configuration = activity.getConfiguration();
+		Configuration configuration = activity.getConfiguration();
 
-        assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW);
-        String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText();
-        assertEquals(nestedWorkflowName, child.getName());
+		assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW);
+		String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText();
+		assertEquals(nestedWorkflowName, child.getName());
+	}
+
+	@Test
+	public void testNestedProcessHasCorrectStructure() {
+		Workflow child = new Workflow();
+		child.setName("childWorkflow");
+		child.setParent(workflowBundle);
+
+		Workflow mainWorkflow = workflowBundle.getMainWorkflow();
+		Processor processor = new Processor();
+		processor.setParent(mainWorkflow);
+
+		Profile profile = workflowBundle.getMainProfile();
+
+		Scufl2Tools tools = new Scufl2Tools();
+		tools.setAsNestedWorkflow(processor, child, profile);
+
+		Set<String> processorInputNames = processor.getInputPorts().stream().map(InputProcessorPort::getName).collect(Collectors.toSet());
+		Set<String> workflowInputNames = child.getInputPorts().stream().map(InputWorkflowPort::getName).collect(Collectors.toSet());
+
+		assertEquals(workflowInputNames, processorInputNames);
+
+		Set<String> processorOutputNames = processor.getOutputPorts().stream().map(OutputProcessorPort::getName).collect(Collectors.toSet());
+		Set<String> workflowOutputNames = child.getOutputPorts().stream().map(OutputWorkflowPort::getName).collect(Collectors.toSet());
+
+		assertEquals(workflowOutputNames, processorOutputNames);
 	}
 	
 	@Test