Skip to content
Snippets Groups Projects
Verified Commit e4b2265f authored by Sebastian's avatar Sebastian
Browse files

Add /status endpoint

parent 7f8d2000
Branches
Tags
1 merge request!38API endpoint for checking mailbox status
Pipeline #8063 passed
...@@ -4,6 +4,7 @@ import io.ktor.application.Application ...@@ -4,6 +4,7 @@ import io.ktor.application.Application
import io.ktor.application.ApplicationCall import io.ktor.application.ApplicationCall
import io.ktor.application.call import io.ktor.application.call
import io.ktor.auth.authenticate import io.ktor.auth.authenticate
import io.ktor.auth.principal
import io.ktor.features.BadRequestException import io.ktor.features.BadRequestException
import io.ktor.features.MissingRequestParameterException import io.ktor.features.MissingRequestParameterException
import io.ktor.http.ContentType import io.ktor.http.ContentType
...@@ -33,11 +34,20 @@ internal fun Application.configureBasicApi( ...@@ -33,11 +34,20 @@ internal fun Application.configureBasicApi(
) = routing { ) = routing {
route(V) { route(V) {
get { get {
call.respondText("Hello, I'm a Briar teapot", call.respondText(
"Hello, I'm a Briar teapot",
ContentType.Text.Plain, ContentType.Text.Plain,
HttpStatusCode(418, "I'm a teapot")) HttpStatusCode(418, "I'm a teapot")
)
} }
authenticate { authenticate {
get("/status") {
call.handle {
if (call.principal<MailboxPrincipal>() !is MailboxPrincipal.OwnerPrincipal)
throw AuthException()
call.respond(HttpStatusCode.OK)
}
}
delete { delete {
call.handle { call.handle {
wipeManager.onWipeRequest(call) wipeManager.onWipeRequest(call)
......
package org.briarproject.mailbox.core.server
import io.ktor.client.request.get
import io.ktor.client.statement.HttpResponse
import io.ktor.client.statement.readText
import io.ktor.http.HttpStatusCode
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
class StatusIntegrationTest : IntegrationTest() {
@BeforeEach
fun initDb() {
addOwnerToken()
addContact(contact1)
addContact(contact2)
}
@Test
fun `owner can access status`(): Unit = runBlocking {
val response: HttpResponse = httpClient.get("$baseUrl/status") {
authenticateWithToken(ownerToken)
}
assertEquals(HttpStatusCode.OK, response.status)
assertEquals("", response.readText())
}
@Test
fun `contact cannot access status`(): Unit = runBlocking {
val response: HttpResponse = httpClient.get("$baseUrl/status") {
authenticateWithToken(contact1.token)
}
assertEquals(HttpStatusCode.Unauthorized, response.status)
}
@Test
fun `wrong token cannot access status`(): Unit = runBlocking {
val response: HttpResponse = httpClient.get("$baseUrl/status") {
authenticateWithToken(token)
}
assertEquals(HttpStatusCode.Unauthorized, response.status)
}
@Test
fun `empty token cannot access status`(): Unit = runBlocking {
val response: HttpResponse = httpClient.get("$baseUrl/status") {
authenticateWithToken("")
}
assertEquals(HttpStatusCode.Unauthorized, response.status)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment