Skip to content
Snippets Groups Projects
Commit 90d13821 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add Message codable model

parent bb00851c
No related branches found
No related tags found
1 merge request!3Bindings models wrapper
import Foundation
public struct Message: Equatable {
public init(
messageType: Int,
id: Data,
payload: Data,
sender: Data,
recipientId: Data,
ephemeralId: Int,
timestamp: Int,
encrypted: Bool,
roundId: Int
) {
self.messageType = messageType
self.id = id
self.payload = payload
self.sender = sender
self.recipientId = recipientId
self.ephemeralId = ephemeralId
self.timestamp = timestamp
self.encrypted = encrypted
self.roundId = roundId
}
public var messageType: Int
public var id: Data
public var payload: Data
public var sender: Data
public var recipientId: Data
public var ephemeralId: Int
public var timestamp: Int
public var encrypted: Bool
public var roundId: Int
}
extension Message: Codable {
enum CodingKeys: String, CodingKey {
case messageType = "MessageType"
case id = "ID"
case payload = "Payload"
case sender = "Sender"
case recipientId = "RecipientID"
case ephemeralId = "EphemeralID"
case timestamp = "Timestamp"
case encrypted = "Encrypted"
case roundId = "RoundId"
}
}
import CustomDump
import XCTest
@testable import ElixxirDAppsSDK
final class MessageTests: XCTestCase {
func testCoding() throws {
let id = secureRandomData(count: 32)
let payload = secureRandomData(count: 32)
let sender = secureRandomData(count: 32)
let recipientId = secureRandomData(count: 32)
let jsonString = """
{
"MessageType": 1,
"ID": \(id.jsonEncodedBase64()),
"Payload": \(payload.jsonEncodedBase64()),
"Sender": \(sender.jsonEncodedBase64()),
"RecipientID": \(recipientId.jsonEncodedBase64()),
"EphemeralID": 17,
"Timestamp": 1653580439357351000,
"Encrypted": false,
"RoundId": 19
}
"""
let jsonData = jsonString.data(using: .utf8)!
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base64
let message = try decoder.decode(Message.self, from: jsonData)
XCTAssertNoDifference(message, Message(
messageType: 1,
id: id,
payload: payload,
sender: sender,
recipientId: recipientId,
ephemeralId: 17,
timestamp: 1_653_580_439_357_351_000,
encrypted: false,
roundId: 19
))
let encoder = JSONEncoder()
encoder.dataEncodingStrategy = .base64
let encodedMessage = try encoder.encode(message)
let decodedMessage = try decoder.decode(Message.self, from: encodedMessage)
XCTAssertNoDifference(decodedMessage, message)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment