/******************************************************************************* * Copyright (c) 2014, 2015 IBM Corporation and others * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.orion.server.tests.cf; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.orion.server.cf.manifest.v2.InvalidAccessException; import org.eclipse.orion.server.cf.manifest.v2.ManifestParseTree; import org.eclipse.orion.server.cf.manifest.v2.ParserException; import org.eclipse.orion.server.cf.manifest.v2.utils.ManifestParser; import org.eclipse.orion.server.cf.manifest.v2.utils.ManifestUtils; import org.eclipse.orion.server.tests.ServerTestsActivator; import org.json.JSONException; import org.json.JSONObject; import org.junit.Test; public class ManifestParseTreeTest { private static String CORRECT_MANIFEST_LOCATION = "testData/manifestTest/correct"; //$NON-NLS-1$ private static String INCORRECT_MANIFEST_LOCATION = "testData/manifestTest/incorrect"; //$NON-NLS-1$ private ManifestParseTree parse(InputStream inputStream) throws IOException, ParserException { return new ManifestParser().parse(inputStream); } private JSONObject exportManifestJSON(InputStream inputStream) throws IOException, ParserException, JSONException, InvalidAccessException { return parse(inputStream).toJSON(); } @Test public void testToJSONAgainsCorrectManifests() throws Exception { URL entry = ServerTestsActivator.getContext().getBundle().getEntry(CORRECT_MANIFEST_LOCATION); File manifestSource = new File(FileLocator.toFileURL(entry).getPath()); File[] manifests = manifestSource.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".yml"); //$NON-NLS-1$ } }); for (File manifestFile : manifests) { InputStream inputStream = new FileInputStream(manifestFile); /* export the manifest to JSON - pass if no exceptions occurred */ exportManifestJSON(inputStream); } } @Test public void testToJSONAgainsIncorrectManifests() throws Exception { URL entry = ServerTestsActivator.getContext().getBundle().getEntry(INCORRECT_MANIFEST_LOCATION); File manifestSource = new File(FileLocator.toFileURL(entry).getPath()); File[] manifests = manifestSource.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".yml"); //$NON-NLS-1$ } }); boolean failure = false; for (File manifestFile : manifests) { failure = false; InputStream inputStream = new FileInputStream(manifestFile); /* export the manifest */ try { exportManifestJSON(inputStream); } catch (IOException ex) { failure = true; } catch (ParserException ex) { failure = true; } catch (JSONException ex) { failure = true; } catch (InvalidAccessException ex) { failure = true; } assertTrue(failure); } } @Test public void testFromJSONAgainsCorrectManifests() throws Exception { URL entry = ServerTestsActivator.getContext().getBundle().getEntry(CORRECT_MANIFEST_LOCATION); File manifestSource = new File(FileLocator.toFileURL(entry).getPath()); File[] manifests = manifestSource.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.toLowerCase().endsWith(".yml"); //$NON-NLS-1$ } }); for (File manifestFile : manifests) { InputStream inputStream = new FileInputStream(manifestFile); /* export the manifest to JSON - pass if no exceptions occurred */ JSONObject manifestJSON = exportManifestJSON(inputStream); ManifestUtils.parse(manifestJSON).toString(); } } }