Skip to content

Commit

Permalink
add ssh test
Browse files Browse the repository at this point in the history
  • Loading branch information
anh-bolt committed Aug 13, 2024
1 parent a52e8d6 commit 215f0d7
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 12 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ jobs:
sshGroup=${sshGroupRaw%:x*}
echo "adding user to group ${sshGroup}"
sudo useradd -s /bin/bash -d /home/usr -m -g ${sshGroup} -p $(echo pwd | openssl passwd -1 -stdin) usr
sudo -u usr ssh-keygen -t rsa -N "123456" -f /home/usr/.ssh/sftptest
sudo -u usr sh -c 'cat /home/usr/.ssh/sftptest.pub >> /home/usr/.ssh/authorized_keys'
sudo chmod -R 600 /home/usr/.ssh/
sudo chmod 700 /home/usr/.ssh/authorized_keys
sudo cp /home/usr/.ssh/sftptest ${GITHUB_WORKSPACE}/sftp-connector-test/src_test/com/axonivy/connector/sftp/test/sftptest
sudo ssh-keygen -p -P "123456" -N "123456" -m pem -f ${GITHUB_WORKSPACE}/sftp-connector-test/src_test/com/axonivy/connector/sftp/test/sftptest
sudo chown "$(whoami)" ${GITHUB_WORKSPACE}/sftp-connector-test/src_test/com/axonivy/connector/sftp/test/sftptest
cat ${GITHUB_WORKSPACE}/sftp-connector-test/src_test/com/axonivy/connector/sftp/test/sftptest
- name: Setup Maven
uses: stCarolas/setup-maven@v5
Expand Down
3 changes: 0 additions & 3 deletions sftp-connector-test/cms/Files/rsa4096

This file was deleted.

4 changes: 0 additions & 4 deletions sftp-connector-test/cms/Files/rsa4096.pub

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
package com.axonivy.connector.sftp.test;

import static org.assertj.core.api.Assertions.assertThat;

import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.Locale;

import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;

import com.axonivy.connector.sftp.service.SftpClientService;
import com.axonivy.connector.sftp.service.SftpClientService.FileData;

import ch.ivyteam.ivy.bpm.engine.client.BpmClient;
import ch.ivyteam.ivy.bpm.engine.client.element.BpmElement;
import ch.ivyteam.ivy.bpm.engine.client.element.BpmProcess;
import ch.ivyteam.ivy.bpm.engine.client.sub.SubProcessCallResult;
import ch.ivyteam.ivy.bpm.exec.client.IvyProcessTest;
import ch.ivyteam.ivy.cm.ContentObjectValue;
import ch.ivyteam.ivy.cm.IContentObject;
import ch.ivyteam.ivy.environment.Ivy;


