mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-19 05:30:43 +00:00
Move makeConnection to its own method (for use by test process); add postAction to try to close the things; add looking for 'path' criteria and adding it to readDir call
This commit is contained in:
@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.module.filesystem.sftp;
|
||||
import com.kingsrook.qqq.backend.module.filesystem.BaseTest;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.testcontainers.containers.Container;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
import org.testcontainers.utility.MountableFile;
|
||||
|
||||
@ -63,7 +62,7 @@ public class BaseSFTPTest extends BaseTest
|
||||
|
||||
for(int i = 0; i < 5; i++)
|
||||
{
|
||||
sftpContainer.copyFileToContainer(MountableFile.forClasspathResource("files/testfile.txt"), REMOTE_DIR + "/testfile-" + i + ".txt");
|
||||
copyFileToContainer("files/testfile.txt", REMOTE_DIR + "/testfile-" + i + ".txt");
|
||||
}
|
||||
|
||||
grantUploadFilesDirWritePermission();
|
||||
@ -72,6 +71,23 @@ public class BaseSFTPTest extends BaseTest
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
***************************************************************************/
|
||||
protected static void copyFileToContainer(String sourceFileClasspathResourceName, String fullRemotePath)
|
||||
{
|
||||
sftpContainer.copyFileToContainer(MountableFile.forClasspathResource(sourceFileClasspathResourceName), fullRemotePath);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
***************************************************************************/
|
||||
protected static void rmrfInContainer(String fullRemotePath) throws Exception
|
||||
{
|
||||
sftpContainer.execInContainer("rm", "-rf", fullRemotePath);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
@ -133,7 +149,6 @@ public class BaseSFTPTest extends BaseTest
|
||||
***************************************************************************/
|
||||
protected void mkdirInSftpContainerUnderHomeTestuser(String path) throws Exception
|
||||
{
|
||||
Container.ExecResult mkdir = sftpContainer.execInContainer("mkdir", "-p", "/home/testuser/" + path);
|
||||
System.out.println(mkdir.getExitCode());
|
||||
sftpContainer.execInContainer("mkdir", "-p", "/home/testuser/" + path);
|
||||
}
|
||||
}
|
||||
|
@ -23,11 +23,15 @@ package com.kingsrook.qqq.backend.module.filesystem.sftp.actions;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
@ -49,7 +53,7 @@ class SFTPQueryActionTest extends BaseSFTPTest
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void testQuery1() throws QException
|
||||
public void testSimpleQuery() throws QException
|
||||
{
|
||||
QueryInput queryInput = new QueryInput(TestUtils.TABLE_NAME_SFTP_FILE);
|
||||
QueryOutput queryOutput = new QueryAction().execute(queryInput);
|
||||
@ -57,6 +61,70 @@ class SFTPQueryActionTest extends BaseSFTPTest
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testQueryWithPath() throws Exception
|
||||
{
|
||||
String subfolderPath = "/home/" + USERNAME + "/" + BACKEND_FOLDER + "/" + TABLE_FOLDER + "/subfolder/";
|
||||
try
|
||||
{
|
||||
copyFileToContainer("files/testfile.txt", subfolderPath + "/sub1.txt");
|
||||
copyFileToContainer("files/testfile.txt", subfolderPath + "/sub2.txt");
|
||||
|
||||
QueryInput queryInput = new QueryInput(TestUtils.TABLE_NAME_SFTP_FILE)
|
||||
.withFilter(new QQueryFilter(new QFilterCriteria("path", QCriteriaOperator.EQUALS, "subfolder")));
|
||||
QueryOutput queryOutput = new QueryAction().execute(queryInput);
|
||||
Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows from subfolder path query");
|
||||
}
|
||||
finally
|
||||
{
|
||||
rmrfInContainer(subfolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
void testQueryWithPathAndNameLike() throws Exception
|
||||
{
|
||||
String subfolderPath = "/home/" + USERNAME + "/" + BACKEND_FOLDER + "/" + TABLE_FOLDER + "/subfolder/";
|
||||
try
|
||||
{
|
||||
copyFileToContainer("files/testfile.txt", subfolderPath + "/sub1.txt");
|
||||
copyFileToContainer("files/testfile.txt", subfolderPath + "/sub2.txt");
|
||||
copyFileToContainer("files/testfile.txt", subfolderPath + "/who.txt");
|
||||
|
||||
Map<String, Integer> patternExpectedCountMap = Map.of(
|
||||
"%.txt", 3,
|
||||
"sub%", 2,
|
||||
"%1%", 1,
|
||||
"%", 3,
|
||||
"*", 0
|
||||
);
|
||||
|
||||
for(Map.Entry<String, Integer> entry : patternExpectedCountMap.entrySet())
|
||||
{
|
||||
QueryInput queryInput = new QueryInput(TestUtils.TABLE_NAME_SFTP_FILE).withFilter(new QQueryFilter()
|
||||
.withCriteria(new QFilterCriteria("path", QCriteriaOperator.EQUALS, "subfolder"))
|
||||
.withCriteria(new QFilterCriteria("baseName", QCriteriaOperator.LIKE, entry.getKey())));
|
||||
QueryOutput queryOutput = new QueryAction().execute(queryInput);
|
||||
Assertions.assertEquals(entry.getValue(), queryOutput.getRecords().size(), "Expected # of rows from subfolder path, baseName like: " + entry.getKey());
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
rmrfInContainer(subfolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@ -71,7 +139,7 @@ class SFTPQueryActionTest extends BaseSFTPTest
|
||||
|
||||
mkdirInSftpContainerUnderHomeTestuser("empty-folder/files");
|
||||
|
||||
QueryInput queryInput = new QueryInput(TestUtils.TABLE_NAME_SFTP_FILE_VARIANTS);
|
||||
QueryInput queryInput = new QueryInput(TestUtils.TABLE_NAME_SFTP_FILE_VARIANTS);
|
||||
assertThatThrownBy(() -> new QueryAction().execute(queryInput))
|
||||
.hasMessageContaining("Could not find Backend Variant information for Backend");
|
||||
|
||||
@ -91,15 +159,4 @@ class SFTPQueryActionTest extends BaseSFTPTest
|
||||
// Assertions.assertEquals(5, queryOutput.getRecords().size(), "Expected # of rows from unfiltered query");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
private QueryInput initQueryRequest() throws QException
|
||||
{
|
||||
QueryInput queryInput = new QueryInput();
|
||||
return queryInput;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user