| /******************************************************************************* |
| * Copyright (c) 2009, 2010 Tasktop Technologies and others. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * https://www.eclipse.org/legal/epl-2.0 |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Tasktop Technologies - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.discovery.tests.core; |
| |
| import java.io.IOException; |
| import java.io.StringReader; |
| import java.net.URI; |
| import java.net.URISyntaxException; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.mylyn.internal.discovery.core.model.Directory; |
| import org.eclipse.mylyn.internal.discovery.core.model.DirectoryParser; |
| |
| /** |
| * @author David Green |
| */ |
| public class DirectoryParserTest extends TestCase { |
| |
| private DirectoryParser parser; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| parser = new DirectoryParser(); |
| } |
| |
| public void testParse() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals("http://foo.bar.nodomain/baz.jar", directory.getEntries().get(0).getLocation()); |
| } |
| |
| public void testParseBadFormat() throws IOException { |
| try { |
| parser.parse(new StringReader( |
| "<directory2 xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\"/></directory2>")); |
| fail("Expected exception"); |
| } catch (IOException e) { |
| // expected |
| } |
| } |
| |
| public void testParseMalformed() throws IOException { |
| try { |
| parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\">")); |
| fail("Expected exception"); |
| } catch (IOException e) { |
| // expected |
| } |
| } |
| |
| public void testParseUnexpectedElementsAndAttributes() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\" id=\"asdf\"><baz/></entry><foo/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals("http://foo.bar.nodomain/baz.jar", directory.getEntries().get(0).getLocation()); |
| } |
| |
| public void testParseNoNS() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory><entry url=\"http://foo.bar.nodomain/baz.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals("http://foo.bar.nodomain/baz.jar", directory.getEntries().get(0).getLocation()); |
| } |
| |
| public void testParsePermitCategoriesTrue() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\" permitCategories=\"true\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals(true, directory.getEntries().get(0).isPermitCategories()); |
| } |
| |
| public void testParsePermitCategoriesFalse() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\" permitCategories=\"false\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals(false, directory.getEntries().get(0).isPermitCategories()); |
| } |
| |
| public void testParsePermitCategoriesNotSpecified() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals(false, directory.getEntries().get(0).isPermitCategories()); |
| } |
| |
| public void testParsePermitCategoriesSpecifiedBadly() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\" permitCategories=\"\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals(false, directory.getEntries().get(0).isPermitCategories()); |
| } |
| |
| public void testParsePermitCategoriesSpecifiedBadly2() throws IOException { |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"http://foo.bar.nodomain/baz.jar\" permitCategories=\"asdf\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals(false, directory.getEntries().get(0).isPermitCategories()); |
| } |
| |
| public void testParseBaseRelativeUrl() throws IOException, URISyntaxException { |
| parser.setBaseUri(new URI("http://base.uri/location/directory.xml")); |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"parent/baz.jar\"/><entry url=\"http://absolute/bar.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(2, directory.getEntries().size()); |
| assertEquals("http://base.uri/location/parent/baz.jar", directory.getEntries().get(0).getLocation()); |
| assertEquals("http://absolute/bar.jar", directory.getEntries().get(1).getLocation()); |
| } |
| |
| public void testParseRootUrl() throws IOException, URISyntaxException { |
| parser.setBaseUri(new URI("http://base.uri/location/directory.xml")); |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\"/baz.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(1, directory.getEntries().size()); |
| assertEquals("http://base.uri/baz.jar", directory.getEntries().get(0).getLocation()); |
| } |
| |
| public void testParseBaseInvalidRelativeUrl() throws IOException, URISyntaxException { |
| parser.setBaseUri(new URI("http://base.uri/location/directory.xml")); |
| Directory directory = parser.parse(new StringReader( |
| "<directory xmlns=\"http://www.eclipse.org/mylyn/discovery/directory/\"><entry url=\":/baz.jar\"/><entry url=\"http://absolute/bar.jar\"/></directory>")); |
| assertNotNull(directory); |
| assertEquals(2, directory.getEntries().size()); |
| assertEquals(":/baz.jar", directory.getEntries().get(0).getLocation()); |
| assertEquals("http://absolute/bar.jar", directory.getEntries().get(1).getLocation()); |
| } |
| |
| } |