Add test on PushGatewayNotifyRequest

This commit is contained in:
Benoit Marty 2024-05-22 12:21:28 +02:00
parent 20880b01da
commit dc6e62a324
9 changed files with 183 additions and 11 deletions

View file

@ -18,7 +18,7 @@ package io.element.android.libraries.push.impl.pushgateway
import retrofit2.http.Body
import retrofit2.http.POST
internal interface PushGatewayAPI {
interface PushGatewayAPI {
/**
* Ask the Push Gateway to send a push to the current device.
*

View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2024 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.push.impl.pushgateway
import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.libraries.di.AppScope
import io.element.android.libraries.network.RetrofitFactory
import javax.inject.Inject
interface PushGatewayApiFactory {
fun create(baseUrl: String): PushGatewayAPI
}
@ContributesBinding(AppScope::class)
class DefaultPushGatewayApiFactory @Inject constructor(
private val retrofitFactory: RetrofitFactory,
) : PushGatewayApiFactory {
override fun create(baseUrl: String): PushGatewayAPI {
return retrofitFactory.create(baseUrl)
.create(PushGatewayAPI::class.java)
}
}

View file

@ -20,7 +20,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
internal data class PushGatewayDevice(
data class PushGatewayDevice(
/**
* Required. The app_id given when the pusher was created.
*/

View file

@ -20,7 +20,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
internal data class PushGatewayNotification(
data class PushGatewayNotification(
@SerialName("event_id")
val eventId: String,
@SerialName("room_id")

View file

@ -20,7 +20,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
internal data class PushGatewayNotifyBody(
data class PushGatewayNotifyBody(
/**
* Required. Information about the push notification
*/

View file

@ -17,12 +17,11 @@ package io.element.android.libraries.push.impl.pushgateway
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.network.RetrofitFactory
import io.element.android.libraries.push.api.gateway.PushGatewayFailure
import javax.inject.Inject
class PushGatewayNotifyRequest @Inject constructor(
private val retrofitFactory: RetrofitFactory,
private val pushGatewayApiFactory: PushGatewayApiFactory,
) {
data class Params(
val url: String,
@ -33,12 +32,10 @@ class PushGatewayNotifyRequest @Inject constructor(
)
suspend fun execute(params: Params) {
val sygnalApi = retrofitFactory.create(
val pushGatewayApi = pushGatewayApiFactory.create(
params.url.substringBefore(PushGatewayConfig.URI_PUSH_GATEWAY_PREFIX_PATH)
)
.create(PushGatewayAPI::class.java)
val response = sygnalApi.notify(
val response = pushGatewayApi.notify(
PushGatewayNotifyBody(
PushGatewayNotification(
eventId = params.eventId.value,

View file

@ -20,7 +20,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
internal data class PushGatewayNotifyResponse(
data class PushGatewayNotifyResponse(
@SerialName("rejected")
val rejectedPushKeys: List<String>
)