Skip to content

Commit ef188f8

Browse files
Merge pull request #1001 from navikt/grensesnittavstemming-controller
Skal kunne trigge oppstart av grensesnittavstemming via endepunkt. Sj…
2 parents 331a8b5 + 3383e49 commit ef188f8

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package no.nav.familie.ef.iverksett.økonomi.grensesnitt
2+
3+
import com.fasterxml.jackson.module.kotlin.readValue
4+
import java.time.LocalDate
5+
import java.time.LocalDateTime
6+
import no.nav.familie.ef.iverksett.infrastruktur.advice.ApiFeil
7+
import no.nav.familie.kontrakter.felles.ef.StønadType
8+
import no.nav.familie.kontrakter.felles.objectMapper
9+
import no.nav.familie.prosessering.domene.Status
10+
import no.nav.familie.prosessering.internal.TaskService
11+
import no.nav.security.token.support.core.api.ProtectedWithClaims
12+
import org.springframework.http.HttpStatus
13+
import org.springframework.validation.annotation.Validated
14+
import org.springframework.web.bind.annotation.PostMapping
15+
import org.springframework.web.bind.annotation.RequestBody
16+
import org.springframework.web.bind.annotation.RequestMapping
17+
import org.springframework.web.bind.annotation.RestController
18+
19+
@RestController
20+
@RequestMapping("/api/grensesnittavstemming")
21+
@ProtectedWithClaims(issuer = "azuread")
22+
@Validated
23+
class GrensesnittavstemmingController(
24+
private val taskService: TaskService,
25+
) {
26+
@PostMapping
27+
fun startGrensesnittavstemmingForStønad(
28+
@RequestBody grensesnittavstemmingRequest: GrensesnittavstemmingRequestDto,
29+
) {
30+
val stønadType = grensesnittavstemmingRequest.stønadType
31+
val eksisterendeGrensesnittAvstemmingTasker = taskService.finnTasksMedStatus(listOf(Status.UBEHANDLET, Status.KLAR_TIL_PLUKK), GrensesnittavstemmingTask.TYPE)
32+
eksisterendeGrensesnittAvstemmingTasker.forEach { task ->
33+
val payload = objectMapper.readValue<GrensesnittavstemmingPayload>(task.payload)
34+
if (payload.stønadstype == stønadType) {
35+
throw ApiFeil("Det finnes allerede en task for grensesnittavstemming for stønad=$stønadType", HttpStatus.BAD_REQUEST)
36+
}
37+
}
38+
val grensesnittavstemmingDto = GrensesnittavstemmingDto(grensesnittavstemmingRequest.stønadType, LocalDate.now(), LocalDateTime.now())
39+
taskService.save(grensesnittavstemmingDto.tilTask())
40+
}
41+
}
42+
43+
data class GrensesnittavstemmingRequestDto(val stønadType: StønadType)
44+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package no.nav.familie.ef.iverksett.økonomi.grensesnitt
2+
3+
import no.nav.familie.ef.iverksett.ServerTest
4+
import no.nav.familie.kontrakter.felles.Ressurs
5+
import no.nav.familie.kontrakter.felles.ef.StønadType
6+
import no.nav.familie.prosessering.domene.Status
7+
import no.nav.familie.prosessering.internal.TaskService
8+
import org.assertj.core.api.Assertions.assertThat
9+
import org.junit.jupiter.api.BeforeEach
10+
import org.junit.jupiter.api.Test
11+
import org.springframework.beans.factory.annotation.Autowired
12+
import org.springframework.boot.test.web.client.exchange
13+
import org.springframework.http.HttpEntity
14+
import org.springframework.http.HttpHeaders
15+
import org.springframework.http.HttpMethod
16+
import org.springframework.http.HttpStatus
17+
import org.springframework.http.MediaType
18+
import org.springframework.http.ResponseEntity
19+
20+
class GrensesnittavstemmingControllerTest : ServerTest() {
21+
22+
@Autowired
23+
private lateinit var taskService: TaskService
24+
25+
@BeforeEach
26+
fun setUp() {
27+
headers.setBearerAuth(søkerBearerToken())
28+
headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
29+
}
30+
31+
@Test
32+
fun `skal opprette grensesnittavstemming for overgangsstønad, barnetilsyn og skolepenger`() {
33+
StønadType.values().forEachIndexed { index, stønadType ->
34+
val antall = index + 1
35+
val grensesnittAvstemmingRequest = GrensesnittavstemmingRequestDto(stønadType = stønadType)
36+
37+
val responsOk: ResponseEntity<Ressurs<Unit>> = startGrensesnittavstemming(grensesnittAvstemmingRequest)
38+
val responsDuplikat: ResponseEntity<Ressurs<Unit>> = startGrensesnittavstemming(grensesnittAvstemmingRequest)
39+
40+
assertThat(responsOk.statusCode.value()).isEqualTo(HttpStatus.OK.value())
41+
assertThat(responsDuplikat.statusCode.value()).isEqualTo(HttpStatus.BAD_REQUEST.value())
42+
assertThat(taskService.finnTasksMedStatus(listOf(Status.UBEHANDLET, Status.KLAR_TIL_PLUKK), GrensesnittavstemmingTask.TYPE)).hasSize(antall)
43+
}
44+
}
45+
46+
private fun startGrensesnittavstemming(grensesnittAvstemmingRequest: GrensesnittavstemmingRequestDto): ResponseEntity<Ressurs<Unit>> = restTemplate.exchange(
47+
localhostUrl("/api/grensesnittavstemming"),
48+
HttpMethod.POST,
49+
HttpEntity(grensesnittAvstemmingRequest, headers),
50+
)
51+
}

0 commit comments

Comments
 (0)