Coverage Summary for Class: BridgeMessageValidator (cloud.mindbox.mobile_sdk.inapp.data.validators)

Class Class, % Method, % Branch, % Line, % Instruction, %
BridgeMessageValidator 100% (1/1) 100% (2/2) 92.9% (13/14) 92% (23/25) 94.7% (125/132)


 package cloud.mindbox.mobile_sdk.inapp.data.validators
 
 import cloud.mindbox.mobile_sdk.annotations.InternalMindboxApi
 import cloud.mindbox.mobile_sdk.inapp.presentation.view.BridgeMessage
 import cloud.mindbox.mobile_sdk.logger.mindboxLogW
 
 @OptIn(InternalMindboxApi::class)
 internal class BridgeMessageValidator : Validator<BridgeMessage?> {
     override fun isValid(item: BridgeMessage?): Boolean {
         item ?: return false
 
         runCatching {
             if (item.id.isBlank()) {
                 mindboxLogW("BridgeMessage id is empty")
                 return false
             }
 
             if (item.type !in listOf(
                     BridgeMessage.TYPE_REQUEST,
                     BridgeMessage.TYPE_RESPONSE,
                     BridgeMessage.TYPE_ERROR
                 )
             ) {
                 mindboxLogW("BridgeMessage type ${item.type} is not supported")
                 return false
             }
 
             if (item.action.name.isEmpty()) {
                 mindboxLogW("BridgeMessage action is empty")
                 return false
             }
 
             if (item.timestamp <= 0L) {
                 mindboxLogW("BridgeMessage timestamp must be positive")
                 return false
             }
 
             if (item.version > BridgeMessage.VERSION) {
                 mindboxLogW("BridgeMessage version ${item.version} is not supported")
                 return false
             }
         }.onFailure { error ->
             mindboxLogW("BridgeMessage validation error: $error")
             return false
         }
 
         return true
     }
 }