From 41ac1b813bbede303706af81115a93663fe588c6 Mon Sep 17 00:00:00 2001 From: Sean Wells Date: Wed, 27 Apr 2016 12:51:39 -0700 Subject: [PATCH] test (repository): Added new test spec for repository files --- .../RUserDefaultRepositoryFileCallsTest.java | 1886 +++++++++-------- 1 file changed, 998 insertions(+), 888 deletions(-) diff --git a/test/src/test/java/com/revo/deployr/client/api/RUserDefaultRepositoryFileCallsTest.java b/test/src/test/java/com/revo/deployr/client/api/RUserDefaultRepositoryFileCallsTest.java index a82aba0..9b9eab9 100644 --- a/test/src/test/java/com/revo/deployr/client/api/RUserDefaultRepositoryFileCallsTest.java +++ b/test/src/test/java/com/revo/deployr/client/api/RUserDefaultRepositoryFileCallsTest.java @@ -1,888 +1,998 @@ -/* - * RUserDefaultRepositoryFileCallsTest.java - * - * Copyright (C) 2010-2016, Microsoft Corporation - * - * This program is licensed to you under the terms of Version 2.0 of the - * Apache License. This program is distributed WITHOUT - * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, - * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the - * Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) for more details. - * - */ -package com.revo.deployr.client.api; - -import com.revo.deployr.DeployrUtil; -import com.revo.deployr.client.RClient; -import com.revo.deployr.client.RClientException; -import com.revo.deployr.client.RRepositoryFile; -import com.revo.deployr.client.RUser; -import com.revo.deployr.client.auth.basic.RBasicAuthentication; -import com.revo.deployr.client.factory.RClientFactory; -import com.revo.deployr.client.params.RepoUploadOptions; -import org.junit.*; - -import java.io.File; -import java.io.InputStream; -import java.io.FileInputStream; -import java.net.URL; -import java.util.List; - -import static org.junit.Assert.*; - -public class RUserDefaultRepositoryFileCallsTest { - - RClient rClient = null; - RUser rUser = null; - - public RUserDefaultRepositoryFileCallsTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - try { - String url = System.getProperty("connection.protocol") + - System.getProperty("connection.endpoint"); - if (url == null) { - fail("setUp: connection.[protocol|endpoint] null."); - } - boolean allowSelfSigned = - Boolean.valueOf(System.getProperty("allow.SelfSignedSSLCert")); - rClient =RClientFactory.createClient(url, allowSelfSigned); - RBasicAuthentication rAuthentication = new RBasicAuthentication("testuser", System.getProperty("password.testuser")); - String expResultName = "testuser"; - rUser = rClient.login(rAuthentication); - assertNotNull(rUser); - - } catch (Exception ex) { - - if (rClient != null) { - rClient.release(); - } - fail("setUp: " + ex); - } - } - - @After - public void tearDown() { - if (rClient != null) { - rClient.release(); - } - } - - /** - * Test of about method, of class RRepositoryFile. - */ - @Test - public void testUserRepositoryAboutFile() { - - // Test variables. - String text = "this is a line of text"; - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String actualRepoFileType = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - String expRepoFileType; - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - InputStream downStream = null; - String urlData = ""; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "Repository File About"; - expRepoFileType = "text/plain"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.writeFile(text, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.writeFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - actualRepoFileType = repoFile.about().type; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - downStream = repoFile.download(); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - urlData = DeployrUtil.getDataFromStream(downStream); - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertEquals(expRepoFileType, actualRepoFileType); - assertEquals(DeployrUtil.encodeString(text), - DeployrUtil.encodeString(urlData)); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test of listFiles method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryListFiles() { - - // Test variables. - String text = "this is a line of text"; - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - InputStream downStream = null; - String urlData = ""; - List listFiles = null; - boolean repoFileFound = false; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "Repository File List"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.writeFile(text, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.writeFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - downStream = repoFile.download(); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - try { - listFiles = rUser.listFiles(); - // search for filename - for (RRepositoryFile file : listFiles) { - if (file.about().filename.equalsIgnoreCase(expRepoFileName)) { - repoFileFound = true; - break; - } - } - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles failed: "; - } - } - - if (exception == null) { - urlData = DeployrUtil.getDataFromStream(downStream); - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertTrue(listFiles.size() > 0); - assertTrue(repoFileFound); - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test RUserRepositoryFileCalls.listFiles(categoryFilter, directoryFilter). - */ - @Test - public void testUserRepositoryListFilesGoodFilters() { - - // Test variables. - List listFilesExampleDirectory = null; - List listFilesExampleScripts = null; - List listFilesExampleBinary = null; - String exampleFraudScoreDirectory = "example-fraud-score"; - int fraudExampleTotalFileCount = 2; - int fraudExampleScriptFileCount = 1; - boolean fraudExampleScriptsAreScripts = false; - int fraudExampleBinaryFileCount = 1; - boolean fraudExampleBinaryAreBinary = false; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - try { - listFilesExampleDirectory = - rUser.listFiles((RRepositoryFile.Category) null, - exampleFraudScoreDirectory); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles(null, directory) failed: "; - } - - if(exception == null) { - - try { - listFilesExampleScripts = - rUser.listFiles(RRepositoryFile.Category.RSCRIPT, - exampleFraudScoreDirectory); - - for(RRepositoryFile scriptFile : listFilesExampleScripts) { - if(scriptFile.about().category != - RRepositoryFile.Category.RSCRIPT) { - fraudExampleScriptsAreScripts = false; - break; - } else { - fraudExampleScriptsAreScripts = true; - } - } - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles(RSCRIPT, directory) failed: "; - } - } - - if(exception == null) { - - try { - listFilesExampleBinary = - rUser.listFiles(RRepositoryFile.Category.RBINARY, - exampleFraudScoreDirectory); - - for(RRepositoryFile binFile : listFilesExampleBinary) { - if(binFile.about().category != - RRepositoryFile.Category.RBINARY) { - fraudExampleBinaryAreBinary = false; - break; - } else { - fraudExampleBinaryAreBinary = true; - } - } - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles(RSCRIPT, directory) failed: "; - } - } - - if (exception == null) { - // Test assertions. - assertEquals(fraudExampleTotalFileCount, listFilesExampleDirectory.size()); - assertEquals(fraudExampleScriptFileCount, listFilesExampleScripts.size()); - assertTrue(fraudExampleScriptsAreScripts); - assertEquals(fraudExampleBinaryFileCount, listFilesExampleBinary.size()); - assertTrue(fraudExampleBinaryAreBinary); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test RUserRepositoryFileCalls.listFiles(categoryFilter, directoryFilter). - */ - @Test - public void testUserRepositoryListFilesBadFilters() { - - // Test variables. - List listFiles = null; - RClientException clientEx = null; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - try { - listFiles = - rUser.listFiles((RRepositoryFile.Category) null, - "dir-not-found"); - } catch (RClientException cex) { - clientEx = cex; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles(null, dir-not-found) failed: "; - } - - if (exception == null) { - // Test assertions. - assertNotNull(clientEx); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test of listFiles method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryListFilesShowPublicFiles() { - - // Test variables. - String expRepoFileName = "Histogram of Auto Sales.R"; - List listFiles = null; - String expAuthor = "testuser"; - String actualAuthor = ""; - boolean repoFileFound = false; - boolean archived = false; - boolean shared = false; - boolean published = true; - boolean isPublished = false; - RUser rUserManager = null; - RBasicAuthentication rAuthentication = null; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - - // Test. - - // sign-out as testuser - String expResultName = "testuser"; - try { - rClient.logout(rUser); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rClient.logout failed: "; - } - - // sign-in as admin. Try 5 times - if (exception == null) { - rAuthentication = new RBasicAuthentication("admin", System.getProperty("password.admin")); - for (int i = 0; i < 5; i++) { - try { - Thread.sleep(1000); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "Thread.sleep failed: "; - } - if (exception == null) { - try { - rUserManager = rClient.login(rAuthentication); - } catch (Exception ex) { - if (i < 5) { - continue; - } - exception = ex; - exceptionMsg = "rClient.login failed: "; - } - } - } - } - - if (exception == null) { - try { - listFiles = rUserManager.listFiles(archived, shared, published); - // search for filename - for (RRepositoryFile file : listFiles) { - if (file.about().filename.equalsIgnoreCase(expRepoFileName)) { - repoFileFound = true; - actualAuthor = file.about().author; - isPublished = file.about().published; - break; - } - } - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.listFiles failed: "; - } - } - - if (exception == null) { - // Test assertions. - assertTrue(repoFileFound); - assertTrue(isPublished); - assertEquals(expAuthor, actualAuthor); - } else { - fail(exceptionMsg + exception.getMessage()); - } - } - - /** - * Test of uploadFile method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryUploadFile() { - - // Test variables. - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - File file = new File("/etc/hosts"); - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - InputStream downStream = null; - String urlData = ""; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - //Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "hosts file"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.uploadFile(new FileInputStream(file), options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.uploadFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - downStream = repoFile.download(); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - urlData = DeployrUtil.getDataFromStream(downStream); - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertNotNull(urlData); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test of writeFile method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryWriteFile() { - - // Test variables. - String text = "this is a line of text"; - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - InputStream downStream = null; - String urlData = ""; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "Repository Write File"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.writeFile(text, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.writeFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - downStream = repoFile.download(); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - urlData = DeployrUtil.getDataFromStream(downStream); - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test of writeFile method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryDownloadFile() { - - // Test variables. - String text = "this is a line of text"; - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - InputStream downStream = null; - String urlData = ""; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "User Repository Download File"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.writeFile(text, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.writeFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - downStream = repoFile.download(); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - urlData = DeployrUtil.getDataFromStream(downStream); - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } - - /** - * Test of transferFile method, of class RUserRepositoryFileCalls. - */ - @Test - public void testUserRepositoryTransferFile() { - - // Test variables. - String text = "this is a line of text"; - String actualRepoFileName = ""; - String actualRepoFileDesc = ""; - String actualTransFileName = ""; - String actualTransFileDesc = ""; - String expRepoFileName = ""; - String expRepoFileDesc = ""; - String expTransFileName = ""; - String expTransFileDesc = ""; - RepoUploadOptions options = null; - RRepositoryFile repoFile = null; - String urlData = ""; - String urlTransData = ""; - URL repoURL = null; - URL repoTransURL = null; - RRepositoryFile repoTransFile = null; - long repoFileSize = 0; - long repoTransFileSize = 0; - - // Test error handling. - Exception exception = null; - String exceptionMsg = ""; - Exception cleanupException = null; - String cleanupExceptionMsg = ""; - - // Test. - expRepoFileName = DeployrUtil.getUniqueFileName("txt"); - expRepoFileDesc = "User Repository Download File"; - options = new RepoUploadOptions(); - options.descr = expRepoFileDesc; - options.filename = expRepoFileName; - - try { - repoFile = rUser.writeFile(text, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.writeFile failed: "; - } - - if (exception == null) { - try { - actualRepoFileName = repoFile.about().filename; - actualRepoFileDesc = repoFile.about().descr; - repoFileSize = repoFile.about().size; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.about failed: "; - } - } - - if (exception == null) { - try { - repoURL = repoFile.about().url; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoFile.download failed: "; - } - } - - if (exception == null) { - expTransFileName = DeployrUtil.getUniqueFileName("txt"); - expTransFileDesc = "User Repository Transfer File"; - options = new RepoUploadOptions(); - options.descr = expTransFileDesc; - options.filename = expTransFileName; - try { - repoTransFile = rUser.transferFile(repoURL, options); - } catch (Exception ex) { - exception = ex; - exceptionMsg = "rUser.transferFile failed: "; - } - } - - if (exception == null) { - try { - actualTransFileName = repoTransFile.about().filename; - actualTransFileDesc = repoTransFile.about().descr; - repoTransFileSize = repoTransFile.about().size; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoTransFile.about failed: "; - } - } - - if (exception == null) { - try { - repoTransURL = repoTransFile.about().url; - } catch (Exception ex) { - exception = ex; - exceptionMsg = "repoTransFile.download failed: "; - } - } - - // Test cleanup. - try { - if (repoFile != null) { - repoFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoFile.delete failed: "; - } - - try { - if (repoTransFile != null) { - repoTransFile.delete(); - } - } catch (Exception ex) { - cleanupException = ex; - cleanupExceptionMsg = "repoTransFile.delete failed: "; - } - - if (exception == null) { - // Test assertions. - assertEquals(expRepoFileName, actualRepoFileName); - assertEquals(expRepoFileDesc, actualRepoFileDesc); - assertEquals(repoTransFileSize, repoFileSize); - assertEquals(DeployrUtil.encodeString(urlTransData), - DeployrUtil.encodeString(urlData)); - } else { - fail(exceptionMsg + exception.getMessage()); - } - - // Test cleanup errors. - if (cleanupException != null) { - fail(cleanupExceptionMsg + cleanupException.getMessage()); - } - } -} +/* + * RUserDefaultRepositoryFileCallsTest.java + * + * Copyright (C) 2010-2016, Microsoft Corporation + * + * This program is licensed to you under the terms of Version 2.0 of the + * Apache License. This program is distributed WITHOUT + * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, + * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the + * Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) for more details. + * + */ +package com.revo.deployr.client.api; + +import com.revo.deployr.DeployrUtil; +import com.revo.deployr.client.RClient; +import com.revo.deployr.client.RClientException; +import com.revo.deployr.client.RRepositoryFile; +import com.revo.deployr.client.RUser; +import com.revo.deployr.client.auth.basic.RBasicAuthentication; +import com.revo.deployr.client.factory.RClientFactory; +import com.revo.deployr.client.params.RepoUploadOptions; +import org.junit.*; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.io.InputStream; +import java.io.IOException; +import java.net.URL; +import java.util.List; + +import static org.junit.Assert.*; + +public class RUserDefaultRepositoryFileCallsTest { + + RClient rClient = null; + RUser rUser = null; + + public RUserDefaultRepositoryFileCallsTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + try { + String url = System.getProperty("connection.protocol") + + System.getProperty("connection.endpoint"); + if (url == null) { + fail("setUp: connection.[protocol|endpoint] null."); + } + boolean allowSelfSigned = + Boolean.valueOf(System.getProperty("allow.SelfSignedSSLCert")); + rClient =RClientFactory.createClient(url, allowSelfSigned); + RBasicAuthentication rAuthentication = new RBasicAuthentication("testuser", System.getProperty("password.testuser")); + String expResultName = "testuser"; + rUser = rClient.login(rAuthentication); + assertNotNull(rUser); + + } catch (Exception ex) { + + if (rClient != null) { + rClient.release(); + } + fail("setUp: " + ex); + } + } + + @After + public void tearDown() { + if (rClient != null) { + rClient.release(); + } + } + + /** + * Test of about method, of class RRepositoryFile. + */ + @Test + public void testUserRepositoryAboutFile() { + + // Test variables. + String text = "this is a line of text"; + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String actualRepoFileType = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + String expRepoFileType; + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "Repository File About"; + expRepoFileType = "text/plain"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.writeFile(text, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.writeFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + actualRepoFileType = repoFile.about().type; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertEquals(expRepoFileType, actualRepoFileType); + assertEquals(DeployrUtil.encodeString(text), + DeployrUtil.encodeString(urlData)); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of listFiles method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryListFiles() { + + // Test variables. + String text = "this is a line of text"; + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + List listFiles = null; + boolean repoFileFound = false; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "Repository File List"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.writeFile(text, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.writeFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + try { + listFiles = rUser.listFiles(); + // search for filename + for (RRepositoryFile file : listFiles) { + if (file.about().filename.equalsIgnoreCase(expRepoFileName)) { + repoFileFound = true; + break; + } + } + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertTrue(listFiles.size() > 0); + assertTrue(repoFileFound); + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test RUserRepositoryFileCalls.listFiles(categoryFilter, directoryFilter). + */ + @Test + public void testUserRepositoryListFilesGoodFilters() { + + // Test variables. + List listFilesExampleDirectory = null; + List listFilesExampleScripts = null; + List listFilesExampleBinary = null; + String exampleFraudScoreDirectory = "example-fraud-score"; + int fraudExampleTotalFileCount = 2; + int fraudExampleScriptFileCount = 1; + boolean fraudExampleScriptsAreScripts = false; + int fraudExampleBinaryFileCount = 1; + boolean fraudExampleBinaryAreBinary = false; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + try { + listFilesExampleDirectory = + rUser.listFiles((RRepositoryFile.Category) null, + exampleFraudScoreDirectory); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles(null, directory) failed: "; + } + + if(exception == null) { + + try { + listFilesExampleScripts = + rUser.listFiles(RRepositoryFile.Category.RSCRIPT, + exampleFraudScoreDirectory); + + for(RRepositoryFile scriptFile : listFilesExampleScripts) { + if(scriptFile.about().category != + RRepositoryFile.Category.RSCRIPT) { + fraudExampleScriptsAreScripts = false; + break; + } else { + fraudExampleScriptsAreScripts = true; + } + } + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles(RSCRIPT, directory) failed: "; + } + } + + if(exception == null) { + + try { + listFilesExampleBinary = + rUser.listFiles(RRepositoryFile.Category.RBINARY, + exampleFraudScoreDirectory); + + for(RRepositoryFile binFile : listFilesExampleBinary) { + if(binFile.about().category != + RRepositoryFile.Category.RBINARY) { + fraudExampleBinaryAreBinary = false; + break; + } else { + fraudExampleBinaryAreBinary = true; + } + } + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles(RSCRIPT, directory) failed: "; + } + } + + if (exception == null) { + // Test assertions. + assertEquals(fraudExampleTotalFileCount, listFilesExampleDirectory.size()); + assertEquals(fraudExampleScriptFileCount, listFilesExampleScripts.size()); + assertTrue(fraudExampleScriptsAreScripts); + assertEquals(fraudExampleBinaryFileCount, listFilesExampleBinary.size()); + assertTrue(fraudExampleBinaryAreBinary); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test RUserRepositoryFileCalls.listFiles(categoryFilter, directoryFilter). + */ + @Test + public void testUserRepositoryListFilesBadFilters() { + + // Test variables. + List listFiles = null; + RClientException clientEx = null; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + try { + listFiles = + rUser.listFiles((RRepositoryFile.Category) null, + "dir-not-found"); + } catch (RClientException cex) { + clientEx = cex; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles(null, dir-not-found) failed: "; + } + + if (exception == null) { + // Test assertions. + assertNotNull(clientEx); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of listFiles method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryListFilesShowPublicFiles() { + + // Test variables. + String expRepoFileName = "Histogram of Auto Sales.R"; + List listFiles = null; + String expAuthor = "testuser"; + String actualAuthor = ""; + boolean repoFileFound = false; + boolean archived = false; + boolean shared = false; + boolean published = true; + boolean isPublished = false; + RUser rUserManager = null; + RBasicAuthentication rAuthentication = null; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + + // Test. + + // sign-out as testuser + String expResultName = "testuser"; + try { + rClient.logout(rUser); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rClient.logout failed: "; + } + + // sign-in as admin. Try 5 times + if (exception == null) { + rAuthentication = new RBasicAuthentication("admin", System.getProperty("password.admin")); + for (int i = 0; i < 5; i++) { + try { + Thread.sleep(1000); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "Thread.sleep failed: "; + } + if (exception == null) { + try { + rUserManager = rClient.login(rAuthentication); + } catch (Exception ex) { + if (i < 5) { + continue; + } + exception = ex; + exceptionMsg = "rClient.login failed: "; + } + } + } + } + + if (exception == null) { + try { + listFiles = rUserManager.listFiles(archived, shared, published); + // search for filename + for (RRepositoryFile file : listFiles) { + if (file.about().filename.equalsIgnoreCase(expRepoFileName)) { + repoFileFound = true; + actualAuthor = file.about().author; + isPublished = file.about().published; + break; + } + } + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.listFiles failed: "; + } + } + + if (exception == null) { + // Test assertions. + assertTrue(repoFileFound); + assertTrue(isPublished); + assertEquals(expAuthor, actualAuthor); + } else { + fail(exceptionMsg + exception.getMessage()); + } + } + + /** + * Test of uploadFile method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryUploadFile() { + + // Test variables. + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + File file = new File("/etc/hosts"); + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + //Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "hosts file"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.uploadFile(new FileInputStream(file), options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.uploadFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertNotNull(urlData); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of uploadFile method with a large file, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryUploadLargeFile() throws IOException { + + // Test variables. + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + + File file = GetRandomFile(10 * 1024 * 1024 + 5); + long expectedLength = file.length(); + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + //Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "some large file"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.uploadFile(new FileInputStream(file), options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.uploadFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if(file != null) { + file.delete(); + } + + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertNotNull(urlData); + assertEquals(expectedLength, urlData.length()); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of writeFile method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryWriteFile() { + + // Test variables. + String text = "this is a line of text"; + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "Repository Write File"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.writeFile(text, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.writeFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of writeFile method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryDownloadFile() { + + // Test variables. + String text = "this is a line of text"; + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + InputStream downStream = null; + String urlData = ""; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "User Repository Download File"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.writeFile(text, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.writeFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + downStream = repoFile.download(); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + urlData = DeployrUtil.getDataFromStream(downStream); + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertEquals(DeployrUtil.encodeString(text), DeployrUtil.encodeString(urlData)); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + /** + * Test of transferFile method, of class RUserRepositoryFileCalls. + */ + @Test + public void testUserRepositoryTransferFile() { + + // Test variables. + String text = "this is a line of text"; + String actualRepoFileName = ""; + String actualRepoFileDesc = ""; + String actualTransFileName = ""; + String actualTransFileDesc = ""; + String expRepoFileName = ""; + String expRepoFileDesc = ""; + String expTransFileName = ""; + String expTransFileDesc = ""; + RepoUploadOptions options = null; + RRepositoryFile repoFile = null; + String urlData = ""; + String urlTransData = ""; + URL repoURL = null; + URL repoTransURL = null; + RRepositoryFile repoTransFile = null; + long repoFileSize = 0; + long repoTransFileSize = 0; + + // Test error handling. + Exception exception = null; + String exceptionMsg = ""; + Exception cleanupException = null; + String cleanupExceptionMsg = ""; + + // Test. + expRepoFileName = DeployrUtil.getUniqueFileName("txt"); + expRepoFileDesc = "User Repository Download File"; + options = new RepoUploadOptions(); + options.descr = expRepoFileDesc; + options.filename = expRepoFileName; + + try { + repoFile = rUser.writeFile(text, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.writeFile failed: "; + } + + if (exception == null) { + try { + actualRepoFileName = repoFile.about().filename; + actualRepoFileDesc = repoFile.about().descr; + repoFileSize = repoFile.about().size; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.about failed: "; + } + } + + if (exception == null) { + try { + repoURL = repoFile.about().url; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoFile.download failed: "; + } + } + + if (exception == null) { + expTransFileName = DeployrUtil.getUniqueFileName("txt"); + expTransFileDesc = "User Repository Transfer File"; + options = new RepoUploadOptions(); + options.descr = expTransFileDesc; + options.filename = expTransFileName; + try { + repoTransFile = rUser.transferFile(repoURL, options); + } catch (Exception ex) { + exception = ex; + exceptionMsg = "rUser.transferFile failed: "; + } + } + + if (exception == null) { + try { + actualTransFileName = repoTransFile.about().filename; + actualTransFileDesc = repoTransFile.about().descr; + repoTransFileSize = repoTransFile.about().size; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoTransFile.about failed: "; + } + } + + if (exception == null) { + try { + repoTransURL = repoTransFile.about().url; + } catch (Exception ex) { + exception = ex; + exceptionMsg = "repoTransFile.download failed: "; + } + } + + // Test cleanup. + try { + if (repoFile != null) { + repoFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoFile.delete failed: "; + } + + try { + if (repoTransFile != null) { + repoTransFile.delete(); + } + } catch (Exception ex) { + cleanupException = ex; + cleanupExceptionMsg = "repoTransFile.delete failed: "; + } + + if (exception == null) { + // Test assertions. + assertEquals(expRepoFileName, actualRepoFileName); + assertEquals(expRepoFileDesc, actualRepoFileDesc); + assertEquals(repoTransFileSize, repoFileSize); + assertEquals(DeployrUtil.encodeString(urlTransData), + DeployrUtil.encodeString(urlData)); + } else { + fail(exceptionMsg + exception.getMessage()); + } + + // Test cleanup errors. + if (cleanupException != null) { + fail(cleanupExceptionMsg + cleanupException.getMessage()); + } + } + + private File GetRandomFile(int length) throws IOException { + int remainingLength = length; + + File file = File.createTempFile("test", ".tmp"); + BufferedWriter bw = new BufferedWriter(new FileWriter(file)); + + while(remainingLength > 0) { + bw.write("A"); + remainingLength--; + } + + bw.close(); + return file; + } +}