package dw.cli.commands.itest;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static junitx.framework.FileAssert.assertBinaryEquals;
import java.io.File;
import dw.cli.Output;
import dw.cli.itest.TestHelper;
import dw.xmlrpc.itest.TestParams;
public class Test_AttachmentPutterAndDeleter extends TestHelper {
private static String ns = "putAndDelete_ns";
private static String localFileName = "localToto.gif";
private final File localFile = new File(localFileName);
@org.junit.Before
@org.junit.After
public void clean() throws Exception {
localFile.delete();
runWithArguments("deleteAttachment", ns + ":toto.gif");
}
@org.junit.Test
public void putAndDeleteAttachment() throws Exception {
assertFalse(runWithArguments("getAttachments", ns).out.contains("toto.gif"));
Output outputPut = runWithArguments("putAttachment", ns + ":toto.gif", TestParams.localFileToUpload);
assertSuccess("", outputPut);
assertTrue(runWithArguments("getAttachments", ns).out.contains("toto.gif"));
Output outputDelete = runWithArguments("deleteAttachment", ns + ":toto.gif");
assertSuccess("", outputDelete);
assertFalse(runWithArguments("getAttachments", ns).out.contains("toto.gif"));
}
@org.junit.Test
public void putAttachmentWontOverwriteWithoutTheForceOption() throws Exception{
//Ensure we start in a clean state
runWithArguments("putAttachment", ns + ":toto.gif", TestParams.localFileToUpload);
runWithArguments("getAttachment", ns + ":toto.gif", localFileName);
assertBinaryEquals(new File(TestParams.localFileToUpload), localFile);
//Try to override the distant file without providing the flag
Output output = runWithArguments("putAttachment", ns + ":toto.gif", TestParams.localFile2ToUpload);
assertGenericError(output);
//Assert the attachment hasn't been overrided
runWithArguments("getAttachment", ns + ":toto.gif", localFileName);
assertBinaryEquals(new File(TestParams.localFileToUpload), localFile);
}
@org.junit.Test
public void putAttachmentWillOverwriteWithTheForceOption() throws Exception{
//Ensure we start in a clean state
runWithArguments("putAttachment", ns + ":toto.gif", TestParams.localFileToUpload);
runWithArguments("getAttachment", ns + ":toto.gif", localFileName);
assertBinaryEquals(new File(TestParams.localFileToUpload), localFile);
//Try to override the distant file without providing the flag
Output output = runWithArguments("putAttachment", ns + ":toto.gif", "-f", TestParams.localFile2ToUpload);
assertSuccess("", output);
//Assert the attachment hasn't been overrided
runWithArguments("getAttachment", ns + ":toto.gif", localFileName);
assertBinaryEquals(new File(TestParams.localFile2ToUpload), localFile);
}
@org.junit.Test
public void deletingAnUnexistingFileYieldsAnErrorOnlyIfNoForceFlagHasBeenProvided() throws Exception {
Output outputForceLess = runWithArguments("deleteAttachment", ns + ":unknown_file.gif");
assertGenericError(outputForceLess);
Output outputForced = runWithArguments("deleteAttachment", "-f", ns + ":unknown_file.gif");
assertSuccess("", outputForced);
}
@org.junit.Test
public void getAFileToANonWritablePlaceDoesntCrash() throws Exception{
//Ensure we start in a clean state
runWithArguments("putAttachment", ns + ":toto.gif", TestParams.localFileToUpload);
runWithArguments("getAttachment", ns + ":toto.gif", localFileName);
assertTrue(runWithArguments("getAttachments", ns).out.contains("toto.gif"));
//Actually test
Output output = runWithArguments("getAttachment", ns + ":toto.gif", "/home/whatever/icantwrite/here.jpg");
assertGenericError(output);
}
@org.junit.Test
public void putAFileWhichDoesntExistDoesntCrash() throws Exception {
Output output = runWithArguments("putAttachment", ns + ":toto.gif", "unexistingFile.jpg");
assertGenericError(output);
}
}