blob: 498cf03183f325ac236b11f7dcbd5cabb0c66113 [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2008, 2009 Composent, Inc., IBM and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Composent, Inc. - initial API and implementation
*
*
* SPDX-License-Identifier: EPL-2.0
*****************************************************************************/
package org.eclipse.ecf.tests.filetransfer;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.ecf.filetransfer.BrowseFileTransferException;
import org.eclipse.ecf.filetransfer.IRemoteFile;
import org.eclipse.ecf.filetransfer.IRemoteFileAttributes;
import org.eclipse.ecf.filetransfer.IRemoteFileInfo;
import org.eclipse.ecf.filetransfer.events.IRemoteFileSystemBrowseEvent;
import org.eclipse.ecf.filetransfer.identity.IFileID;
/**
*
*/
public class URLBrowseTest extends AbstractBrowseTestCase {
public URL[] testURLs = null;
private List events;
/* (non-Javadoc)
* @see org.eclipse.ecf.tests.filetransfer.AbstractBrowseTestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
events = new ArrayList();
testURLs = new URL[3];
testURLs[0] = new URL("https://www.eclipse.org/ecf/ip_log.html");
testURLs[1] = new URL("http://www.eclipse.org/ecf/ip_log.html");
testURLs[2] = new URL("http://google.com:80");
}
/* (non-Javadoc)
* @see org.eclipse.ecf.tests.filetransfer.AbstractBrowseTestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
testURLs = null;
}
protected void handleFileSystemBrowseEvent(IRemoteFileSystemBrowseEvent event) {
super.handleFileSystemBrowseEvent(event);
events.add(event);
}
public void testBrowseURLs() throws Exception {
for (int i = 0; i < testURLs.length; i++) {
testBrowse(testURLs[i]);
Thread.sleep(10000);
}
assertHasEventCount(events, IRemoteFileSystemBrowseEvent.class, 3);
for (Iterator iterator = events.iterator(); iterator.hasNext();) {
IRemoteFileSystemBrowseEvent event = (IRemoteFileSystemBrowseEvent) iterator
.next();
assertNotNull(event);
final IRemoteFile[] remoteFiles = event.getRemoteFiles();
assertNotNull(remoteFiles);
assertEquals(1, remoteFiles.length);
if (event.getFileID().getName()
.equals("http://google.com:80")) {
verifyRemoteFilesWithoutLastModifiedAndContentLength(remoteFiles);
} else {
verifyRemoteFiles(remoteFiles);
}
}
}
public void testBrowseUnknownHost() throws Exception {
testBrowse(new URL(URLRetrieveTestUnknownHost.HTTP_UNKNOWN_HOST_URL));
Thread.sleep(3000);
assertHasEventCount(events, IRemoteFileSystemBrowseEvent.class, 1);
IRemoteFileSystemBrowseEvent event = (IRemoteFileSystemBrowseEvent) events.get(0);
assertNotNull(event);
final IRemoteFile[] remoteFiles = event.getRemoteFiles();
assertNull(remoteFiles);
Exception e = event.getException();
assertNotNull(e);
if (e instanceof BrowseFileTransferException) {
BrowseFileTransferException ifte = (BrowseFileTransferException) e;
assertTrue(ifte.getCause() instanceof UnknownHostException);
} else fail("Event exception is not instance of BrowseFileTransferException");
}
protected void verifyRemoteFilesWithoutLastModifiedAndContentLength(final IRemoteFile[] remoteFiles) {
for (int i = 0; i < remoteFiles.length; i++) {
final IRemoteFile first = remoteFiles[i];
final IRemoteFileInfo firstInfo = first.getInfo();
assertNotNull(firstInfo);
final IFileID firstID = first.getID();
assertNotNull(firstID);
trace("firstID=" + firstID);
// Now check out info
assertNotNull(firstInfo.getName());
assertEquals(0, firstInfo.getLastModified()); //TODO: should this be -1
trace("length=" + firstInfo.getLength());
trace("isDirectory=" + firstInfo.isDirectory());
final IRemoteFileAttributes attributes = firstInfo.getAttributes();
assertNotNull(attributes);
final Iterator attrNames = attributes.getAttributeKeys();
for (; attrNames.hasNext();) {
final String key = (String) attrNames.next();
String s = "attrname=" + key;
s += " attrvalue=" + attributes.getAttribute(key);
trace(s);
}
}
}
}