blob: 97043b8bbfb55712a11c5c8adbe29dccd17591d2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* 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:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.repository.internal.cacheing.cache.artifact;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.virgo.repository.internal.cacheing.cache.artifact.Downloader;
import org.eclipse.virgo.util.io.PathReference;
/**
*/
public class DownloaderTests {
private PathReference destinationDirectory;
@Before
public void setUp() throws Exception {
this.destinationDirectory = new PathReference("build/downloaderTests");
this.destinationDirectory.delete(true);
this.destinationDirectory.createDirectory();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSuccessfulDownload() throws IOException {
File sourceFile = new File("src/test/resources/cacheing/b.jar");
PathReference destinationPathReference = this.destinationDirectory.newChild("b.jar");
ensureOldContentPresent(destinationPathReference);
Downloader downloader = new Downloader(sourceFile.toURI(), destinationPathReference);
downloader.downloadArtifact();
checkDownloadedContent(sourceFile, destinationPathReference);
}
private void ensureOldContentPresent(PathReference destinationPathReference) throws IOException {
destinationPathReference.createFile();
File destinationFile = destinationPathReference.toFile();
FileWriter fileWriter = new FileWriter(destinationFile);
try {
fileWriter.write("old content");
} finally {
fileWriter.close();
}
}
private void checkDownloadedContent(File sourceFile, PathReference destinationPathReference) throws IOException {
PathReference sourcePathReference = new PathReference(sourceFile);
String sourceContents = sourcePathReference.fileContents();
String destinationContents = destinationPathReference.fileContents();
Assert.assertEquals(sourceContents, destinationContents);
}
@Test
public void testNonExistenceSourceFile() throws IOException {
File badSourceFile = new File("src/test/resources/cacheing/nosuchfile");
PathReference destinationPathReference = this.destinationDirectory.newChild("b.jar");
ensureOldContentPresent(destinationPathReference);
Assert.assertTrue(destinationPathReference.exists());
Downloader downloader = new Downloader(badSourceFile.toURI(), destinationPathReference);
downloader.downloadArtifact();
// Check the old destination file has been deleted.
Assert.assertFalse(destinationPathReference.exists());
}
@Test
public void testBadSourceUri() throws URISyntaxException, IOException {
PathReference destinationPathReference = this.destinationDirectory.newChild("b.jar");
ensureOldContentPresent(destinationPathReference);
Assert.assertTrue(destinationPathReference.exists());
Downloader downloader = new Downloader(new URI("x:y"), destinationPathReference);
downloader.downloadArtifact();
// Check the old destination file has been deleted.
Assert.assertFalse(destinationPathReference.exists());
}
}