mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-17 20:50:44 +00:00
Merge branch 'feature/CTLE-433-cart-rover-now-extensiv-integration' into integration/sprint-26
This commit is contained in:
@ -59,6 +59,7 @@ import com.kingsrook.qqq.backend.core.actions.values.SearchPossibleValueSourceAc
|
||||
import com.kingsrook.qqq.backend.core.adapters.QInstanceAdapter;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QBadRequestException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException;
|
||||
@ -1634,6 +1635,11 @@ public class QJavalinImplementation
|
||||
statusCode = Objects.requireNonNullElse(statusCode, HttpStatus.Code.NOT_FOUND); // 404
|
||||
respondWithError(context, statusCode, userFacingException.getMessage());
|
||||
}
|
||||
else if(userFacingException instanceof QBadRequestException)
|
||||
{
|
||||
statusCode = Objects.requireNonNullElse(statusCode, HttpStatus.Code.BAD_REQUEST); // 400
|
||||
respondWithError(context, statusCode, userFacingException.getMessage());
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG.info("User-facing exception", e);
|
||||
|
@ -50,6 +50,7 @@ import com.kingsrook.qqq.backend.core.actions.processes.RunProcessAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.reporting.GenerateReportAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.values.QValueFormatter;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QBadRequestException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QNotFoundException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QPermissionDeniedException;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException;
|
||||
@ -280,7 +281,13 @@ public class QJavalinProcessHandler
|
||||
QJavalinImplementation.setupSession(context, new AbstractActionInput());
|
||||
// todo context.contentType(reportFormat.getMimeType());
|
||||
context.header("Content-Disposition", "filename=" + context.pathParam("file"));
|
||||
context.result(new FileInputStream(context.queryParam("filePath")));
|
||||
|
||||
String filePath = context.queryParam("filePath");
|
||||
if(filePath == null)
|
||||
{
|
||||
throw (new QBadRequestException("A filePath was not provided."));
|
||||
}
|
||||
context.result(new FileInputStream(filePath));
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
@ -143,7 +143,7 @@ public class QJavalinScriptsHandler
|
||||
QTableMetaData scriptTable = QContext.getQInstance().getTable(Script.TABLE_NAME);
|
||||
if(scriptTypeTable != null && scriptTable != null && scriptRevisionTable != null)
|
||||
{
|
||||
Map<Serializable, QRecord> scriptTypeMap = GeneralProcessUtils.loadTableToMap(getInput, ScriptType.TABLE_NAME, "id");
|
||||
Map<Serializable, QRecord> scriptTypeMap = GeneralProcessUtils.loadTableToMap(ScriptType.TABLE_NAME, "id");
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// process each associated script type for the table //
|
||||
@ -259,7 +259,7 @@ public class QJavalinScriptsHandler
|
||||
|
||||
if(CollectionUtils.nullSafeHasContents(queryOutput.getRecords()))
|
||||
{
|
||||
GeneralProcessUtils.addForeignRecordsListToRecordList(queryInput, queryOutput.getRecords(), "id", "scriptLogLine", "scriptLogId");
|
||||
GeneralProcessUtils.addForeignRecordsListToRecordList(queryOutput.getRecords(), "id", "scriptLogLine", "scriptLogId");
|
||||
}
|
||||
|
||||
Map<String, Serializable> rs = new HashMap<>();
|
||||
|
@ -84,6 +84,25 @@ class QJavalinImplementationTest extends QJavalinTestBase
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** test getting serverInfo
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void test_serverInfo()
|
||||
{
|
||||
HttpResponse<String> response = Unirest.get(BASE_URL + "/serverInfo").asString();
|
||||
|
||||
assertEquals(200, response.getStatus());
|
||||
JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody());
|
||||
assertTrue(jsonObject.has("startTimeMillis"));
|
||||
assertTrue(jsonObject.has("startTimeHuman"));
|
||||
assertTrue(jsonObject.has("uptimeHuman"));
|
||||
assertTrue(jsonObject.has("uptimeMillis"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** test the table-level meta-data endpoint
|
||||
**
|
||||
|
@ -560,6 +560,34 @@ class QJavalinProcessHandlerTest extends QJavalinTestBase
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** test calling download file endpoint
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void test_downloadFile()
|
||||
{
|
||||
HttpResponse<String> response = Unirest.get(BASE_URL + "/download/myTestFile.txt?filePath=/dev/null").asString();
|
||||
assertEquals(200, response.getStatus());
|
||||
assertEquals("OK", response.getStatusText());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** test calling download file with missing filePath
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void test_downloadFileMissingFilePath()
|
||||
{
|
||||
HttpResponse<String> response = Unirest.get(BASE_URL + "/download/myTestFile.txt").asString();
|
||||
assertEquals(400, response.getStatus());
|
||||
assertTrue(response.getBody().contains("A filePath was not provided"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** test calling for possibleValue
|
||||
**
|
||||
@ -576,4 +604,4 @@ class QJavalinProcessHandlerTest extends QJavalinTestBase
|
||||
assertEquals(1, jsonObject.getJSONArray("options").getJSONObject(0).getInt("id"));
|
||||
assertEquals("Darin Kelkhoff (1)", jsonObject.getJSONArray("options").getJSONObject(0).getString("label"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user