mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-19 18:05:41 -05:00
feat(tests): add test coverage for json input type parsing as map
This commit is contained in:
committed by
Loïc Mathieu
parent
4ea13e258b
commit
2951f4b4bc
@@ -67,7 +67,6 @@ public class InputsTest {
|
||||
.put("time", "18:27:49")
|
||||
.put("duration", "PT5M6S")
|
||||
.put("file", Objects.requireNonNull(InputsTest.class.getClassLoader().getResource("application-test.yml")).getPath())
|
||||
.put("json", "{\"a\": \"b\"}")
|
||||
.put("uri", "https://www.google.com")
|
||||
.put("nested.string", "a string")
|
||||
.put("nested.more.int", "123")
|
||||
@@ -81,6 +80,24 @@ public class InputsTest {
|
||||
.put("validatedTime", "11:27:49")
|
||||
.put("secret", "secret")
|
||||
.put("array", "[1, 2, 3]")
|
||||
.put("json1", "{\"a\": \"b\"}")
|
||||
.put(
|
||||
"json2",
|
||||
Map.of(
|
||||
"people",
|
||||
Map.of(
|
||||
"name1", List.of(
|
||||
Map.of("first1", "Mustafa"),
|
||||
Map.of( "last1", "Tarek")
|
||||
)
|
||||
,
|
||||
"name2", List.of(
|
||||
Map.of("first2", "Ahmed"),
|
||||
Map.of("last2", "Tarek")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
.put("yaml1", """
|
||||
some: property
|
||||
alist:
|
||||
@@ -171,7 +188,6 @@ public class InputsTest {
|
||||
assertThat(typeds.get("duration")).isEqualTo(Duration.parse("PT5M6S"));
|
||||
assertThat((URI) typeds.get("file")).isEqualTo(new URI("kestra:///io/kestra/tests/inputs/executions/test/inputs/file/application-test.yml"));
|
||||
assertThat(CharStreams.toString(new InputStreamReader(storageInterface.get("tenant1", null, (URI) typeds.get("file"))))).isEqualTo(CharStreams.toString(new InputStreamReader(new FileInputStream((String) inputs.get("file")))));
|
||||
assertThat(typeds.get("json")).isEqualTo(Map.of("a", "b"));
|
||||
assertThat(typeds.get("uri")).isEqualTo("https://www.google.com");
|
||||
assertThat(((Map<String, Object>) typeds.get("nested")).get("string")).isEqualTo("a string");
|
||||
assertThat((Boolean) ((Map<String, Object>) typeds.get("nested")).get("bool")).isTrue();
|
||||
@@ -187,6 +203,24 @@ public class InputsTest {
|
||||
assertThat(typeds.get("array")).isInstanceOf(List.class);
|
||||
assertThat((List<Integer>) typeds.get("array")).hasSize(3);
|
||||
assertThat((List<Integer>) typeds.get("array")).isEqualTo(List.of(1, 2, 3));
|
||||
assertThat(typeds.get("json1")).isEqualTo(Map.of("a", "b"));
|
||||
assertThat(typeds.get("json2"))
|
||||
.isEqualTo(
|
||||
Map.of(
|
||||
"people",
|
||||
Map.of(
|
||||
"name1", List.of(
|
||||
Map.of("first1", "Mustafa"),
|
||||
Map.of( "last1", "Tarek")
|
||||
)
|
||||
,
|
||||
"name2", List.of(
|
||||
Map.of("first2", "Ahmed"),
|
||||
Map.of("last2", "Tarek")
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
assertThat(typeds.get("yaml1")).isEqualTo(Map.of(
|
||||
"some", "property",
|
||||
"alist", List.of("of", "values")));
|
||||
@@ -237,7 +271,7 @@ public class InputsTest {
|
||||
(flow, execution1) -> flowIO.readExecutionInputs(flow, execution1, inputs)
|
||||
);
|
||||
|
||||
assertThat(execution.getTaskRunList()).hasSize(15);
|
||||
assertThat(execution.getTaskRunList()).hasSize(16);
|
||||
assertThat(execution.getState().getCurrent()).isEqualTo(State.Type.SUCCESS);
|
||||
assertThat((String) execution.findTaskRunsByTaskId("file").getFirst().getOutputs().get("value")).matches("kestra:///io/kestra/tests/inputs/executions/.*/inputs/file/application-test.yml");
|
||||
// secret inputs are decrypted to be used as task properties
|
||||
@@ -390,19 +424,19 @@ public class InputsTest {
|
||||
@LoadFlows(value = {"flows/valids/inputs.yaml"}, tenantId = "tenant14")
|
||||
void inputEmptyJson() {
|
||||
HashMap<String, Object> map = new HashMap<>(inputs);
|
||||
map.put("json", "{}");
|
||||
map.put("json1", "{}");
|
||||
|
||||
Map<String, Object> typeds = typedInputs(map, "tenant14");
|
||||
|
||||
assertThat(typeds.get("json")).isInstanceOf(Map.class);
|
||||
assertThat(((Map<?, ?>) typeds.get("json")).size()).isZero();
|
||||
assertThat(typeds.get("json1")).isInstanceOf(Map.class);
|
||||
assertThat(((Map<?, ?>) typeds.get("json1")).size()).isZero();
|
||||
}
|
||||
|
||||
@Test
|
||||
@LoadFlows(value = {"flows/valids/inputs.yaml"}, tenantId = "tenant15")
|
||||
void inputEmptyJsonFlow() throws TimeoutException, QueueException {
|
||||
HashMap<String, Object> map = new HashMap<>(inputs);
|
||||
map.put("json", "{}");
|
||||
map.put("json1", "{}");
|
||||
|
||||
Execution execution = runnerUtils.runOne(
|
||||
"tenant15",
|
||||
@@ -412,11 +446,11 @@ public class InputsTest {
|
||||
(flow, execution1) -> flowIO.readExecutionInputs(flow, execution1, map)
|
||||
);
|
||||
|
||||
assertThat(execution.getTaskRunList()).hasSize(15);
|
||||
assertThat(execution.getTaskRunList()).hasSize(16);
|
||||
assertThat(execution.getState().getCurrent()).isEqualTo(State.Type.SUCCESS);
|
||||
|
||||
assertThat(execution.getInputs().get("json")).isInstanceOf(Map.class);
|
||||
assertThat(((Map<?, ?>) execution.getInputs().get("json")).size()).isZero();
|
||||
assertThat(execution.getInputs().get("json1")).isInstanceOf(Map.class);
|
||||
assertThat(((Map<?, ?>) execution.getInputs().get("json1")).size()).isZero();
|
||||
assertThat((String) execution.findTaskRunsByTaskId("jsonOutput").getFirst().getOutputs().get("value")).isEqualTo("{}");
|
||||
}
|
||||
|
||||
|
||||
@@ -122,9 +122,9 @@ class YamlParserTest {
|
||||
void inputs() {
|
||||
Flow flow = this.parse("flows/valids/inputs.yaml");
|
||||
|
||||
assertThat(flow.getInputs().size()).isEqualTo(30);
|
||||
assertThat(flow.getInputs().size()).isEqualTo(31);
|
||||
assertThat(flow.getInputs().stream().filter(Input::getRequired).count()).isEqualTo(12L);
|
||||
assertThat(flow.getInputs().stream().filter(r -> !r.getRequired()).count()).isEqualTo(18L);
|
||||
assertThat(flow.getInputs().stream().filter(r -> !r.getRequired()).count()).isEqualTo(19L);
|
||||
assertThat(flow.getInputs().stream().filter(r -> r.getDefaults() != null).count()).isEqualTo(4L);
|
||||
assertThat(flow.getInputs().stream().filter(r -> r instanceof StringInput stringInput && stringInput.getValidator() != null).count()).isEqualTo(1L);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,10 @@ inputs:
|
||||
- id: instantDefaults
|
||||
type: DATETIME
|
||||
defaults: "2013-08-09T14:19:00Z"
|
||||
- id: json
|
||||
- id: json1
|
||||
type: JSON
|
||||
required: false
|
||||
- id: json2
|
||||
type: JSON
|
||||
required: false
|
||||
- id: uri
|
||||
@@ -149,12 +152,15 @@ tasks:
|
||||
type: io.kestra.plugin.core.debug.Return
|
||||
format: "{{taskrun.value}}"
|
||||
|
||||
- id: json
|
||||
- id: json1
|
||||
type: io.kestra.plugin.core.debug.Return
|
||||
format: "{{inputs.json}}"
|
||||
format: "{{inputs.json1}}"
|
||||
- id: json2
|
||||
type: io.kestra.plugin.core.debug.Return
|
||||
format: "{{inputs.json2}}"
|
||||
- id: jsonOutput
|
||||
type: io.kestra.plugin.core.debug.Return
|
||||
format: "{{outputs.json.value}}"
|
||||
format: "{{outputs.json1.value}}"
|
||||
- id: yamlOutput1
|
||||
type: io.kestra.plugin.core.debug.Return
|
||||
format: "{{inputs.yaml1}}"
|
||||
|
||||
Reference in New Issue
Block a user