Implement PushmessageProviderService method in FCM service
This commit is contained in:
parent
b15ea97aac
commit
02b7fd6599
|
|
@ -3,9 +3,11 @@ package ru.touchin.push.message.provider.fcm.clients
|
|||
import com.google.firebase.messaging.FirebaseMessaging
|
||||
import com.google.firebase.messaging.FirebaseMessagingException
|
||||
import org.springframework.stereotype.Component
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult
|
||||
import ru.touchin.push.message.provider.enums.PushTokenStatus
|
||||
import ru.touchin.push.message.provider.exceptions.InvalidPushTokenException
|
||||
import ru.touchin.push.message.provider.exceptions.PushMessageProviderException
|
||||
import ru.touchin.push.message.provider.fcm.converters.FirebaseMessagingExceptionConverter
|
||||
|
|
@ -24,10 +26,33 @@ class FcmClient(
|
|||
|
||||
@Throws(PushMessageProviderException::class, InvalidPushTokenException::class)
|
||||
fun sendPushTokenMessage(request: PushTokenMessage): SendPushResult {
|
||||
return sendToPushToken(request, dryRun = false)
|
||||
}
|
||||
|
||||
fun check(request: PushTokenCheck): PushTokenStatus {
|
||||
val validationRequest = PushTokenMessage(
|
||||
token = request.pushToken,
|
||||
notification = null,
|
||||
data = emptyMap()
|
||||
)
|
||||
|
||||
return try {
|
||||
sendToPushToken(validationRequest, dryRun = true)
|
||||
|
||||
PushTokenStatus.VALID
|
||||
} catch (ipte: InvalidPushTokenException) {
|
||||
PushTokenStatus.INVALID
|
||||
} catch (pmpe: PushMessageProviderException) {
|
||||
PushTokenStatus.UNKNOWN
|
||||
}
|
||||
}
|
||||
|
||||
@Throws(PushMessageProviderException::class, InvalidPushTokenException::class)
|
||||
private fun sendToPushToken(request: PushTokenMessage, dryRun: Boolean): SendPushResult {
|
||||
val message = pushTokenMessageConverter(request)
|
||||
|
||||
return try {
|
||||
val messageId = firebaseMessaging.send(message)
|
||||
val messageId = firebaseMessaging.send(message, dryRun)
|
||||
|
||||
SendPushTokenMessageResult(messageId)
|
||||
} catch (e: FirebaseMessagingException) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package ru.touchin.push.message.provider.fcm.services
|
||||
|
||||
import org.springframework.stereotype.Service
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
import ru.touchin.push.message.provider.dto.request.SendPushRequest
|
||||
import ru.touchin.push.message.provider.dto.result.CheckPushTokenResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushResult
|
||||
import ru.touchin.push.message.provider.enums.PushMessageProviderType
|
||||
import ru.touchin.push.message.provider.exceptions.InvalidPushTokenException
|
||||
|
|
@ -24,4 +26,10 @@ class PushMessageProviderFcmService(
|
|||
}
|
||||
}
|
||||
|
||||
override fun check(request: PushTokenCheck): CheckPushTokenResult {
|
||||
val status = fcmClient.check(request)
|
||||
|
||||
return CheckPushTokenResult(status)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,11 @@ import org.mockito.Mockito
|
|||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.boot.test.mock.mockito.MockBean
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenMessage
|
||||
import ru.touchin.push.message.provider.dto.result.CheckPushTokenResult
|
||||
import ru.touchin.push.message.provider.dto.result.SendPushTokenMessageResult
|
||||
import ru.touchin.push.message.provider.enums.PushTokenStatus
|
||||
import ru.touchin.push.message.provider.fcm.clients.FcmClient
|
||||
import ru.touchin.push.message.provider.services.PushMessageProviderService
|
||||
|
||||
|
|
@ -47,4 +50,25 @@ class PushMessageProviderFcmServiceTest {
|
|||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("Обработка запроса на валидацию пуш-токена происходит корректно")
|
||||
fun isValid_basic() {
|
||||
val expectedClientResult = PushTokenStatus.VALID
|
||||
|
||||
Mockito.`when`(
|
||||
fcmClient.check(PushTokenCheck("testToken"))
|
||||
).thenReturn(
|
||||
expectedClientResult
|
||||
)
|
||||
|
||||
val expectedResult = CheckPushTokenResult(expectedClientResult)
|
||||
val realResult = pushMessageProviderService.check(PushTokenCheck("testToken"))
|
||||
|
||||
Assert.assertEquals(
|
||||
"Обработка запроса на валидацию пуш-токена происходит корректно",
|
||||
expectedResult,
|
||||
realResult
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue