diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1.kt index 29e2b32e8719f3398c3a4efb90d179f66a890801..a8ec6a371d59184f11486848504ba2ea034d51ca 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1.kt @@ -34,7 +34,7 @@ interface CovidCertificateApiV1 { } } - @POST("/version/v1/publicKey") + @POST("/version/v1/dcc") suspend fun getComponents( @Body requestBody: ComponentsRequest ): Response<ComponentsResponse> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateModule.kt index 47ca09e5f0fb72b5e80b9b526cb3cf5dd7f42c08..16ff646f69a824c39403da866ef1b6bb525d7aca 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateModule.kt @@ -7,6 +7,7 @@ import de.rki.coronawarnapp.environment.covidcertificate.DCCHttpClient import de.rki.coronawarnapp.environment.covidcertificate.DCCServerUrl import okhttp3.OkHttpClient import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory @Module class CovidCertificateModule { @@ -16,10 +17,12 @@ class CovidCertificateModule { fun apiV1( @DCCHttpClient httpClient: OkHttpClient, @DCCServerUrl url: String, + gsonConverterFactory: GsonConverterFactory ): CovidCertificateApiV1 { return Retrofit.Builder() .client(httpClient) .baseUrl(url) + .addConverterFactory(gsonConverterFactory) .build() .create(CovidCertificateApiV1::class.java) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1Test.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1Test.kt new file mode 100644 index 0000000000000000000000000000000000000000..07a5352649ebe8b132e461a302a947930346a18c --- /dev/null +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/covidcertificate/server/CovidCertificateApiV1Test.kt @@ -0,0 +1,67 @@ +package de.rki.coronawarnapp.covidcertificate.server + +import de.rki.coronawarnapp.http.HttpModule +import io.kotest.matchers.shouldBe +import io.mockk.MockKAnnotations +import kotlinx.coroutines.runBlocking +import okhttp3.mockwebserver.MockWebServer +import org.junit.jupiter.api.AfterEach +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import testhelpers.BaseTest +import testhelpers.extensions.toJsonResponse +import java.util.concurrent.TimeUnit + +class CovidCertificateApiV1Test : BaseTest() { + + private lateinit var webServer: MockWebServer + private lateinit var serverAddress: String + + @BeforeEach + fun setup() { + MockKAnnotations.init(this) + + webServer = MockWebServer() + webServer.start() + serverAddress = "http://${webServer.hostName}:${webServer.port}" + } + + @AfterEach + fun teardown() { + webServer.shutdown() + } + + private fun createAPI(): CovidCertificateApiV1 { + val httpModule = HttpModule() + + return CovidCertificateModule().let { + val downloadHttpClient = httpModule.defaultHttpClient() + it.apiV1( + httpClient = downloadHttpClient, + url = serverAddress, + gsonConverterFactory = httpModule.provideGSONConverter() + ) + } + } + + @Test + fun `test upload`(): Unit = runBlocking { + val api = createAPI() + """ + { + + } + """.toJsonResponse().apply { webServer.enqueue(this) } + + api.sendPublicKey( + CovidCertificateApiV1.PublicKeyUploadRequest( + registrationToken = "token1", + publicKey = "key1" + ) + ) + + webServer.takeRequest(5, TimeUnit.SECONDS)!!.apply { + path shouldBe "/version/v1/publicKey" + } + } +}