blob: 944396d146e7ce27ae26e956c85c2aeaba2b24e2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Mylyn project committers 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
*******************************************************************************/
package org.eclipse.mylyn.bugzilla.tests;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import junit.framework.TestCase;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin;
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
import org.eclipse.mylyn.internal.bugzilla.core.SaxConfigurationContentHandler;
import org.eclipse.mylyn.internal.bugzilla.core.XmlCleaner;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
public class BugzillaConfigurationTest extends TestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void test222RDFProductConfig() throws Exception {
BugzillaClient client = new BugzillaClient(new URL(IBugzillaConstants.TEST_BUGZILLA_222_URL), "", "", "", "",
"UTF-8");
RepositoryConfiguration config = client.getRepositoryConfiguration();
assertNotNull(config);
assertEquals("2.22.1", config.getInstallVersion());
assertEquals(7, config.getStatusValues().size());
assertEquals(8, config.getResolutions().size());
assertEquals(4, config.getPlatforms().size());
assertEquals(5, config.getOSs().size());
assertEquals(5, config.getPriorities().size());
assertEquals(7, config.getSeverities().size());
assertEquals(3, config.getProducts().size());
assertEquals(4, config.getOpenStatusValues().size());
assertEquals(1, config.getComponents("TestProduct").size());
assertEquals(1, config.getVersions("TestProduct").size());
assertEquals(0, config.getTargetMilestones("TestProduct").size());
}
public void test2201RDFProductConfig() throws Exception {
BugzillaClient client = new BugzillaClient(new URL(IBugzillaConstants.TEST_BUGZILLA_2201_URL), "", "", "", "",
"UTF-8");
RepositoryConfiguration config = client.getRepositoryConfiguration();
assertNotNull(config);
assertEquals("2.20.1", config.getInstallVersion());
assertEquals(7, config.getStatusValues().size());
assertEquals(8, config.getResolutions().size());
assertEquals(4, config.getPlatforms().size());
assertEquals(5, config.getOSs().size());
assertEquals(5, config.getPriorities().size());
assertEquals(7, config.getSeverities().size());
assertEquals(1, config.getProducts().size());
assertEquals(4, config.getOpenStatusValues().size());
assertEquals(2, config.getComponents("TestProduct").size());
assertEquals(1, config.getVersions("TestProduct").size());
// assertEquals(1, config.getTargetMilestones("TestProduct").size());
}
public void test220RDFProductConfig() throws Exception {
BugzillaClient client = new BugzillaClient(new URL(IBugzillaConstants.TEST_BUGZILLA_220_URL), "", "", "", "",
"UTF-8");
RepositoryConfiguration config = client.getRepositoryConfiguration();
assertNotNull(config);
assertEquals("2.20.3", config.getInstallVersion());
assertEquals(7, config.getStatusValues().size());
assertEquals(8, config.getResolutions().size());
assertEquals(4, config.getPlatforms().size());
assertEquals(5, config.getOSs().size());
assertEquals(5, config.getPriorities().size());
assertEquals(7, config.getSeverities().size());
assertEquals(2, config.getProducts().size());
assertEquals(4, config.getOpenStatusValues().size());
assertEquals(2, config.getComponents("TestProduct").size());
assertEquals(1, config.getVersions("TestProduct").size());
// assertEquals(1, config.getTargetMilestones("TestProduct").size());
}
public void test218RDFProductConfig() throws Exception {
BugzillaClient client = new BugzillaClient(new URL(IBugzillaConstants.TEST_BUGZILLA_218_URL), "", "", "", "",
"UTF-8");
RepositoryConfiguration config = client.getRepositoryConfiguration();
assertNotNull(config);
assertEquals("2.18.6", config.getInstallVersion());
assertEquals(7, config.getStatusValues().size());
assertEquals(8, config.getResolutions().size());
assertEquals(8, config.getPlatforms().size());
assertEquals(36, config.getOSs().size());
assertEquals(5, config.getPriorities().size());
assertEquals(7, config.getSeverities().size());
assertEquals(1, config.getProducts().size());
assertEquals(4, config.getOpenStatusValues().size());
assertEquals(1, config.getComponents("TestProduct").size());
assertEquals(1, config.getVersions("TestProduct").size());
// assertEquals(1, config.getTargetMilestones("TestProduct").size());
}
public void testEclipseRDFProductConfig() throws Exception {
BugzillaClient client = new BugzillaClient(new URL(IBugzillaConstants.ECLIPSE_BUGZILLA_URL), "", "", "", "",
"UTF-8");
RepositoryConfiguration config = client.getRepositoryConfiguration();
assertNotNull(config);
assertEquals("2.22.1", config.getInstallVersion());
assertEquals(7, config.getStatusValues().size());
assertEquals(8, config.getResolutions().size());
assertEquals(6, config.getPlatforms().size());
assertEquals(29, config.getOSs().size());
assertEquals(5, config.getPriorities().size());
assertEquals(7, config.getSeverities().size());
assertTrue(config.getProducts().size() > 50);
assertEquals(4, config.getOpenStatusValues().size());
assertEquals(13, config.getComponents("Mylyn").size());
assertEquals(24, config.getKeywords().size());
// assertEquals(10, config.getComponents("Hyades").size());
// assertEquals(1, config.getTargetMilestones("TestProduct").size());
}
public void testRepositoryConfigurationCachePersistance() throws Exception {
RepositoryConfiguration configuration1 = new RepositoryConfiguration();
configuration1.setRepositoryUrl("url1");
configuration1.addProduct("Test Product 1");
assertEquals(1, configuration1.getProducts().size());
RepositoryConfiguration configuration2 = new RepositoryConfiguration();
configuration1.setRepositoryUrl("url2");
configuration2.addProduct("Test Product 2");
assertEquals(1, configuration2.getProducts().size());
BugzillaCorePlugin.addRepositoryConfiguration(configuration1);
BugzillaCorePlugin.addRepositoryConfiguration(configuration2);
BugzillaCorePlugin.writeRepositoryConfigFile();
BugzillaCorePlugin.removeConfiguration(configuration1);
BugzillaCorePlugin.removeConfiguration(configuration2);
assertNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration1.getRepositoryUrl()));
assertNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration2.getRepositoryUrl()));
BugzillaCorePlugin.readRepositoryConfigurationFile();
assertNotNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration1.getRepositoryUrl()));
assertNotNull(BugzillaCorePlugin.getRepositoryConfiguration(configuration2.getRepositoryUrl()));
RepositoryConfiguration testLoadedConfig = BugzillaCorePlugin.getRepositoryConfiguration(configuration1.getRepositoryUrl());
assertEquals(1, testLoadedConfig.getProducts().size());
assertEquals(configuration1.getProducts().get(0), testLoadedConfig.getProducts().get(0));
}
// @SuppressWarnings("deprecation")
// public void testHtmlCleaner() throws IOException, BugzillaException, GeneralSecurityException {
// StringBuffer incoming = new StringBuffer();
// incoming.append("<RDF xmlns=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
// incoming.append("xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
// incoming.append("xmlns:bz=\"http://www.bugzilla.org/rdf#\">");
// incoming.append("<li>");
// incoming.append("<bz:product
// incoming.append("</bz:product>");
// incoming.append("</li>");
// incoming.append("</RDF>");
//
// StringBuffer result = XmlCleaner.clean(new StringReader(incoming.toString()));
// System.err.println(result);
// }
/**
* Can use this to test config data submitted by users. Be sure not to commit user's config file though. The file
* included (rdfconfig218.txt) is from mylar.eclipse.org/bugs218
*/
public void testRepositoryConfigurationFromFile() throws Exception {
URL entryURL = BugzillaTestPlugin.getDefault().getBundle().getEntry("testdata/configuration/rdfconfig218.txt");
assertNotNull(entryURL);
URL fileURL = FileLocator.toFileURL(entryURL);
assertNotNull(fileURL);
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(fileURL.getFile())));
if (true) {
StringBuffer result = XmlCleaner.clean(in);
StringReader strReader = new StringReader(result.toString());
in = new BufferedReader(strReader);
}
SaxConfigurationContentHandler contentHandler = new SaxConfigurationContentHandler();
final XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(contentHandler);
reader.setErrorHandler(new ErrorHandler() {
public void error(SAXParseException exception) throws SAXException {
throw exception;
}
public void fatalError(SAXParseException exception) throws SAXException {
throw exception;
}
public void warning(SAXParseException exception) throws SAXException {
throw exception;
}
});
reader.parse(new InputSource(in));
RepositoryConfiguration config = contentHandler.getConfiguration();
assertNotNull(config);
assertTrue(config.getProducts().contains(
"Test-Long-Named-Product-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
// Add your additional checking for valid data here if necessary
}
}