package org.parosproxy.paros.model;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.mockito.Mockito;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doThrow;
public class FileCopierUnitTest {
private FileCopier fileCopier;
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@Before
public void setUp() throws Exception {
fileCopier = new FileCopier();
tempFolder.create();
}
@Test
public void shouldCopyFileViaPreJava7IO() throws Exception {
// Given
File source = tempFolder.newFile();
FileUtils.writeStringToFile(source, "Test");
File target = tempFolder.newFile();
// When
fileCopier.copyLegacy(source, target);
// Then
assertTrue(FileUtils.contentEquals(source, target));
}
@Test
public void shouldCopyFileViaNIO() throws Exception {
// Given
File source = tempFolder.newFile();
FileUtils.writeStringToFile(source, "Test");
File target = tempFolder.newFile();
// When
fileCopier.copyNIO(source, target);
// Then
assertTrue(FileUtils.contentEquals(source, target));
}
@Test
public void shouldFallbackToPreJava7IOIfNIOFails() throws Exception {
// Given
FileCopier fileCopierStub = Mockito.spy(fileCopier);
doThrow(IOException.class).when(fileCopierStub).copyNIO(any(File.class), any(File.class));
File source = tempFolder.newFile();
FileUtils.writeStringToFile(source, "Test");
File target = tempFolder.newFile();
// When
fileCopierStub.copy(source, target);
// Then
assertTrue(FileUtils.contentEquals(source, target));
}
}