blob: 1a970a09c1c9b8eb32dc5bb8e54c37148f189af0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.update.tests.parser;
import java.io.File;
import java.net.URL;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.update.core.*;
import org.eclipse.update.core.model.*;
import org.eclipse.update.internal.core.SiteFileFactory;
import org.eclipse.update.internal.core.URLEncoder;
import org.eclipse.update.tests.UpdateManagerTestCase;
import org.xml.sax.SAXParseException;
public class TestSiteParse extends UpdateManagerTestCase {
/**
* Constructor for Test1
*/
public TestSiteParse(String arg0) {
super(arg0);
}
public void testParse() throws Exception {
URL remoteUrl = new URL(SOURCE_FILE_SITE + "xmls/site1/");
ISite remoteSite = SiteManager.getSite(remoteUrl,null);
//IFeatureReference[] feature = remoteSite.getFeatureReferences();
//ICategory[] categories = remoteSite.getCategories();
String path = remoteUrl.getFile();
String path2 = remoteSite.getDescription().getURL().getFile();
assertEquals(new File(path + "index.html"), new File(path2));
}
public void testNumberOfFeatures() throws Exception {
URL remoteURL = new URL("http", getHttpHost(), getHttpPort(), bundle.getString("HTTP_PATH_2"));
ISite remoteSite = SiteManager.getSite(remoteURL,null);
IFeatureReference[] feature = remoteSite.getFeatureReferences();
assertEquals(feature.length, 2);
}
public void testParseValid1() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", feature.length == 6);
assertTrue("Wrong number of categories", categories.length == 3);
assertTrue("Wrong number of archives", archives.length == 0);
String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
String path2 = remoteSite.getDescriptionModel().getURL().getFile();
assertEquals(path + "index.html", path2);
}
public void testParseValid2() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/reddot.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", feature.length == 2);
assertTrue("Wrong number of categories", categories.length == 1);
assertTrue("Wrong number of archives", archives.length == 2);
String valideString = "This category contains all of the <currently> available versions of Red Dot feature. <greeting>Hello, world!</greeting>";
assertEquals(valideString, remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
String path2 = remoteSite.getDescriptionModel().getURL().getFile();
assertEquals(path + "index.html", path2);
}
public void testParseValid3() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/reddot1.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", feature.length == 2);
assertTrue("Wrong number of categories", categories.length == 1);
assertTrue("Wrong number of archives", archives.length == 2);
String valideString = "This category contains all of the <currently> available versions of Red Dot feature.";
assertEquals(valideString, remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
String path2 = remoteSite.getDescriptionModel().getURL().getFile();
assertEquals(path + "index.html", path2);
}
public void testParseValid4() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/site.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] feature = remoteSite.getFeatureReferenceModels();
//CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", feature.length == 2);
assertTrue("Wrong number of archives", archives.length == 3);
URL path1 = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/artifacts/features/helpFeature.jar");
URL url1 = feature[0].getURL();
assertEquals(path1, url1);
URL path2 = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/artifacts/plugins/help.jar");
assertEquals(path2, archives[0].getURL());
String path = new URL(SOURCE_FILE_SITE + "SiteURLTest/data/info/").getFile();
String path3 = remoteSite.getDescriptionModel().getURL().getFile();
assertEquals(path + "siteInfo.html", path3);
}
public void testParseValid5() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site2.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
//CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", featureRef.length == 1);
assertTrue("Wrong number of archives", archives.length == 0);
try {
((FeatureReference) featureRef[0]).getFeature(null);
} catch (CoreException e) {
Throwable e1 = e.getStatus().getException();
if (e1.getMessage().indexOf("not-eclipse") == -1) {
throw e;
}
}
}
public void testParseValid6() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site4.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
//CategoryModel[] categories = remoteSite.getCategoryModels();
ArchiveReferenceModel[] archives = remoteSite.getArchiveReferenceModels();
assertTrue("Wrong number of features", featureRef.length == 2);
assertTrue("Wrong number of archives", archives.length == 0);
try {
((FeatureReference) featureRef[0]).getFeature(null);
} catch (CoreException e) {
Throwable e1 = e.getStatus().getException();
String msg = e1.getMessage().replace(File.separatorChar, '/');
if (msg.indexOf("_1.0.0.jar/feature.xml") == -1) {
throw e;
}
}
}
public void testParseUnknownCategory() throws Exception {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site3.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
FeatureReferenceModel[] featureRef = remoteSite.getFeatureReferenceModels();
ICategory[] categories = ((SiteFeatureReference) featureRef[0]).getCategories();
assertTrue(categories.length == 0);
}
public void testParseValid7() throws Exception {
try {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site7.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
} catch (SAXParseException e) {
fail("Exception should not be thrown" + e.getMessage());
}
}
public void testParseValid8() throws Exception {
try {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site8.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
} catch (SAXParseException e) {
fail("Exception should not be thrown" + e.getMessage());
}
}
public void testParseValid9() throws Exception {
try {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site9.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
SiteModel remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
} catch (SAXParseException e) {
fail("Exception should not be thrown" + e.getMessage());
}
}
public void testParseValid10() throws Exception {
SiteModel remoteSite = null;
try {
URL remoteURL = new URL(SOURCE_FILE_SITE + "parsertests/site10.xml");
DefaultSiteParser parser = new DefaultSiteParser();
parser.init(new SiteFileFactory());
URL resolvedURL = URLEncoder.encode(remoteURL);
remoteSite = parser.parse(resolvedURL.openStream());
remoteSite.resolve(remoteURL, null);
} catch (SAXParseException e) {
fail("Exception should not be thrown" + e.getMessage());
}
FeatureReferenceModel[] models = remoteSite.getFeatureReferenceModels();
assertEquals("Invalid versioned identifier", models[0].getFeatureIdentifier(), "org.eclipse.test.feature");
}
}