test #426
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
|
|||||||
import org.springframework.data.redis.connection.Message
|
import org.springframework.data.redis.connection.Message
|
||||||
import org.springframework.data.redis.connection.MessageListener
|
import org.springframework.data.redis.connection.MessageListener
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate
|
import org.springframework.data.redis.core.StringRedisTemplate
|
||||||
import org.springframework.data.redis.listener.PatternTopic
|
import org.springframework.data.redis.listener.ChannelTopic
|
||||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.socket.TextMessage
|
import org.springframework.web.socket.TextMessage
|
||||||
@@ -19,7 +19,7 @@ class UserCreatorChatRoomMessageBroker(
|
|||||||
listenerContainer: RedisMessageListenerContainer
|
listenerContainer: RedisMessageListenerContainer
|
||||||
) : MessageListener {
|
) : MessageListener {
|
||||||
init {
|
init {
|
||||||
listenerContainer.addMessageListener(this, PatternTopic("$ROOM_CHANNEL_PREFIX:*"))
|
listenerContainer.addMessageListener(this, ChannelTopic(ROOM_CHANNEL))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun publish(roomId: Long, memberId: Long, payload: String) {
|
fun publish(roomId: Long, memberId: Long, payload: String) {
|
||||||
@@ -28,7 +28,7 @@ class UserCreatorChatRoomMessageBroker(
|
|||||||
memberId = memberId,
|
memberId = memberId,
|
||||||
payload = payload
|
payload = payload
|
||||||
)
|
)
|
||||||
stringRedisTemplate.convertAndSend(roomChannel(roomId), objectMapper.writeValueAsString(message))
|
stringRedisTemplate.convertAndSend(ROOM_CHANNEL, objectMapper.writeValueAsString(message))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMessage(message: Message, pattern: ByteArray?) {
|
override fun onMessage(message: Message, pattern: ByteArray?) {
|
||||||
@@ -50,11 +50,7 @@ class UserCreatorChatRoomMessageBroker(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val ROOM_CHANNEL_PREFIX = "v2:user-creator-chat:ws:room"
|
private const val ROOM_CHANNEL = "v2:user-creator-chat:ws:room"
|
||||||
|
|
||||||
fun roomChannel(roomId: Long): String {
|
|
||||||
return "$ROOM_CHANNEL_PREFIX:$roomId"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.mockito.Mockito
|
|||||||
import org.springframework.data.redis.connection.Message
|
import org.springframework.data.redis.connection.Message
|
||||||
import org.springframework.data.redis.connection.MessageListener
|
import org.springframework.data.redis.connection.MessageListener
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate
|
import org.springframework.data.redis.core.StringRedisTemplate
|
||||||
import org.springframework.data.redis.listener.PatternTopic
|
import org.springframework.data.redis.listener.ChannelTopic
|
||||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer
|
||||||
import org.springframework.web.socket.TextMessage
|
import org.springframework.web.socket.TextMessage
|
||||||
import org.springframework.web.socket.WebSocketSession
|
import org.springframework.web.socket.WebSocketSession
|
||||||
@@ -29,13 +29,13 @@ class UserCreatorChatRoomMessageBrokerTest {
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("room channel로 target member와 payload를 publish한다")
|
@DisplayName("고정 room channel로 target member와 payload를 publish한다")
|
||||||
fun shouldPublishMessageToRoomChannel() {
|
fun shouldPublishMessageToRoomChannel() {
|
||||||
broker.publish(roomId = 10L, memberId = 20L, payload = "{\"type\":\"MESSAGE\"}")
|
broker.publish(roomId = 10L, memberId = 20L, payload = "{\"type\":\"MESSAGE\"}")
|
||||||
|
|
||||||
val messageCaptor = ArgumentCaptor.forClass(String::class.java)
|
val messageCaptor = ArgumentCaptor.forClass(String::class.java)
|
||||||
Mockito.verify(stringRedisTemplate).convertAndSend(
|
Mockito.verify(stringRedisTemplate).convertAndSend(
|
||||||
Mockito.eq("v2:user-creator-chat:ws:room:10"),
|
Mockito.eq("v2:user-creator-chat:ws:room"),
|
||||||
messageCaptor.capture()
|
messageCaptor.capture()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -46,11 +46,11 @@ class UserCreatorChatRoomMessageBrokerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("생성 시 ws room pattern topic을 구독한다")
|
@DisplayName("생성 시 ws room 고정 channel topic을 구독한다")
|
||||||
fun shouldSubscribeRoomPatternOnCreation() {
|
fun shouldSubscribeRoomChannelOnCreation() {
|
||||||
Mockito.verify(listenerContainer).addMessageListener(
|
Mockito.verify(listenerContainer).addMessageListener(
|
||||||
Mockito.any(MessageListener::class.java),
|
Mockito.any(MessageListener::class.java),
|
||||||
Mockito.eq(PatternTopic("v2:user-creator-chat:ws:room:*"))
|
Mockito.eq(ChannelTopic("v2:user-creator-chat:ws:room"))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user