/*
* RUserExternalRepositoryDirectoryCallsTest.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.RRepositoryDirectory;
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.FileInputStream;
import java.net.URL;
import java.util.List;
import static org.junit.Assert.*;
public class RUserExternalRepositoryDirectoryCallsTest {
RClient rClient = null;
RUser rUser = null;
public RUserExternalRepositoryDirectoryCallsTest() {
}
@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 RUserRepositoryFileCalls.listExternalDirectories().
*/
@Test
public void testUserRepositorylistExternalDirectories() {
// Test variables.
List<RRepositoryDirectory> listExternalDirectories = null;
int totalUserFiles = 0;
int totalSystemFiles = 0;
int userFilesNotOwnedByCaller = 0;
int systemFilesOwnedByCaller = 0;
// Test error handling.
Exception exception = null;
String exceptionMsg = "";
Exception cleanupException = null;
String cleanupExceptionMsg = "";
// Test.
try {
listExternalDirectories = rUser.listExternalDirectories();
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories failed: ";
}
try {
// Determine if all files found in user directories are
// owned by the caller and if all files found in system
// directories are owned by users other than the caller.
for(RRepositoryDirectory dir : listExternalDirectories) {
if(dir.about().systemDirectory) { // system directory
totalSystemFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(file.about().authors.contains("testuser")) {
systemFilesOwnedByCaller += 1;
}
}
} else { // user directory
totalUserFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(!file.about().authors.contains("testuser")) {
userFilesNotOwnedByCaller += 1;
}
}
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "file.about().authors.contains failed: ";
}
// Test cleanup.
if (exception == null) {
// Test assertions.
assertEquals(totalUserFiles, 0);
assertEquals(totalSystemFiles, 0);
assertEquals(userFilesNotOwnedByCaller, 0);
assertEquals(systemFilesOwnedByCaller, 0);
} else {
fail(exceptionMsg + exception.getMessage());
}
// Test cleanup errors.
if (cleanupException != null) {
fail(cleanupExceptionMsg + cleanupException.getMessage());
}
}
/**
* Test RUserRepositoryFileCalls.listExternalDirectories(true, false, false).
*/
@Test
public void testUserRepositorylistExternalDirectoriesUserFiles() {
// Test variables.
List<RRepositoryDirectory> listExternalDirectories = null;
int totalUserFiles = 0;
int totalSystemFiles = 0;
int userFilesNotOwnedByCaller = 0;
int systemFilesOwnedByCaller = 0;
// Test error handling.
Exception exception = null;
String exceptionMsg = "";
Exception cleanupException = null;
String cleanupExceptionMsg = "";
// Test.
try {
listExternalDirectories =
rUser.listExternalDirectories(true, false, false);
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories failed: ";
}
try {
// Determine if all files found in user directories are
// owned by the caller and if all files found in system
// directories are owned by users other than the caller.
for(RRepositoryDirectory dir : listExternalDirectories) {
if(dir.about().systemDirectory) { // system directory
totalSystemFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(file.about().authors.contains("testuser")) {
systemFilesOwnedByCaller += 1;
}
}
} else { // user directory
totalUserFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(!file.about().authors.contains("testuser")) {
userFilesNotOwnedByCaller += 1;
}
}
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "file.about().authors.contains failed: ";
}
// Test cleanup.
if (exception == null) {
// Test assertions.
assertEquals(totalSystemFiles, 0);
assertEquals(userFilesNotOwnedByCaller, 0);
assertEquals(systemFilesOwnedByCaller, 0);
} else {
fail(exceptionMsg + exception.getMessage());
}
// Test cleanup errors.
if (cleanupException != null) {
fail(cleanupExceptionMsg + cleanupException.getMessage());
}
}
/**
* Test RUserRepositoryFileCalls.listExternalDirectories(false, true, false).
*/
@Test
public void testUserRepositorylistExternalDirectoriesSharedFiles() {
// Test variables.
List<RRepositoryDirectory> listExternalDirectories = null;
int totalUserFiles = 0;
int totalSystemFiles = 0;
int userFilesNotOwnedByCaller = 0;
int systemFilesOwnedByCaller = 0;
// Test error handling.
Exception exception = null;
String exceptionMsg = "";
Exception cleanupException = null;
String cleanupExceptionMsg = "";
// Test.
try {
listExternalDirectories =
rUser.listExternalDirectories(false, true, false);
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories failed: ";
}
try {
// Determine if all files found in user directories are
// owned by the caller and if all files found in system
// directories are owned by users other than the caller.
for(RRepositoryDirectory dir : listExternalDirectories) {
if(dir.about().systemDirectory) { // system directory
totalSystemFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(file.about().authors.contains("testuser")) {
systemFilesOwnedByCaller += 1;
}
}
} else { // user directory
totalUserFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(!file.about().authors.contains("testuser")) {
userFilesNotOwnedByCaller += 1;
}
}
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "file.about().authors.contains failed: ";
}
// Test cleanup.
if (exception == null) {
// Test assertions.
assertEquals(totalUserFiles, 0);
assertEquals(userFilesNotOwnedByCaller, 0);
assertEquals(systemFilesOwnedByCaller, 0);
} else {
fail(exceptionMsg + exception.getMessage());
}
// Test cleanup errors.
if (cleanupException != null) {
fail(cleanupExceptionMsg + cleanupException.getMessage());
}
}
/**
* Test RUserRepositoryFileCalls.listExternalDirectories(false, true, false).
*/
@Test
public void testUserRepositorylistExternalDirectoriesPublicFiles() {
// Test variables.
List<RRepositoryDirectory> listExternalDirectories = null;
int totalUserFiles = 0;
int totalSystemFiles = 0;
int userFilesNotOwnedByCaller = 0;
int systemFilesOwnedByCaller = 0;
// Test error handling.
Exception exception = null;
String exceptionMsg = "";
Exception cleanupException = null;
String cleanupExceptionMsg = "";
// Test.
try {
listExternalDirectories =
rUser.listExternalDirectories(false, false, true);
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories failed: ";
}
try {
// Determine if all files found in user directories are
// owned by the caller and if all files found in system
// directories are owned by users other than the caller.
for(RRepositoryDirectory dir : listExternalDirectories) {
if(dir.about().systemDirectory) { // system directory
totalSystemFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(file.about().authors.contains("testuser")) {
systemFilesOwnedByCaller += 1;
}
}
} else { // user directory
totalUserFiles += dir.about().files.size();
for (RRepositoryFile file : dir.about().files) {
if(!file.about().authors.contains("testuser")) {
userFilesNotOwnedByCaller += 1;
}
}
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "file.about().authors.contains failed: ";
}
// Test cleanup.
if (exception == null) {
// Test assertions.
assertEquals(totalUserFiles, 0);
assertEquals(userFilesNotOwnedByCaller, 0);
assertEquals(systemFilesOwnedByCaller, 0);
} else {
fail(exceptionMsg + exception.getMessage());
}
// Test cleanup errors.
if (cleanupException != null) {
fail(cleanupExceptionMsg + cleanupException.getMessage());
}
}
/**
* Test RUserRepositoryFileCalls.listFiles(categoryFilter, directoryFilter).
*/
@Test
public void testUserRepositoryListExternalDirectoriesGoodFilters() {
// Test variables.
List<RRepositoryDirectory> listDirectories = null;
List<RRepositoryFile> listFilesExampleDirectory = null;
List<RRepositoryFile> listFilesExampleScripts = null;
List<RRepositoryFile> listFilesExampleBinary = null;
String exampleFraudScoreDirectory = "external:root: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 {
listDirectories =
rUser.listExternalDirectories((RRepositoryFile.Category) null,
exampleFraudScoreDirectory);
for(RRepositoryDirectory dir : listDirectories) {
if(dir.about().name.equals(exampleFraudScoreDirectory)) {
listFilesExampleDirectory = dir.about().files;
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories(null, directory) failed: ";
}
if(exception == null) {
try {
listDirectories =
rUser.listExternalDirectories(RRepositoryFile.Category.RSCRIPT,
exampleFraudScoreDirectory);
for(RRepositoryDirectory dir : listDirectories) {
if(dir.about().name.equals(exampleFraudScoreDirectory)) {
listFilesExampleScripts = dir.about().files;
break;
}
}
for(RRepositoryFile scriptFile : listFilesExampleScripts) {
if(scriptFile.about().category !=
RRepositoryFile.Category.RSCRIPT) {
fraudExampleScriptsAreScripts = false;
break;
} else {
fraudExampleScriptsAreScripts = true;
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories(RSCRIPT, directory) failed: ";
}
}
if(exception == null) {
try {
listDirectories =
rUser.listExternalDirectories(RRepositoryFile.Category.RBINARY,
exampleFraudScoreDirectory);
for(RRepositoryDirectory dir : listDirectories) {
if(dir.about().name.equals(exampleFraudScoreDirectory)) {
listFilesExampleBinary = dir.about().files;
break;
}
}
for(RRepositoryFile binFile : listFilesExampleBinary) {
if(binFile.about().category !=
RRepositoryFile.Category.RBINARY) {
fraudExampleBinaryAreBinary = false;
break;
} else {
fraudExampleBinaryAreBinary = true;
}
}
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories(RBINARY, 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 RUserRepositoryDirectoryCalls.listDirectories(categoryFilter, directoryFilter).
*/
@Test
public void testUserRepositoryListExternalDirectoriesBadFilters() {
// Test variables.
List<RRepositoryDirectory> listDirectories = null;
RClientException clientEx = null;
// Test error handling.
Exception exception = null;
String exceptionMsg = "";
Exception cleanupException = null;
String cleanupExceptionMsg = "";
// Test.
try {
listDirectories =
rUser.listExternalDirectories((RRepositoryFile.Category) null,
"external:public:dir-not-found");
} catch (RClientException cex) {
clientEx = cex;
} catch (Exception ex) {
exception = ex;
exceptionMsg = "rUser.listExternalDirectories(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());
}
}
}