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

Add RestlikeMessage codable model

parent 90d13821
No related branches found
No related tags found
1 merge request!3Bindings models wrapper
import Foundation
public struct RestlikeMessage: Equatable {
public init(
version: Int,
headers: Data,
content: Data,
method: Int,
uri: String,
error: String
) {
self.version = version
self.headers = headers
self.content = content
self.method = method
self.uri = uri
self.error = error
}
public var version: Int
public var headers: Data
public var content: Data
public var method: Int
public var uri: String
public var error: String
}
extension RestlikeMessage: Codable {
enum CodingKeys: String, CodingKey {
case version = "Version"
case headers = "Headers"
case content = "Content"
case method = "Method"
case uri = "URI"
case error = "Error"
}
}
import CustomDump
import XCTest
@testable import ElixxirDAppsSDK
final class RestlikeMessageTests: XCTestCase {
func testCoding() throws {
let headers = secureRandomData(count: 32)
let content = secureRandomData(count: 32)
let jsonString = """
{
"Version": 1,
"Headers": \(headers.jsonEncodedBase64()),
"Content": \(content.jsonEncodedBase64()),
"Method": 2,
"URI": "xx://CmixRestlike/rest",
"Error": ""
}
"""
let jsonData = jsonString.data(using: .utf8)!
let decoder = JSONDecoder()
decoder.dataDecodingStrategy = .base64
let message = try decoder.decode(RestlikeMessage.self, from: jsonData)
XCTAssertNoDifference(message, RestlikeMessage(
version: 1,
headers: headers,
content: content,
method: 2,
uri: "xx://CmixRestlike/rest",
error: ""
))
let encoder = JSONEncoder()
encoder.dataEncodingStrategy = .base64
let encodedMessage = try encoder.encode(message)
let decodedMessage = try decoder.decode(RestlikeMessage.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