Expand javalin tests

This commit is contained in:
2023-05-30 13:48:26 -05:00
parent 364e9f420b
commit 794fb5e87a
4 changed files with 133 additions and 24 deletions

View File

@ -22,6 +22,8 @@
package com.kingsrook.qqq.backend.javalin; package com.kingsrook.qqq.backend.javalin;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable; import java.io.Serializable;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@ -185,6 +187,63 @@ class QJavalinImplementationTest extends QJavalinTestBase
JSONObject values = jsonObject.getJSONObject("values"); JSONObject values = jsonObject.getJSONObject("values");
assertTrue(values.has("firstName")); assertTrue(values.has("firstName"));
assertTrue(values.has("id")); assertTrue(values.has("id"));
assertTrue(values.has("photo"));
JSONObject displayValues = jsonObject.getJSONObject("displayValues");
assertEquals("darin-photo.png", displayValues.getString("photo"));
////////////////////////////////////////////////////
// make sure person 2 doesn't have the blob value //
////////////////////////////////////////////////////
response = Unirest.get(BASE_URL + "/data/person/2").asString();
assertEquals(200, response.getStatus());
jsonObject = JsonUtils.toJSONObject(response.getBody());
values = jsonObject.getJSONObject("values");
assertFalse(values.has("photo"));
}
/*******************************************************************************
** test downloading a blob file
**
*******************************************************************************/
@Test
public void test_dataDownloadRecordField()
{
HttpResponse<String> response = Unirest.get(BASE_URL + "/data/person/1/photo/darin-photo.png").asString();
assertEquals(200, response.getStatus());
assertThat(response.getHeaders().get("content-type").get(0)).contains("image");
response = Unirest.get(BASE_URL + "/data/person/1/photo/darin-photo.png?download=1").asString();
assertEquals(200, response.getStatus());
assertThat(response.getHeaders().get("content-disposition").get(0))
.contains("attachment")
.contains("darin-photo.png");
/////////////////////////
// bad record id = 404 //
/////////////////////////
response = Unirest.get(BASE_URL + "/data/person/-1/photo/darin-photo.png").asString();
assertEquals(404, response.getStatus());
//////////////////////////
// bad field name = 404 //
//////////////////////////
response = Unirest.get(BASE_URL + "/data/person/1/notPhoto/darin-photo.png").asString();
assertEquals(404, response.getStatus());
/////////////////////////////
// missing file name = 404 //
/////////////////////////////
response = Unirest.get(BASE_URL + "/data/person/1/photo").asString();
assertEquals(404, response.getStatus());
//////////////////////////
// bad table name = 404 //
//////////////////////////
response = Unirest.get(BASE_URL + "/data/notPerson/1/photo/darin-photo.png").asString();
assertEquals(404, response.getStatus());
} }
@ -431,7 +490,9 @@ class QJavalinImplementationTest extends QJavalinTestBase
** **
*******************************************************************************/ *******************************************************************************/
@Test @Test
public void test_dataInsertMultipartForm() public void test_dataInsertMultipartForm() throws IOException
{
try(InputStream photoInputStream = getClass().getResourceAsStream("/photo.png"))
{ {
HttpResponse<String> response = Unirest.post(BASE_URL + "/data/person") HttpResponse<String> response = Unirest.post(BASE_URL + "/data/person")
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
@ -439,6 +500,7 @@ class QJavalinImplementationTest extends QJavalinTestBase
.field("firstName", "Bobby") .field("firstName", "Bobby")
.field("lastName", "Hull") .field("lastName", "Hull")
.field("email", "bobby@hull.com") .field("email", "bobby@hull.com")
.field("photo", photoInputStream.readAllBytes(), "image")
.asString(); .asString();
assertEquals(200, response.getStatus()); assertEquals(200, response.getStatus());
@ -454,6 +516,8 @@ class QJavalinImplementationTest extends QJavalinTestBase
assertEquals("Bobby", values0.getString("firstName")); assertEquals("Bobby", values0.getString("firstName"));
assertTrue(values0.has("id")); assertTrue(values0.has("id"));
assertEquals(7, values0.getInt("id")); assertEquals(7, values0.getInt("id"));
assertTrue(values0.has("photo"));
}
} }
@ -718,4 +782,35 @@ class QJavalinImplementationTest extends QJavalinTestBase
assertEquals(5, jsonObject.getJSONArray("options").getJSONObject(1).getInt("id")); assertEquals(5, jsonObject.getJSONArray("options").getJSONObject(1).getInt("id"));
} }
/*******************************************************************************
**
*******************************************************************************/
@Test
void testServerInfo()
{
HttpResponse<String> response = Unirest.get(BASE_URL + "/serverInfo").asString();
assertEquals(200, response.getStatus());
JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody());
assertNotNull(jsonObject);
assertTrue(jsonObject.has("startTimeMillis"));
}
/*******************************************************************************
**
*******************************************************************************/
@Test
void testAuthenticationMetaData()
{
HttpResponse<String> response = Unirest.get(BASE_URL + "/metaData/authentication").asString();
assertEquals(200, response.getStatus());
JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody());
assertNotNull(jsonObject);
assertTrue(jsonObject.has("name"));
assertTrue(jsonObject.has("type"));
}
} }

