Skip to content

Commit f23735f

Browse files
committed
Add secure work with Cookie libraries
1 parent 239d1f1 commit f23735f

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/util/SpringModelUtils.kt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.utbot.framework.plugin.api.util
22

3+
import mu.KotlinLogging
34
import org.utbot.common.tryLoadClass
45
import org.utbot.common.withToStringThreadLocalReentrancyGuard
56
import org.utbot.framework.plugin.api.isNotNull
@@ -17,6 +18,8 @@ import org.utbot.framework.plugin.api.mapper.UtModelDeepMapper
1718
import org.utbot.framework.plugin.api.mapper.mapModels
1819
import java.util.Optional
1920

21+
private val logger = KotlinLogging.logger {}
22+
2023
object SpringModelUtils {
2124
val autowiredClassId = ClassId("org.springframework.beans.factory.annotation.Autowired")
2225

@@ -57,7 +60,7 @@ object SpringModelUtils {
5760

5861
// the library in which Cookie is stored depends on the version of Spring
5962
private val cookiesLibraries = listOf("javax.servlet.http", "jakarta.servlet.http")
60-
private val cookieClassId = getClassIdFromEachAvailablePackage(cookiesLibraries, "Cookie").single()
63+
private val cookieClassIds = getClassIdFromEachAvailablePackage(cookiesLibraries, "Cookie")
6164

6265
val entityClassIds get() = persistentClassIds("Entity")
6366
val generatedValueClassIds get() = persistentClassIds("GeneratedValue")
@@ -210,7 +213,7 @@ object SpringModelUtils {
210213
parameters = listOf(httpHeaderClassId)
211214
)
212215

213-
private val mockHttpServletCookieMethodId = MethodId(
216+
private fun mockHttpServletCookieMethodId(cookieClassId: ClassId) = MethodId(
214217
classId = mockHttpServletRequestBuilderClassId,
215218
name = "cookie",
216219
returnType = mockHttpServletRequestBuilderClassId,
@@ -415,9 +418,15 @@ object SpringModelUtils {
415418
val headersContentModel = createHeadersContentModel(methodId, arguments, idGenerator)
416419
requestBuilderModel = addHeadersToRequestBuilderModel(headersContentModel, requestBuilderModel, idGenerator)
417420

418-
val cookieValuesModel = createCookieValuesModel(methodId, arguments, idGenerator)
419-
requestBuilderModel =
420-
addCookiesToRequestBuilderModel(cookieValuesModel, requestBuilderModel, idGenerator)
421+
val cookieClassId = cookieClassIds.singleOrNull()
422+
if(cookieClassId is ClassId) {
423+
val cookieValuesModel = createCookieValuesModel(cookieClassId, methodId, arguments, idGenerator)
424+
requestBuilderModel =
425+
addCookiesToRequestBuilderModel(cookieClassId, cookieValuesModel, requestBuilderModel, idGenerator)
426+
}
427+
else{
428+
logger.warn { "Cookie library not found" }
429+
}
421430

422431
val requestAttributes = collectArgumentsWithAnnotationModels(methodId, requestAttributesClassId, arguments)
423432
requestBuilderModel =
@@ -495,6 +504,7 @@ object SpringModelUtils {
495504
}
496505

497506
private fun addCookiesToRequestBuilderModel(
507+
cookieClassId: ClassId,
498508
cookieValuesModel: UtArrayModel,
499509
requestBuilderModel: UtAssembleModel,
500510
idGenerator: () -> Int
@@ -509,7 +519,7 @@ object SpringModelUtils {
509519
modelName = "requestBuilder",
510520
instantiationCall = UtExecutableCallModel(
511521
instance = requestBuilderModel,
512-
executable = mockHttpServletCookieMethodId,
522+
executable = mockHttpServletCookieMethodId(cookieClassId),
513523
params = listOf(cookieValuesModel)
514524
)
515525
)
@@ -643,6 +653,7 @@ object SpringModelUtils {
643653
}
644654

645655
private fun createCookieValuesModel(
656+
cookieClassId: ClassId,
646657
methodId: MethodId,
647658
arguments: List<UtModel>,
648659
idGenerator: () -> Int,

0 commit comments

Comments
 (0)