test: add Actuator REST API tests

This commit is contained in:
Gauthier Roebroeck 2022-11-10 17:21:41 +08:00
parent 992c68f5ee
commit f9b1351003

View file

@ -0,0 +1,75 @@
package org.gotson.komga.interfaces.api.rest
import org.gotson.komga.domain.model.ROLE_ADMIN
import org.gotson.komga.domain.model.ROLE_USER
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.security.test.context.support.WithAnonymousUser
import org.springframework.security.test.context.support.WithMockUser
import org.springframework.test.context.ActiveProfiles
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.get
@ExtendWith(SpringExtension::class)
@SpringBootTest
@AutoConfigureMockMvc(printOnlyOnFailure = false)
@ActiveProfiles("test")
class ActuatorTest(
@Autowired private val mockMvc: MockMvc,
) {
@Test
@WithAnonymousUser
fun `given anonymous user when getting actuator endpoints then returns unauthorized`() {
mockMvc.get("/actuator")
.andExpect {
status { isUnauthorized() }
}
mockMvc.get("/actuator/beans")
.andExpect {
status { isUnauthorized() }
}
}
@Test
@WithAnonymousUser
fun `given anonymous user when getting actuator health endpoint then returns ok`() {
mockMvc.get("/actuator/health")
.andExpect {
status { isOk() }
}
}
@Test
@WithMockUser(roles = [ROLE_USER])
fun `given regular user when getting actuator endpoints then returns forbidden`() {
mockMvc.get("/actuator")
.andExpect {
status { isForbidden() }
}
mockMvc.get("/actuator/beans")
.andExpect {
status { isForbidden() }
}
}
@Test
@WithMockUser(roles = [ROLE_ADMIN])
fun `given admin user when getting actuator endpoints then returns ok`() {
mockMvc.get("/actuator")
.andExpect {
status { isOk() }
}
mockMvc.get("/actuator/beans")
.andExpect {
status { isOk() }
}
}
}