Skip to content

Commit

Permalink
Updated how we do security for the endpoint and fixed a test
Browse files Browse the repository at this point in the history
  • Loading branch information
JessicaWNava committed Sep 4, 2024
1 parent 5f0d760 commit 46fbf8f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 21 deletions.
35 changes: 15 additions & 20 deletions prime-router/src/main/kotlin/azure/ReportFunction.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import gov.cdc.prime.router.common.JacksonMapperUtilities
import gov.cdc.prime.router.fhirengine.utils.FhirTranscoder
import gov.cdc.prime.router.history.azure.SubmissionsFacade
import gov.cdc.prime.router.tokens.AuthenticatedClaims
import gov.cdc.prime.router.tokens.Scope
import gov.cdc.prime.router.tokens.authenticationFailure
import gov.cdc.prime.router.tokens.authorizationFailure
import org.apache.logging.log4j.kotlin.Logging
Expand Down Expand Up @@ -101,29 +100,25 @@ class ReportFunction(
@HttpTrigger(
name = "downloadReport",
methods = [HttpMethod.GET],
authLevel = AuthorizationLevel.ANONYMOUS,
authLevel = AuthorizationLevel.FUNCTION,
route = "reports/download"
) request: HttpRequestMessage<String?>,
): HttpResponseMessage {
val claims = AuthenticatedClaims.authenticate(request)
if (claims != null && claims.authorized(setOf(Scope.primeAdminScope))) {
val reportId = request.queryParameters[REPORT_ID_PARAMETER]
val removePIIRaw = request.queryParameters[REMOVE_PII]
var removePII = false
if (removePIIRaw.isNullOrBlank() || removePIIRaw.toBoolean()) {
removePII = true
}
if (reportId.isNullOrBlank()) {
return HttpUtilities.badRequestResponse(request, "Must provide a reportId.")
}
return processDownloadReport(
request,
ReportId.fromString(reportId),
removePII,
Environment.get().envName
)
val reportId = request.queryParameters[REPORT_ID_PARAMETER]
val removePIIRaw = request.queryParameters[REMOVE_PII]
var removePII = false
if (removePIIRaw.isNullOrBlank() || removePIIRaw.toBoolean()) {
removePII = true
}
if (reportId.isNullOrBlank()) {
return HttpUtilities.badRequestResponse(request, "Must provide a reportId.")
}
return HttpUtilities.unauthorizedResponse(request)
return processDownloadReport(
request,
ReportId.fromString(reportId),
removePII,
Environment.get().envName
)
}

fun processDownloadReport(
Expand Down
4 changes: 3 additions & 1 deletion prime-router/src/test/kotlin/azure/ReportFunctionTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -774,14 +774,16 @@ class ReportFunctionTests {
val blobConnectionInfo = mockk<BlobAccess.BlobContainerMetadata>()
every { blobConnectionInfo.getBlobEndpoint() } returns "http://endpoint/metadata"
every { BlobAccess.downloadBlobAsByteArray(any<String>()) } returns fhirReport.toByteArray(Charsets.UTF_8)
val reportId = UUID.randomUUID()
every { mockDb.fetchReportFile(reportId, null, null) } returns reportFile

val metadata = UnitTestUtils.simpleMetadata
val settings = FileSettings().loadOrganizations(oneOrganization)
val actionHistory = spyk(ActionHistory(TaskAction.receive))

val result = ReportFunction(makeEngine(metadata, settings), actionHistory).processDownloadReport(
MockHttpRequestMessage(),
UUID.randomUUID(),
reportId,
true,
"local",
mockDb
Expand Down

0 comments on commit 46fbf8f

Please sign in to comment.