Add push message provider mock
This commit is contained in:
parent
723e5a4178
commit
748da05be8
|
|
@ -0,0 +1,13 @@
|
|||
plugins {
|
||||
id("kotlin")
|
||||
id("kotlin-spring")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||
|
||||
implementation("org.springframework.boot:spring-boot-autoconfigure")
|
||||
|
||||
implementation(project(":logger"))
|
||||
implementation(project(":push-message-provider"))
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
@file:Suppress("unused")
|
||||
package ru.touchin.push.message.provider.mock
|
||||
|
||||
import org.springframework.context.annotation.Import
|
||||
import ru.touchin.push.message.provider.mock.configurations.PushMessageProviderMockConfiguration
|
||||
|
||||
@Import(value = [PushMessageProviderMockConfiguration::class])
|
||||
annotation class EnablePushMessageProviderMock
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package ru.touchin.push.message.provider.mock.configurations
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationPropertiesScan
|
||||
import org.springframework.context.annotation.ComponentScan
|
||||
|
||||
@ComponentScan("ru.touchin.push.message.provider.mock")
|
||||
@ConfigurationPropertiesScan(basePackages = ["ru.touchin.push.message.provider.mock.properties"])
|
||||
class PushMessageProviderMockConfiguration
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
package ru.touchin.push.message.provider.mock.factories
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
||||
import org.springframework.context.annotation.Primary
|
||||
import org.springframework.stereotype.Service
|
||||
import ru.touchin.logger.dto.LogData
|
||||
import ru.touchin.logger.factory.LogBuilderFactory
|
||||
import ru.touchin.push.message.provider.dto.request.PushTokenCheck
|
||||
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.dto.result.SendPushTokenMessageResult
|
||||
import ru.touchin.push.message.provider.enums.PlatformType
|
||||
import ru.touchin.push.message.provider.enums.PushMessageProviderType
|
||||
import ru.touchin.push.message.provider.factories.PushMessageProviderServiceFactory
|
||||
import ru.touchin.push.message.provider.mock.properties.PushMessageProviderMockProperties
|
||||
import ru.touchin.push.message.provider.services.PushMessageProviderService
|
||||
import java.util.*
|
||||
|
||||
@Primary
|
||||
@Service
|
||||
@ConditionalOnProperty(prefix = "push-message-provider", name = ["mock.enabled"], havingValue = "true")
|
||||
class PushMessageProviderMockServiceFactoryImpl(
|
||||
private val logBuilderFactory: LogBuilderFactory<LogData>,
|
||||
private val pushMessageProviderMockProperties: PushMessageProviderMockProperties,
|
||||
) : PushMessageProviderServiceFactory {
|
||||
|
||||
override fun get(platformType: PlatformType): PushMessageProviderService {
|
||||
return object : PushMessageProviderService {
|
||||
override val type: PushMessageProviderType
|
||||
get() = PushMessageProviderType.FCM
|
||||
|
||||
override fun send(request: SendPushRequest): SendPushResult {
|
||||
val millis = pushMessageProviderMockProperties.sleepFor.toMillis()
|
||||
|
||||
logBuilderFactory.create(this::class.java)
|
||||
.addTags("MOCK_PUSH_SEND")
|
||||
.setMethod("send")
|
||||
.addData("sleepForMs" to millis)
|
||||
.build()
|
||||
.log()
|
||||
|
||||
Thread.sleep(millis)
|
||||
|
||||
return SendPushTokenMessageResult(
|
||||
messageId = UUID.randomUUID().toString(),
|
||||
)
|
||||
}
|
||||
|
||||
override fun check(request: PushTokenCheck): CheckPushTokenResult {
|
||||
throw NotImplementedError()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package ru.touchin.push.message.provider.mock.properties
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||
import org.springframework.boot.context.properties.ConstructorBinding
|
||||
import java.time.Duration
|
||||
|
||||
@ConstructorBinding
|
||||
@ConfigurationProperties(prefix = "push-message-provider.mock")
|
||||
data class PushMessageProviderMockProperties(
|
||||
val sleepFor: Duration,
|
||||
)
|
||||
|
|
@ -45,6 +45,7 @@ include("validation-spring")
|
|||
include("version-spring-web")
|
||||
include("push-message-provider")
|
||||
include("push-message-provider-fcm")
|
||||
include("push-message-provider-mock")
|
||||
include("response-wrapper-spring-web")
|
||||
include("settings-spring-jpa")
|
||||
include("security-authorization-server-core")
|
||||
|
|
|
|||
Loading…
Reference in New Issue