Skip to content

Commit ee8881c

Browse files
committed
WIP for EnumGene in dto
1 parent 017fde6 commit ee8881c

4 files changed

Lines changed: 23 additions & 18 deletions

File tree

core-tests/e2e-tests/spring/spring-rest-openapi-v3/src/test/kotlin/org/evomaster/e2etests/spring/openapi/v3/oracledisable/SSRFBaseDisableEMTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class SSRFBaseDisableEMTest : SpringTestBase() {
4040
setOption(args, "disabledOracleCodes", DefinedFaultCategory.SSRF.code.toString())
4141

4242
// TODO: Remove once EnumGene is supported for DTOs
43-
setOption(args, "dtoForRequestPayload","false")
43+
setOption(args, "dtoForRequestPayload","true")
4444

4545
val solution = initAndRun(args)
4646

core-tests/e2e-tests/spring/spring-rest-openapi-v3/src/test/kotlin/org/evomaster/e2etests/spring/openapi/v3/security/ssrf/base/SSRFBaseEMTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ class SSRFBaseEMTest : SpringTestBase() {
3838
setOption(args, "schemaOracles", "false")
3939

4040
// TODO: Remove once EnumGene is supported for DTOs
41-
setOption(args, "dtoForRequestPayload","false")
41+
setOption(args, "dtoForRequestPayload","true")
42+
// setOption(args, "dtoForRequestPayload","false")
4243

4344
val solution = initAndRun(args)
4445

core-tests/e2e-tests/spring/spring-rest-openapi-v3/src/test/kotlin/org/evomaster/e2etests/spring/openapi/v3/swagger/SwaggerDescriptionEMTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class SwaggerDescriptionEMTest : SpringTestBase() {
2727
) { args: MutableList<String> ->
2828

2929
// TODO: Remove once EnumGene is supported for DTOs
30-
setOption(args, "dtoForRequestPayload","false")
30+
setOption(args, "dtoForRequestPayload","true")
3131

3232
val solution = initAndRun(args)
3333

core/src/main/kotlin/org/evomaster/core/output/dto/DtoWriter.kt

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -96,21 +96,23 @@ class DtoWriter(
9696
// TODO: should we handle EnumGene?
9797
if (hasObjectOrArrayGene(gene)) {
9898
val dtoName = TestWriterUtils.safeVariableName(actionName)
99-
val dtoClass = DtoClass(dtoName)
100-
val children = gene.getViewOfChildren()
101-
// merge options into a single DTO
102-
children.forEach { childGene ->
103-
when (childGene) {
104-
is ObjectGene -> populateDtoClass(dtoClass, childGene)
105-
is ArrayGene<*> -> {
106-
val template = childGene.template
107-
if (template is ObjectGene) {
108-
populateDtoClass(dtoClass, template)
99+
if (!dtoCollector.contains(dtoName)) {
100+
val dtoClass = DtoClass(dtoName)
101+
val children = gene.getViewOfChildren()
102+
// merge options into a single DTO
103+
children.forEach { childGene ->
104+
when (childGene) {
105+
is ObjectGene -> populateDtoClass(dtoClass, childGene)
106+
is ArrayGene<*> -> {
107+
val template = childGene.template
108+
if (template is ObjectGene) {
109+
populateDtoClass(dtoClass, template)
110+
}
109111
}
110112
}
111113
}
114+
dtoCollector.put(dtoName, dtoClass)
112115
}
113-
dtoCollector.put(dtoName, dtoClass)
114116
}
115117
}
116118

@@ -139,10 +141,12 @@ class DtoWriter(
139141
private fun calculateDtoFromObject(gene: ObjectGene, actionName: String) {
140142
// TODO: Determine strategy for objects that are not defined as a component and do not have a name
141143
val dtoName = TestWriterUtils.safeVariableName(gene.refType?:actionName)
142-
val dtoClass = DtoClass(dtoName)
143-
// TODO: add support for additionalFields
144-
populateDtoClass(dtoClass, gene)
145-
dtoCollector.put(dtoName, dtoClass)
144+
if (!dtoCollector.contains(dtoName)) {
145+
val dtoClass = DtoClass(dtoName)
146+
// TODO: add support for additionalFields
147+
populateDtoClass(dtoClass, gene)
148+
dtoCollector.put(dtoName, dtoClass)
149+
}
146150
}
147151

148152
private fun calculateDtoFromArray(gene: ArrayGene<*>, actionName: String) {

0 commit comments

Comments
 (0)