Skip to content

Commit b8e7d4b

Browse files
committed
adding more (failing) tests
1 parent fba0517 commit b8e7d4b

3 files changed

Lines changed: 119 additions & 5 deletions

File tree

core-tests/integration-tests/core-it/src/main/kotlin/bar/examples/it/spring/cleanupuuid/CleanUpUUIDApplication.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,23 @@ open class CleanUpUUIDApplication {
3333
open fun post(): ResponseEntity<CleanUpUUIDDto> {
3434
val id = UUID.randomUUID()
3535
data[id] = "Data for $id"
36-
return ResponseEntity.status(201).body(CleanUpUUIDDto(id))
36+
return ResponseEntity.status(201).body(CleanUpUUIDDto(id,data.size))
3737
}
3838

3939

4040
@PutMapping(path = ["/{id}"])
4141
open fun put(
4242
@PathVariable("id") id: UUID
43-
): ResponseEntity<Any> {
43+
): ResponseEntity<CleanUpUUIDDto> {
44+
45+
val status = if(data.containsKey(id)){
46+
200
47+
} else {
48+
201
49+
}
4450

4551
data[id] = "Data for $id"
46-
return ResponseEntity.status(200).build()
52+
return ResponseEntity.status(status).body(CleanUpUUIDDto(id,data.size))
4753
}
4854

4955
@DeleteMapping(path = ["/{id}"])

core-tests/integration-tests/core-it/src/main/kotlin/bar/examples/it/spring/cleanupuuid/CleanUpUUIDDto.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ import java.util.UUID
44

55
open class CleanUpUUIDDto(
66

7-
var id : UUID? = null
7+
var id : UUID? = null,
8+
9+
var size: Int? = null
810
)

core-tests/integration-tests/core-it/src/test/kotlin/org/evomaster/core/problem/rest/cleanupuuid/CleanUpUUIDTest.kt

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package org.evomaster.core.problem.rest.cleanupuuid
22

33
import bar.examples.it.spring.cleanupuuid.CleanUpUUIDApplication
44
import bar.examples.it.spring.cleanupuuid.CleanUpUUIDController
5+
import bar.examples.it.spring.cleanupuuid.CleanUpUUIDDto
6+
import com.fasterxml.jackson.databind.ObjectMapper
57
import org.evomaster.core.problem.enterprise.SampleType
68
import org.evomaster.core.problem.rest.IntegrationTestRestBase
79
import org.evomaster.core.problem.rest.data.RestCallResult
@@ -28,6 +30,12 @@ class CleanUpUUIDTest: IntegrationTestRestBase() {
2830
recreateInjectorForBlack(listOf("--blackBoxCleanUp","true"))
2931
}
3032

33+
private fun getReturnedSize(result: RestCallResult) : Int{
34+
val bodyString = result.getBody()!!
35+
val mapper = ObjectMapper()
36+
val dto = mapper.readValue(bodyString, CleanUpUUIDDto::class.java)
37+
return dto.size!!
38+
}
3139

3240
@Test
3341
fun testPutDelete() {
@@ -42,7 +50,99 @@ class CleanUpUUIDTest: IntegrationTestRestBase() {
4250

4351
val x = createIndividual(listOf(put), SampleType.RANDOM)
4452
val resDel = x.evaluatedMainActions()[0].result as RestCallResult
45-
assertEquals(200, resDel.getStatusCode())
53+
assertEquals(201, resDel.getStatusCode())
54+
assertEquals(1, getReturnedSize(resDel))
55+
56+
assertEquals(1, x.evaluatedMainActions().size)
57+
assertEquals(1, x.individual.seeMainExecutableActions().size)
58+
assertEquals(1, x.individual.seeCleanUpActions().size)
59+
60+
//delete should had been automatically added
61+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
62+
}
63+
64+
@Test
65+
fun testMultipleDistinctPutDelete() {
66+
67+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
68+
69+
val pirTest = getPirToRest()
70+
71+
val id0 = UUID.randomUUID().toString()
72+
val put0 = pirTest.fromVerbPath("put", "/api/resources/$id0")!!
73+
val id1 = UUID.randomUUID().toString()
74+
val put1 = pirTest.fromVerbPath("put", "/api/resources/$id1")!!
75+
val id2 = UUID.randomUUID().toString()
76+
val put2 = pirTest.fromVerbPath("put", "/api/resources/$id2")!!
77+
78+
val x = createIndividual(listOf(put0,put1,put2), SampleType.RANDOM)
79+
80+
val resDel0 = x.evaluatedMainActions()[0].result as RestCallResult
81+
assertEquals(201, resDel0.getStatusCode())
82+
assertEquals(1, getReturnedSize(resDel0))
83+
val resDel1 = x.evaluatedMainActions()[1].result as RestCallResult
84+
assertEquals(201, resDel1.getStatusCode())
85+
assertEquals(2, getReturnedSize(resDel1))
86+
val resDel2 = x.evaluatedMainActions()[2].result as RestCallResult
87+
assertEquals(201, resDel2.getStatusCode())
88+
assertEquals(3, getReturnedSize(resDel2))
89+
90+
assertEquals(3, x.evaluatedMainActions().size)
91+
assertEquals(3, x.individual.seeMainExecutableActions().size)
92+
assertEquals(3, x.individual.seeCleanUpActions().size)
93+
94+
//delete should had been automatically added
95+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
96+
}
97+
98+
@Test
99+
fun testMultipleRepeatedPutDelete() {
100+
101+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
102+
103+
val pirTest = getPirToRest()
104+
105+
val id0 = UUID.randomUUID().toString()
106+
val put0 = pirTest.fromVerbPath("put", "/api/resources/$id0")!!
107+
val id1 = UUID.randomUUID().toString()
108+
val put1 = pirTest.fromVerbPath("put", "/api/resources/$id1")!!
109+
//this is using same id as first call, so replace, does not create new resource
110+
val put2 = pirTest.fromVerbPath("put", "/api/resources/$id0")!!
111+
112+
val x = createIndividual(listOf(put0,put1,put2), SampleType.RANDOM)
113+
114+
val resDel0 = x.evaluatedMainActions()[0].result as RestCallResult
115+
assertEquals(201, resDel0.getStatusCode())
116+
assertEquals(1, getReturnedSize(resDel0))
117+
val resDel1 = x.evaluatedMainActions()[1].result as RestCallResult
118+
assertEquals(201, resDel1.getStatusCode())
119+
assertEquals(2, getReturnedSize(resDel1))
120+
val resDel2 = x.evaluatedMainActions()[2].result as RestCallResult
121+
assertEquals(200, resDel2.getStatusCode())
122+
assertEquals(2, getReturnedSize(resDel2))
123+
124+
assertEquals(3, x.evaluatedMainActions().size)
125+
assertEquals(3, x.individual.seeMainExecutableActions().size)
126+
assertEquals(2, x.individual.seeCleanUpActions().size)
127+
128+
//delete should had been automatically added
129+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
130+
}
131+
132+
133+
@Test
134+
fun testPostDelete() {
135+
136+
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
137+
138+
val pirTest = getPirToRest()
139+
140+
val post = pirTest.fromVerbPath("post", "/api/resources")!!
141+
142+
val x = createIndividual(listOf(post), SampleType.RANDOM)
143+
val resDel = x.evaluatedMainActions()[0].result as RestCallResult
144+
assertEquals(201, resDel.getStatusCode())
145+
assertEquals(1, getReturnedSize(resDel))
46146

47147
assertEquals(1, x.evaluatedMainActions().size)
48148
assertEquals(1, x.individual.seeMainExecutableActions().size)
@@ -51,4 +151,10 @@ class CleanUpUUIDTest: IntegrationTestRestBase() {
51151
//delete should had been automatically added
52152
assertEquals(0, CleanUpUUIDApplication.numberExistingData())
53153
}
154+
155+
//TODO multi distinct POST
156+
//TODO mixed POST PUT
157+
//TODO mixed multi POST PUT repeated
158+
//TODO merge (various combinations)
159+
//TODO mutation remove POST/PUT (should remove delete)
54160
}

0 commit comments

Comments
 (0)