View File

@ -44,6 +44,8 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeType; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeType;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeUsage;
import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.AdornmentType;
import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAdornment;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinOn; import com.kingsrook.qqq.backend.core.model.metadata.joins.JoinOn;
@ -229,7 +231,7 @@ public class TestUtils
*******************************************************************************/ *******************************************************************************/
public static QTableMetaData defineTablePerson() public static QTableMetaData defineTablePerson()
{ {
return new QTableMetaData() QTableMetaData qTableMetaData = new QTableMetaData()
.withName(TABLE_NAME_PERSON) .withName(TABLE_NAME_PERSON)
.withLabel("Person") .withLabel("Person")
.withRecordLabelFormat("%s %s") .withRecordLabelFormat("%s %s")
@ -245,10 +247,20 @@ public class TestUtils
.withField(new QFieldMetaData("partnerPersonId", QFieldType.INTEGER).withBackendName("partner_person_id").withPossibleValueSourceName(TABLE_NAME_PERSON)) .withField(new QFieldMetaData("partnerPersonId", QFieldType.INTEGER).withBackendName("partner_person_id").withPossibleValueSourceName(TABLE_NAME_PERSON))
.withField(new QFieldMetaData("email", QFieldType.STRING)) .withField(new QFieldMetaData("email", QFieldType.STRING))
.withField(new QFieldMetaData("testScriptId", QFieldType.INTEGER).withBackendName("test_script_id")) .withField(new QFieldMetaData("testScriptId", QFieldType.INTEGER).withBackendName("test_script_id"))
.withField(new QFieldMetaData("photo", QFieldType.BLOB).withBackendName("photo"))
.withField(new QFieldMetaData("photoFileName", QFieldType.STRING).withBackendName("photo_file_name"))
.withAssociatedScript(new AssociatedScript() .withAssociatedScript(new AssociatedScript()
.withFieldName("testScriptId") .withFieldName("testScriptId")
.withScriptTypeId(1) .withScriptTypeId(1)
.withScriptTester(new QCodeReference(TestScriptAction.class, QCodeUsage.SCRIPT_TESTER))); .withScriptTester(new QCodeReference(TestScriptAction.class, QCodeUsage.SCRIPT_TESTER)));
qTableMetaData.getField("photo")
.withIsHeavy(true)
.withFieldAdornment(new FieldAdornment(AdornmentType.FILE_DOWNLOAD)
.withValue(AdornmentType.FileDownloadValues.DEFAULT_MIME_TYPE, "image")
.withValue(AdornmentType.FileDownloadValues.FILE_NAME_FIELD, "photoFileName"));
return (qTableMetaData);
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

View File

@ -31,10 +31,12 @@ CREATE TABLE person
birth_date DATE, birth_date DATE,
email VARCHAR(250) NOT NULL, email VARCHAR(250) NOT NULL,
partner_person_id INT, partner_person_id INT,
test_script_id INT test_script_id INT,
photo BLOB,
photo_file_name VARCHAR(50)
); );
INSERT INTO person (id, first_name, last_name, birth_date, email, partner_person_id) VALUES (1, 'Darin', 'Kelkhoff', '1980-05-31', 'darin.kelkhoff@gmail.com', 6); INSERT INTO person (id, first_name, last_name, birth_date, email, partner_person_id, photo, photo_file_name) VALUES (1, 'Darin', 'Kelkhoff', '1980-05-31', 'darin.kelkhoff@gmail.com', 6, '12345', 'darin-photo.png');
INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (2, 'James', 'Maes', '1980-05-15', 'jmaes@mmltholdings.com'); INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (2, 'James', 'Maes', '1980-05-15', 'jmaes@mmltholdings.com');
INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (3, 'Tim', 'Chamberlain', '1976-05-28', 'tchamberlain@mmltholdings.com'); INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (3, 'Tim', 'Chamberlain', '1976-05-28', 'tchamberlain@mmltholdings.com');
INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (4, 'Tyler', 'Samples', '1990-01-01', 'tsamples@mmltholdings.com'); INSERT INTO person (id, first_name, last_name, birth_date, email) VALUES (4, 'Tyler', 'Samples', '1990-01-01', 'tsamples@mmltholdings.com');