/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed 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
*******************************************************************************/
package org.ebayopensource.turmeric.eclipse.test.utils;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import javax.wsdl.WSDLException;
import junit.framework.Assert;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.ebayopensource.turmeric.eclipse.functional.test.AbstractTestCase;
import org.ebayopensource.turmeric.eclipse.functional.test.SoaTestConstants;
import org.ebayopensource.turmeric.eclipse.utils.wsdl.WSDLUtil;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.osgi.framework.Bundle;
public class WsdlUtilTest extends AbstractTestCase {
private static File outputFile = null;
private static File inputFile = null;
/**
* @throws java.lang.Exception
*/
@Override
@Before
public void setUpBeforeClass() throws Exception {
String testDataLocation = getPluginOSPath(SoaTestConstants.PLUGIN_ID,
SoaTestConstants.TEST_DATA)
+ File.pathSeparator
+ AbstractTestCase.class.getName();
outputFile = new File(testDataLocation, "output");
FileUtils.forceMkdir(outputFile);
inputFile = new File(testDataLocation, "input");
Assert.assertNotNull(inputFile);
}
/**
* @throws java.lang.Exception
*/
@Override
@After
public void tearDownAfterClass() throws Exception {
// clean the output folder
FileUtils.cleanDirectory(outputFile);
}
public static String getPluginOSPath(String pluginId, String subDirPath) {
URL platformContextURL = getPluginOSURL(pluginId, subDirPath);
String fullPath = (new File(platformContextURL.getPath()))
.getAbsolutePath();
IPath osPath = new Path(fullPath);
return osPath.toString();
}
public static URL getPluginOSURL(String pluginId, String subDirPath) {
Bundle bundle = Platform.getBundle(pluginId);
if (bundle == null) {
return null;
}
URL installLocation = bundle.getEntry("/");
URL local = null;
URL platformContextURL = null;
try {
local = FileLocator.toFileURL(installLocation);
platformContextURL = subDirPath == null ? local : new URL(local,
subDirPath.toString());
} catch (MalformedURLException ex) {
return null;
} catch (IOException e) {
return null;
}
return platformContextURL;
}
@Ignore("Currently Failing")
@Test
public void testWriteWSDLStringString() {
// testPerFile("C:\\testWsdlUtil\\input\\Calc.wsdl");/*with no imports
// at all*/
// testPerFile("C:\\testWsdlUtil\\input\\PayPalSvc.wsdl");/*has schema
// imports recursively*/
// testPerFile("C:\\testWsdlUtil\\input\\calcSchemaInclude\\CalculatorService.wsdl");/*test
// schema include*/
// testPerFile("C:\\testWsdlUtil\\input\\calcSchemaInclude2\\CalculatorService.wsdl");/*test
// schema include*/
testPerFile("https://www.paypal.com/wsdl/PayPalSvc.wsdl");/*
* test fetch
* through http
* connection
*/
// test every wsdl file resides input directory
Collection wsdlfiles = FileUtils.listFiles(inputFile,
new String[] { "wsdl" }, true);
for (Object object : wsdlfiles) {
File file = (File) object;
testPerFile(file.getAbsolutePath());
}
}
private void testPerFile(String filePath) {
String destFolderPath = outputFile.getAbsolutePath() + File.separator
+ FilenameUtils.getBaseName(filePath);
if (new File(destFolderPath).exists()) {
destFolderPath = destFolderPath + System.currentTimeMillis();
}
String destFilePath = destFolderPath + File.separator
+ FilenameUtils.getName(filePath);
try {
WSDLUtil.writeWSDL(filePath, destFilePath);
} catch (Exception e1) {
Assert.fail(e1.getMessage());
}
try {
WSDLUtil.readWSDL(destFilePath);
} catch (WSDLException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
}