Skip to content

Commit

Permalink
add unit test for dq, and add new api call
Browse files Browse the repository at this point in the history
  • Loading branch information
richos7 committed Aug 5, 2019
1 parent c947110 commit 6820273
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/altinn/admin/common/Functions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ import java.util.*

internal fun randomUuid() = UUID.randomUUID().toString()
internal fun decodeBase64(s: String): ByteArray = Base64.getDecoder().decode(s)
internal fun encodeBase64(bytes: ByteArray): String = Base64.getEncoder().encodeToString(bytes)
fun encodeBase64(bytes: ByteArray): String = Base64.getEncoder().encodeToString(bytes)
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,13 @@ class AltinnDQService(private val env: Environment, iDownloadQueueExternalBasicF
return DqResponseFormData("Failed", "Unknown error occurred when getting rights registry, check logger", FormData("", null))
}

fun getDownloadQueueItems(serviceCode: String): DqItems {
fun getDownloadQueueItems(serviceCode: String, serviceEdtionCode: String): DqItems {
try {
val dqItems = iDownloadQueueExternalBasic.getDownloadQueueItems(altinnUsername, altinnUserPassword, serviceCode).downloadQueueItemBE
var dqList = mutableListOf<DqItem>()
for (dqItem in dqItems) {
if (serviceEdtionCode.isNotEmpty() && serviceEdtionCode != dqItem.serviceEditionCode.toString())
continue
dqList.add(DqItem(dqItem.archiveReference,
dqItem.serviceCode,
dqItem.serviceEditionCode.toString()
Expand Down
60 changes: 52 additions & 8 deletions src/main/kotlin/no/nav/altinn/admin/service/dq/Routes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ import no.nav.altinn.admin.common.API_V1
fun Routing.dqAPI(altinnDqService: AltinnDQService, environment: Environment) {
getFormMessage(altinnDqService, environment)
getDqItems(altinnDqService, environment)
getDqItemsSec(altinnDqService, environment)
logger.info { "Local env ? ${environment.application.localEnv}" }
if (environment.application.localEnv == "preprod") {
if (environment.application.localEnv != "prod") {
purgeItem(altinnDqService, environment)
}
}
Expand All @@ -40,13 +41,14 @@ fun Routing.getFormMessage(altinnDqService: AltinnDQService, environment: Enviro
ok<FormData>(), serviceUnavailable<AnError>(), badRequest<AnError>())) {
param ->

if (param.arNummer.isNullOrEmpty()) {
val arNummer = param.arNummer.trim()
if (arNummer.isNullOrEmpty()) {
call.respond(HttpStatusCode.BadRequest, AnError("Ugyldig AR nummer oppgitt"))
return@get
}

try {
val dqResponse = altinnDqService.getFormData(param.arNummer)
val dqResponse = altinnDqService.getFormData(arNummer)
if (dqResponse.status == "Ok")
call.respond(dqResponse.formData)
else
Expand All @@ -70,19 +72,60 @@ fun Routing.getDqItems(altinnDqService: AltinnDQService, environment: Environmen
BasicAuthSecurity(), ok<DqItems>(), serviceUnavailable<AnError>(), badRequest<AnError>())) {
param ->

if (param.tjenesteKode.isNullOrEmpty()) {
val tjenesteKode = param.tjenesteKode.trim()
if (tjenesteKode.isNullOrEmpty()) {
call.respond(HttpStatusCode.BadRequest, AnError("Blank tjeneste kode oppgitt"))
return@get
}

val dqList = environment.dqService.serviceCodes.split(",")
if (!dqList.contains(param.tjenesteKode)) {
if (!dqList.contains(tjenesteKode)) {
call.respond(HttpStatusCode.BadRequest, AnError("Ugyldig tjeneste kode oppgitt"))
return@get
}

try {
val dqResponse = altinnDqService.getDownloadQueueItems(param.tjenesteKode)
val dqResponse = altinnDqService.getDownloadQueueItems(tjenesteKode, "")
call.respond(dqResponse)
} catch (ee: Exception) {
logger.error {
"IDownloadQueueExternalBasic.GetArchivedFormTaskBasicDQ feilet \n" +
"\n ErrorMessage ${ee.message}" +
"\n LocalizedErrorMessage ${ee.localizedMessage}"
}
call.respond(HttpStatusCode.InternalServerError, AnError("IDownloadQueueExternalBasic.GetArchivedFormTaskBasicDQ feilet: ${ee.message}"))
}
}

@Group(GROUP_NAME)
@Location("$API_V1/altinn/dq/elementer/{tjenesteKode}/{utgaveKode}")
data class TjenesteOgUtgaveKode(val tjenesteKode: String, val utgaveKode: String)

fun Routing.getDqItemsSec(altinnDqService: AltinnDQService, environment: Environment) =
get<TjenesteOgUtgaveKode>("Hent elementer som ligger på download queue filtrert med utgave kode".securityAndReponds(
BasicAuthSecurity(), ok<DqItems>(), serviceUnavailable<AnError>(), badRequest<AnError>())) {
param ->

val tjenesteKode = param.tjenesteKode.trim()
if (tjenesteKode.isNullOrEmpty()) {
call.respond(HttpStatusCode.BadRequest, AnError("Blank tjeneste kode oppgitt"))
return@get
}

val utgaveKode = param.utgaveKode.trim()
if (utgaveKode.isNullOrEmpty()) {
call.respond(HttpStatusCode.BadRequest, AnError("Blank utgave kode oppgitt"))
return@get
}

val dqList = environment.dqService.serviceCodes.split(",")
if (!dqList.contains(tjenesteKode)) {
call.respond(HttpStatusCode.BadRequest, AnError("Ugyldig tjeneste kode oppgitt"))
return@get
}

try {
val dqResponse = altinnDqService.getDownloadQueueItems(tjenesteKode, utgaveKode)
call.respond(dqResponse)
} catch (ee: Exception) {
logger.error {
Expand All @@ -103,13 +146,14 @@ fun Routing.purgeItem(altinnDqService: AltinnDQService, environment: Environment
BasicAuthSecurity(), ok<DqPurge>(), serviceUnavailable<AnError>(), badRequest<AnError>())) {
param ->

if (param.arNummer.isNullOrEmpty()) {
val arNummer = param.arNummer.trim()
if (arNummer.isNullOrEmpty()) {
call.respond(HttpStatusCode.BadRequest, AnError("Ugyldig AR nummer oppgitt"))
return@delete
}

try {
val dqResponse = altinnDqService.purgeItem(param.arNummer)
val dqResponse = altinnDqService.purgeItem(arNummer)
call.respond(dqResponse)
} catch (ee: Exception) {
logger.error {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import no.nav.altinn.admin.Environment
import no.nav.altinn.admin.metrics.Metrics
import javax.xml.datatype.DatatypeFactory
import java.time.ZonedDateTime
import java.util.GregorianCalendar
import java.util.*

private val logger = KotlinLogging.logger { }

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package no.nav.altinn.admin.service.dq

import io.ktor.http.HttpHeaders
import io.ktor.http.HttpMethod
import io.ktor.http.HttpStatusCode
import io.ktor.server.testing.TestApplicationEngine
import io.ktor.server.testing.createTestEnvironment
import io.ktor.server.testing.handleRequest
import no.nav.altinn.admin.Environment
import no.nav.altinn.admin.common.ApplicationState
import no.nav.altinn.admin.common.InMemoryLDAPServer
import no.nav.altinn.admin.common.encodeBase64
import no.nav.altinn.admin.mainModule
import org.amshove.kluent.shouldEqual
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe

object AltinnDQServiceSpek : Spek({
val applicationState = ApplicationState(running = true, initialized = true)

describe("Test all authorized calls") {
context("Get Route /api/v1/altinn/dq/elementer/{tjenesteKode}") {
val engine = TestApplicationEngine(createTestEnvironment())
val testEnvironment = Environment()

beforeGroup {
InMemoryLDAPServer.start()
engine.start(wait = false)
engine.application.mainModule(testEnvironment, applicationState = applicationState)
}
with(engine) {
context("Route /api/v1/altinn/dq/elementer/{tjenesteKode}") {
it("Hent elementer i DownloadQueue med ugyldig tjenestekode") {
val params = "2234"
val req = handleRequest(HttpMethod.Get, "/api/v1/altinn/dq/elementer/$params") {
addHeader(HttpHeaders.Accept, "application/json")
addHeader("Content-Type", "application/json")
addHeader(HttpHeaders.Authorization, "Basic ${encodeBase64("n000001:itest1".toByteArray())}")
}

req.requestHandled shouldEqual true
req.response.status() shouldEqual HttpStatusCode.BadRequest
}
it("Hent melding fra DownloadQueue med tomt AR nummer") {
val arNummer = " "
val req = handleRequest(HttpMethod.Get, "/api/v1/altinn/dq/hent/$arNummer") {
addHeader(HttpHeaders.Accept, "application/json")
addHeader("Content-Type", "application/json")
addHeader(HttpHeaders.Authorization, "Basic ${encodeBase64("n000001:itest1".toByteArray())}")
}

req.requestHandled shouldEqual true
req.response.status() shouldEqual HttpStatusCode.BadRequest
}
}
}
afterGroup {
InMemoryLDAPServer.stop()
}
}
context("Delete Route /api/v1/altinn/dq/slett/{arNummer}") {
val engine = TestApplicationEngine(createTestEnvironment())
val testEnvironment = Environment()

beforeGroup {
InMemoryLDAPServer.start()
engine.start(wait = false)
engine.application.mainModule(testEnvironment, applicationState = applicationState)
}
with(engine) {
context("Route /api/v1/altinn/dq/slett/{arNummer}") {
it("Slett melding fra DownloadQueue med tomt AR nummer") {
val arNummer = " "
val req = handleRequest(HttpMethod.Delete, "/api/v1/altinn/dq/slett/$arNummer") {
addHeader("Content-Type", "application/json")
addHeader(HttpHeaders.Authorization, "Basic ${encodeBase64("n000002:itest2".toByteArray())}")
}

req.requestHandled shouldEqual true
req.response.status() shouldEqual HttpStatusCode.BadRequest
}
}
}
afterGroup {
InMemoryLDAPServer.stop()
}
}
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ import no.altinn.schemas.services.register.srr._2015._06.DeleteRightResponseList
import no.nav.altinn.admin.Environment
import no.nav.altinn.admin.common.ApplicationState
import no.nav.altinn.admin.common.InMemoryLDAPServer
import no.nav.altinn.admin.common.encodeBase64
import no.nav.altinn.admin.common.objectMapper
import no.nav.altinn.admin.common.xmlMapper
import no.nav.altinn.admin.mainModule
import org.amshove.kluent.shouldEqual
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
import java.util.*

object AltinnSRRServiceSpek : Spek({
val applicationState = ApplicationState(running = true, initialized = true)
Expand Down Expand Up @@ -332,5 +332,3 @@ object AltinnSRRServiceSpek : Spek({
}
}
})

private fun encodeBase64(bytes: ByteArray): String = Base64.getEncoder().encodeToString(bytes)

0 comments on commit 6820273

Please sign in to comment.