/**
* This SftpProcessTest simulates SFTP operations by calling the sub processes:
* SftpUploadFile and SftpDownloadFile.
*
* <p>The test can either be run<ul>
* <li>in the Designer IDE ( <code>right click > run as > JUnit Test </code> )</li>
* <li>or in a Maven continuous integration build pipeline ( <code>mvn clean verify</code> )</li>
* </ul></p>
*
* <p>Detailed guidance on writing these kind of tests can be found in our
* <a href="https://developer.axonivy.com/doc/9.2/concepts/testing/process-testing.html">Process Testing docs</a>
* </p>
*/
@IvyProcessTest(enableWebServer = true)
@Disabled
public class SftpProcessSSHTest {

private static final BpmProcess TEST_HELPER_PROCESS = BpmProcess.path("Sftp/SftpHelper");
private static final BpmProcess TEST_UPLOAD_FILE_PROCESS = BpmProcess.path("Sftp/SftpUploadFile");
private static final BpmProcess TEST_DOWNLOAD_FILE_PROCESS = BpmProcess.path("Sftp/SftpDownloadFile");

private static final String TEST_FILE_NAME = "market_market_connector_sftp.pdf";
private static final long TEST_FILE_SIZE = 207569L;


@Test
@Order(1)
public void callOpenConnection(BpmClient bpmClient) throws Exception {
String prefix = "com_axonivy_connector_sftp_server_";
Ivy.var().set(prefix+"auth", "ssh");
Ivy.var().set(prefix+"password", "");

String keyString = Files.readString(Paths.get(getClass().getResource("sftptest").toURI()));
Ivy.var().set(prefix+"secret_sshkey", keyString);
Ivy.var().set(prefix+"secret_sshpassphrase", "123456");

BpmElement startable = TEST_HELPER_PROCESS.elementName("openConnection()");

SubProcessCallResult result = bpmClient.start()
.subProcess(startable)
.execute() // Callable sub process input arguments
.subResult();

SftpClientService sftpClient = result.param("sftpClient", SftpClientService.class);
assertThat(sftpClient).isNotNull();
sftpClient.close();
}

// @Test
// @Order(2)
// public void callUploadFile(BpmClient bpmClient) {
// InputStream fileToBeUploaded = getClass().getResourceAsStream(TEST_FILE_NAME);

// BpmElement startable = TEST_UPLOAD_FILE_PROCESS.elementName("uploadFile(InputStream,String)");

// SubProcessCallResult result = bpmClient.start()
// .subProcess(startable)
// .execute(fileToBeUploaded, TEST_FILE_NAME) // Callable sub process input arguments
// .subResult();

// Boolean isSuccess = result.param("isSuccess", Boolean.class);
// assertThat(isSuccess).isTrue();
// }

// @Test
// @Order(3)
// public void callUploadIvyFile(BpmClient bpmClient) throws IOException {
// InputStream fileToBeUploaded = getClass().getResourceAsStream(TEST_FILE_NAME);
// java.io.File javaFile = new java.io.File(TEST_FILE_NAME);
// FileUtils.copyInputStreamToFile(fileToBeUploaded, javaFile);

// File ivyFile = new File(TEST_FILE_NAME, true);
// FileUtils.moveFile(javaFile, ivyFile.getJavaFile());

// BpmElement startable = TEST_UPLOAD_FILE_PROCESS.elementName("uploadFile(File)");

// SubProcessCallResult result = bpmClient.start()
// .subProcess(startable)
// .execute(ivyFile) // Callable sub process input arguments
// .subResult();

// Boolean isSuccess = result.param("isSuccess", Boolean.class);
// assertThat(isSuccess).isTrue();
// }

// @Test
// @Order(4)
// public void callListAllFiles(BpmClient bpmClient) {
// BpmElement startable = TEST_DOWNLOAD_FILE_PROCESS.elementName("listAllFiles(String)");

// SubProcessCallResult result = bpmClient.start()
// .subProcess(startable)
// .execute(".") // Callable sub process input arguments
// .subResult();
// List<FileData> listFiles = result.param("listFiles", List.class);
// assertThat(listFiles.size()).isGreaterThanOrEqualTo(1);
// assertThat(listFiles).anyMatch(f -> f.getName().equals(TEST_FILE_NAME));
// }

// @Test
// @Order(5)
// public void callDownloadFile(BpmClient bpmClient) {
// BpmElement startable = TEST_DOWNLOAD_FILE_PROCESS.elementName("downloadFile(String)");

// SubProcessCallResult result = bpmClient.start()
// .subProcess(startable)
// .execute(TEST_FILE_NAME) // Callable sub process input arguments
// .subResult();
// java.io.File downloadedFile = result.param("toFile", java.io.File.class);
// assertThat(downloadedFile.length()).isEqualTo(TEST_FILE_SIZE);
// assertThat(downloadedFile.getName()).isEqualTo(TEST_FILE_NAME);
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Locale;

import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;

Expand All @@ -20,9 +18,6 @@
import ch.ivyteam.ivy.bpm.engine.client.element.BpmProcess;
import ch.ivyteam.ivy.bpm.engine.client.sub.SubProcessCallResult;
import ch.ivyteam.ivy.bpm.exec.client.IvyProcessTest;
import ch.ivyteam.ivy.cm.ContentObjectValue;
import ch.ivyteam.ivy.cm.IContentObject;
import ch.ivyteam.ivy.environment.Ivy;
import ch.ivyteam.ivy.scripting.objects.File;


Expand Down

0 comments on commit 215f0d7

Please sign in to comment.