Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Start med arbeidsgiver #8

Merged
merged 14 commits into from
Mar 26, 2025
Prev Previous commit
Next Next commit
Første test er grønn, men mangler å skrive til DB
ahusby committed Mar 11, 2025
commit 7517f207ab285af9d07aab7a359e05c311040c60
3 changes: 3 additions & 0 deletions apps/rekrutteringstreff-api/src/main/kotlin/no/nav/toi/App.kt
Original file line number Diff line number Diff line change
@@ -11,6 +11,8 @@ import io.javalin.openapi.plugin.OpenApiPlugin
import io.javalin.openapi.plugin.swagger.SwaggerPlugin
import no.nav.toi.SecureLogLogger.Companion.secure
import no.nav.toi.rekrutteringstreff.RekrutteringstreffRepository
import no.nav.toi.rekrutteringstreff.arbeidsgiver.ArbeidsgiverRepository
import no.nav.toi.rekrutteringstreff.arbeidsgiver.handleArbeidsgiver
import no.nav.toi.rekrutteringstreff.handleRekrutteringstreff
import org.flywaydb.core.Flyway
import java.time.Instant
@@ -41,6 +43,7 @@ class App(
javalin.handleHealth()
javalin.leggTilAutensieringPåRekrutteringstreffEndepunkt(authConfigs)
javalin.handleRekrutteringstreff(RekrutteringstreffRepository(dataSource))
javalin.handleArbeidsgiver(ArbeidsgiverRepository(dataSource))
javalin.start(port)
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package no.nav.toi.rekrutteringstreff.arbeidsgiver


import io.javalin.Javalin
import io.javalin.http.Context
import io.javalin.http.bodyAsClass
import io.javalin.openapi.*
import no.nav.toi.rekrutteringstreff.TreffId
import no.nav.toi.rekrutteringstreff.endepunktRekrutteringstreff
import java.util.*


private const val pathParamTreffId = "treffId"
private const val leggTilArbeidsgiverPath = "$endepunktRekrutteringstreff/{$pathParamTreffId}/arbeidsgiver"

data class LeggTilArbeidsgiverDto(
val treffId: String,
val orgnr: String,
val orgnavn: String
) // TODO Are: Takler Javalin bruke sterkere typer her?


@OpenApi(
summary = "Legg til ny arbeidsgiver til et rekrutteringstreff",
operationId = "leggTilArbeidsgiver",
security = [OpenApiSecurity(name = "BearerAuth")],
pathParams = [OpenApiParam(name = pathParamTreffId, type = UUID::class)],
responses = [OpenApiResponse(
status = "201"
)],
path = leggTilArbeidsgiverPath,
methods = [HttpMethod.POST]
)
private fun leggTilArbeidsgiverHandler(repo: ArbeidsgiverRepository): (Context) -> Unit = { ctx ->
val arbeidsgiver: LeggTilArbeidsgiverDto = ctx.bodyAsClass<LeggTilArbeidsgiverDto>()
val treff = TreffId(ctx.pathParam("treffId"))
repo.leggTil(arbeidsgiver, treff)
ctx.status(201) // TODO: Inkluidere ID til ny arbeidsgiver i HTTP response?
}


fun Javalin.handleArbeidsgiver(repo: ArbeidsgiverRepository) {
post(leggTilArbeidsgiverPath, leggTilArbeidsgiverHandler(repo))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.toi.rekrutteringstreff.arbeidsgiver

import no.nav.toi.rekrutteringstreff.Kolonnenavn
import no.nav.toi.rekrutteringstreff.Tabellnavn
import no.nav.toi.rekrutteringstreff.TreffId
import javax.sql.DataSource
import kotlin.use

class ArbeidsgiverRepository(
private val dataSource: DataSource,
){

fun leggTil(arbeidsgiver: LeggTilArbeidsgiverDto, treff: TreffId) {
// dataSource.connection.use { connection ->
// connection.prepareStatement(
// """
// INSERT INTO $tabell
// }
}


companion object {
private const val tabellnavn = "arbeidsgiver"
private const val fratid = "orgnr"
private const val tiltid = "orgnavn"
}


}


Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource
import java.net.HttpURLConnection.HTTP_CREATED
import java.net.HttpURLConnection.HTTP_UNAUTHORIZED
import java.util.UUID


@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@@ -52,19 +53,6 @@ class ArbeidsgiverTest {
database.slettAlt()
}

data class Orgnr(val orgnr: String) {
init {
if (!(orgnr.length == 9 && orgnr.all(Char::isDigit))) throw IllegalArgumentException("Orgnr må være 9 siffer. Mottok [$orgnr].")
}

val asString = orgnr
override fun toString(): String = asString

}


data class Arbeidsgiver(val orgnr: Orgnr, val orgnavn: String, val status: String = "dummyStatus") // TODO: Flytt til prodkoden

fun tokenVarianter() = UautentifiserendeTestCase.somStrømAvArgumenter()

@ParameterizedTest
@@ -83,16 +71,21 @@ class ArbeidsgiverTest {
fun leggTilArbeidsgiver() {
val navIdent = "A123456"
val token = authServer.lagToken(authPort, navIdent = navIdent)
val anyOrgnr = Orgnr("123456789")
val anyTreffId = "anyTreffID"
val arbeidsgiver = Arbeidsgiver(anyOrgnr, "anyOrgnavn")
// val anyOrgnr = Orgnr("555555555")
// val anyOrgnavn = Orgnavn("anyOrgnavn")
val anyOrgnr = "555555555"
val anyOrgnavn = "anyOrgnavn"
val anyTreffId = UUID.randomUUID().toString()
val anyArbeidsgiver = LeggTilArbeidsgiverDto(anyTreffId, anyOrgnr, anyOrgnavn)

val (_, response, result) = Fuel.post("http://localhost:$appPort/api/rekrutteringstreff/$anyTreffId/arbeidsgiver")
.body(mapper.writeValueAsString(arbeidsgiver))
.body(mapper.writeValueAsString(anyArbeidsgiver))
.header("Authorization", "Bearer ${token.serialize()}")
.responseString()

assertStatuscodeEquals(HTTP_CREATED, response, result)
}

// TODO testcase: Når treffet ikke finnes

}