| /****************************************************************************** |
| * Copyright (c) 2011, EBM WebSourcing |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * EBM WebSourcing - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.bpel.ui.wizards; |
| |
| import java.net.URL; |
| |
| import org.eclipse.bpel.validator.Builder; |
| import org.eclipse.bpel.validator.model.IProblem; |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.FileLocator; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| //import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; |
| //import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; |
| //import org.eclipse.swtbot.swt.finder.waits.DefaultCondition; |
| //import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu; |
| //import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; |
| import org.junit.After; |
| import org.junit.Assert; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| /** |
| * A set of tests for the BPEL creation wizard. |
| * @author Vincent Zurczak - EBM WebSourcing |
| * |
| * June 04.2020 - ralph.soika@imixs.com |
| * deactivated UI front-end test because of outdated test scenarios. Need to be fixed in the future. |
| * |
| */ |
| //@RunWith(SWTBotJunit4ClassRunner.class) |
| public class NewBpelFileWizardTest { |
| |
| private static final String BPEL_DIR = "bpelContent"; |
| private static final String BPEL_NAME = "myProcess"; |
| private static final String PROJECT_NAME = "BpelTest"; |
| private static final String BPEL_FILE_NAME = BPEL_NAME + ".bpel"; |
| |
| //private static SWTWorkbenchBot bot = new SWTWorkbenchBot(); |
| private final Builder bpelBuilder = new Builder(); |
| |
| |
| /** |
| * Deletes the created project (and will thus close the BPEL editor). |
| * @throws Exception |
| */ |
| /* |
| @After |
| public void afterTest() throws Exception { |
| |
| // Close a previous wizard whose test failed? |
| try { |
| bot.button( "Cancel" ).click(); |
| } catch( Exception e ) { |
| // nothing |
| } |
| |
| // Delete the project |
| final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( PROJECT_NAME ); |
| if( ! project.exists()) |
| return; |
| |
| project.delete( true, null ); |
| bot.waitUntil( new DefaultCondition() { |
| |
| @Override |
| public boolean test() throws Exception { |
| return ! project.exists(); |
| } |
| |
| @Override |
| public String getFailureMessage() { |
| return "The project could not be deleted."; |
| } |
| }); |
| } |
| */ |
| |
| /** |
| * Prepares the work. |
| * @throws Exception |
| */ |
| // @BeforeClass |
| // public static void beforeClass() throws Exception { |
| // |
| // // Close the welcome page |
| // try { |
| // bot.viewByTitle( "Welcome" ).close(); |
| // } catch( Exception e ) { |
| // // nothing |
| // } |
| // |
| // // Disable auto-build |
| // // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=260010 |
| // SWTBotMenu menu = null; |
| // String ba = "Build Automatically"; |
| // try { |
| // menu = bot.menu( "Project" ).menu( ba ); |
| // } catch( Exception e ) { |
| // // nothing |
| // } |
| // |
| // if( menu == null ) { |
| // try { |
| // menu = bot.menu( "Project", 1 ).menu( ba ); |
| // } catch( Exception e2 ) { |
| // // nothing |
| // } |
| // } |
| // |
| // if( menu == null ) { |
| // try { |
| // menu = bot.menu( ba ); |
| // } catch( Exception e ) { |
| // // nothing |
| // } |
| // } |
| // |
| // if( menu != null && menu.isChecked()) |
| // menu.click(); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Empty process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelDirectoryEmpty() throws Exception { |
| // testTemplate( 1, false, 1, true, true ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Synchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelDirectorySynchronous() throws Exception { |
| // testTemplate( 2, false, 0, true, true ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Asynchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelDirectoryAsynchronous() throws Exception { |
| // testTemplate( 0, false, 0, true, true ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Empty process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelProjectEmpty() throws Exception { |
| // testTemplate( 1, false, 1, true, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Synchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelProjectSynchronous() throws Exception { |
| // testTemplate( 2, false, 0, true, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Asynchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInBpelProjectAsynchronous() throws Exception { |
| // testTemplate( 0, false, 0, true, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Empty process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInNonBpelProjectEmpty() throws Exception { |
| // testTemplate( 1, false, 1, false, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Synchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInNonBpelProjectSynchronous() throws Exception { |
| // testTemplate( 2, false, 0, false, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * <p> |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * Asynchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testTemplateInNonBpelProjectAsynchronous() throws Exception { |
| // testTemplate( 0, false, 0, false, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of an abstract BPEL from a template. |
| // * <p> |
| // * The process is created at the root of a BPEL project. |
| // * Empty process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testAbstractTemplateEmpty() throws Exception { |
| // testTemplate( 1, true, 1, true, false ); |
| // } |
| // |
| // |
| // /** |
| // *Tests the creation of an abstract BPEL from a template. |
| // * <p> |
| // * The process is created at the root of a BPEL project. |
| // * Synchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testAbstractTemplateSynchronous() throws Exception { |
| // testTemplate( 2, true, 1, true, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of an abstract BPEL from a template. |
| // * <p> |
| // * The process is created at the root of a BPEL project. |
| // * Asynchronous process. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testAbstractTemplateAsynchronous() throws Exception { |
| // testTemplate( 0, true, 1, true, false ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is NOT abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlWithImportTux() throws Exception { |
| // testWsdlFirst( "test1/tuxDroid.wsdl", false, true, true, true, 0 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is NOT abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlWithImportTo() throws Exception { |
| // testWsdlFirst( "test2/To.wsdl", false, true, true, true, 0 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is NOT imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is NOT abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlWithoutImportTux() throws Exception { |
| // testWsdlFirst( "test1/tuxDroid.wsdl", false, true, true, true, 0 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is NOT imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is NOT abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlWithoutImportTo() throws Exception { |
| // testWsdlFirst( "test2/To.wsdl", false, true, true, true, 0 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlAsAbstractWithImportTux() throws Exception { |
| // testWsdlFirst( "test1/tuxDroid.wsdl", true, true, true, true, 1 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL definition. |
| // * <p> |
| // * The WSDL is imported in the project. |
| // * The process is created in the "bpelContent" directory of a BPEL project. |
| // * The created process is abstract. |
| // * </p> |
| // * |
| // * @throws Exception |
| // */ |
| // @Test |
| // public void testWsdlAsAbstractWithImportTo() throws Exception { |
| // testWsdlFirst( "test2/To.wsdl", true, true, true, true, 1 ); |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a WSDL. |
| // * @param wsdlFile the relative location of the WSDL file to use as input |
| // * @param isAbstract true f the created process must be abstract, false otherwise |
| // * @param importWsdl true to import the WSDL in the project, false to reference the remote one |
| // * @param createBpelProject true to create a BPEL project, false for a simple Eclipse project |
| // * @param selectBpelDir true to select the BPEL directory, false otherwise (only makes sense for a BPEL project) |
| // * @param expectedNumberOfProblems the number of problems the created process should contain |
| // * @throws Exception |
| // */ |
| // private void testWsdlFirst( |
| // String wsdlFile, boolean isAbstract, boolean importWsdl, |
| // boolean createBpelProject, boolean selectBpelDir, int expectedNumberOfProblems ) |
| // throws Exception { |
| // |
| // if( createBpelProject ) |
| // createBpelProject(); |
| // else |
| // createSimpleProject(); |
| // |
| // SWTBotMenu newMenu = bot.menu( "File" ).menu( "New" ); |
| // newMenu.menu( "BPEL Process File" ).click(); |
| // |
| // bot.comboBox().setSelection( 1 ); |
| // bot.text( 0 ).setText( BPEL_NAME ); |
| // bot.comboBox( 1 ).setText( "http://" + BPEL_NAME ); |
| // if( isAbstract ) |
| // bot.checkBox( 0 ).select(); |
| // bot.button( "Next >" ).click(); |
| // |
| // URL url = getClass().getResource( "/wsdls/" + wsdlFile ); |
| // url = FileLocator.toFileURL( url ); |
| // |
| // bot.text( 0 ).setText( url.toString()); |
| // bot.link( 2 ).click(); |
| // bot.comboBox( 0 ).setSelection( 0 ); |
| // if( ! importWsdl ) |
| // bot.checkBox( 0 ).deselect(); |
| // bot.button( "Next >" ).click(); |
| // |
| // completeBpelFileCreation( selectBpelDir ); |
| // IPath path; |
| // if( selectBpelDir ) |
| // path = new Path( PROJECT_NAME ).append( BPEL_DIR ).append( BPEL_FILE_NAME ); |
| // else |
| // path = new Path( PROJECT_NAME ).append( BPEL_FILE_NAME ); |
| // |
| // IFile bpelFile = ResourcesPlugin.getWorkspace().getRoot().getFile( path ); |
| // Assert.assertTrue( bpelFile.isAccessible()); |
| // |
| // IProblem[] problems = this.bpelBuilder.validate( bpelFile, null ); |
| // Assert.assertEquals( problems.length, expectedNumberOfProblems ); |
| // |
| // // No import => only 1 WSDL, the one for the artifacts |
| // if( ! importWsdl ) { |
| // int wsdlCpt = 0; |
| // for( IResource r : bpelFile.getParent().members()) { |
| // if( r instanceof IFile && "wsdl".equalsIgnoreCase( r.getFileExtension())) |
| // wsdlCpt ++; |
| // } |
| // |
| // Assert.assertEquals( wsdlCpt, 1 ); |
| // } |
| // } |
| // |
| // |
| // /** |
| // * Tests the creation of a BPEL from a template. |
| // * @param tplId the template ID (index of the template in the associated combo) |
| // * @param isAbstract true if the created process must be abstract, false otherwise |
| // * @param expectedNumberOfProblems the number of problems the created process should contain |
| // * @param createBpelProject true to create a BPEL project, false for a simple Eclipse project |
| // * @param selectBpelDir true to select the BPEL directory, false otherwise (only makes sense for a BPEL project) |
| // * @throws Exception |
| // */ |
| // private void testTemplate( int tplId, boolean isAbstract, int expectedNumberOfProblems, boolean createBpelProject, boolean selectBpelDir ) |
| // throws Exception { |
| // |
| // if( createBpelProject ) |
| // createBpelProject(); |
| // else |
| // createSimpleProject(); |
| // |
| // bot.defaultPerspective().activate(); |
| // bot.menu( "File" ).menu( "New" ).menu( "Other..." ).click(); |
| // SWTBotShell shell = bot.shell( "New" ); |
| // shell.activate(); |
| // |
| // bot.tree( 0 ).setFocus(); |
| // bot.tree( 0 ).expandNode( "BPEL 2.0" ).select( "BPEL Process File" ); |
| // bot.button("Next >").click(); |
| // |
| // bot.text( 0 ).setText( BPEL_NAME ); |
| // bot.comboBox( 1 ).setText( "http://" + BPEL_NAME ); |
| // if( isAbstract ) |
| // bot.checkBox( 0 ).select(); |
| // bot.button( "Next >" ).click(); |
| // |
| // bot.comboBox( 0 ).setSelection( tplId ); |
| // bot.button( "Next >" ).click(); |
| // |
| // completeBpelFileCreation( selectBpelDir ); |
| // IPath path; |
| // if( selectBpelDir ) |
| // path = new Path( PROJECT_NAME ).append( BPEL_DIR ).append( BPEL_FILE_NAME ); |
| // else |
| // path = new Path( PROJECT_NAME ).append( BPEL_FILE_NAME ); |
| // |
| // IFile bpelFile = ResourcesPlugin.getWorkspace().getRoot().getFile( path ); |
| // Assert.assertTrue( bpelFile.isAccessible()); |
| // |
| // // The empty template is not valid because it does not start with an starting activity |
| // IProblem[] problems = this.bpelBuilder.validate( bpelFile, null ); |
| // Assert.assertEquals( problems.length, expectedNumberOfProblems ); |
| // } |
| // |
| // |
| // /** |
| // * Completes the creation of a new BPEL file. |
| // * @param selectBpelDir true to create the BPEL in the {@link #BPEL_DIR} directory, false for the root of the project |
| // * @throws Exception if the created project could not be built |
| // */ |
| // private void completeBpelFileCreation( boolean selectBpelDir ) throws Exception { |
| // |
| // // Create the project |
| // if( selectBpelDir ) |
| // bot.tree( 0 ).expandNode( PROJECT_NAME ).select( BPEL_DIR ); |
| // else |
| // bot.tree( 0 ).select( PROJECT_NAME ); |
| // |
| // bot.button( "Finish" ).click(); |
| // bot.waitUntil( new DefaultCondition() { |
| // |
| // @Override |
| // public boolean test() throws Exception { |
| // String title = NewBpelFileWizardTest.bot.activeEditor().getTitle(); |
| // return (BPEL_NAME + ".bpel").equals( title ); |
| // } |
| // |
| // @Override |
| // public String getFailureMessage() { |
| // return "Could not wait for the BPEL Designer to be open"; |
| // } |
| // }); |
| // } |
| // |
| // |
| // /** |
| // * Creates a BPEL project. |
| // */ |
| // private void createBpelProject() { |
| // |
| // bot.menu( "File" ).menu( "New" ).menu( "Other..." ).click(); |
| // SWTBotShell shell = bot.shell( "New" ); |
| // shell.activate(); |
| // |
| // bot.tree( 0 ).setFocus(); |
| // bot.tree( 0 ).expandNode( "BPEL 2.0" ).select( "BPEL Project" ); |
| // bot.button("Next >").click(); |
| // |
| // bot.text( 0 ).setText( PROJECT_NAME ); |
| // bot.button( "Next >" ).click(); |
| // bot.button( "Finish" ).click(); |
| // |
| // try { |
| // shell = bot.shell( "Open Associated Perspective?" ); |
| // shell.activate(); |
| // bot.button( "Yes" ).click(); |
| // |
| // } catch( Exception e ) { |
| // // nothing - the shell does not appear all the time |
| // } |
| // } |
| // |
| // |
| // /** |
| // * Creates a simple project. |
| // */ |
| // private void createSimpleProject() { |
| // |
| // bot.menu( "File" ).menu( "New" ).menu( "Other..." ).click(); |
| // SWTBotShell shell = bot.shell( "New" ); |
| // shell.activate(); |
| // |
| // bot.tree( 0 ).setFocus(); |
| // bot.tree( 0 ).expandNode( "General" ).select( "Project" ); |
| // bot.button("Next >").click(); |
| // |
| // bot.text( 0 ).setText( PROJECT_NAME ); |
| // bot.button( "Finish" ).click(); |
| // |
| // // The following code is useless - there is no default perspective for simple projects - |
| // // but it makes one test work (otherwise, this test fails and there is no reason for it). |
| // try { |
| // shell = bot.shell( "Open Associated Perspective?" ); |
| // shell.activate(); |
| // bot.button( "Yes" ).click(); |
| // |
| // } catch( Exception e ) { |
| // // nothing - the shell does not appear all the time |
| // } |
| // } |
| } |