@@ -2,6 +2,8 @@ package org.evomaster.core.problem.rest.cleanupuuid
22
33import bar.examples.it.spring.cleanupuuid.CleanUpUUIDApplication
44import bar.examples.it.spring.cleanupuuid.CleanUpUUIDController
5+ import bar.examples.it.spring.cleanupuuid.CleanUpUUIDDto
6+ import com.fasterxml.jackson.databind.ObjectMapper
57import org.evomaster.core.problem.enterprise.SampleType
68import org.evomaster.core.problem.rest.IntegrationTestRestBase
79import 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