From 5e4990b41de4219c9b9cbb33bd971c2af5f9fa16 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 10:52:04 +0200
Subject: [PATCH 01/11] Add ElixxirDAppsSDKTests target

---
 Package.swift                                         | 7 +++++++
 Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift | 8 ++++++++
 2 files changed, 15 insertions(+)
 create mode 100644 Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift

diff --git a/Package.swift b/Package.swift
index 1c347fa7..4cf23277 100644
--- a/Package.swift
+++ b/Package.swift
@@ -34,6 +34,13 @@ let package = Package(
       ],
       swiftSettings: swiftSettings
     ),
+    .testTarget(
+      name: "ElixxirDAppsSDKTests",
+      dependencies: [
+        .target(name: "ElixxirDAppsSDK")
+      ],
+      swiftSettings: swiftSettings
+    ),
     .binaryTarget(
       name: "Bindings",
       path: "Frameworks/Bindings.xcframework"
diff --git a/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift b/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift
new file mode 100644
index 00000000..1332921d
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift
@@ -0,0 +1,8 @@
+import XCTest
+@testable import ElixxirDAppsSDK
+
+final class ElixxirDAppsSDKTests: XCTestCase {
+  func testExample() {
+    XCTAssert(true)
+  }
+}
-- 
GitLab


From 38a7aff70e398da79f71d6118ccba813f0a6c349 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 11:21:57 +0200
Subject: [PATCH 02/11] Add Identity codable model

---
 Package.swift                                 | 12 +++++-
 Sources/ElixxirDAppsSDK/Identity.swift        | 27 +++++++++++++
 .../ElixxirDAppsSDKTests/IdentityTests.swift  | 38 +++++++++++++++++++
 Tests/ElixxirDAppsSDKTests/TestHelpers.swift  | 17 +++++++++
 4 files changed, 93 insertions(+), 1 deletion(-)
 create mode 100644 Sources/ElixxirDAppsSDK/Identity.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/IdentityTests.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/TestHelpers.swift

diff --git a/Package.swift b/Package.swift
index 4cf23277..5f0bf3ed 100644
--- a/Package.swift
+++ b/Package.swift
@@ -26,6 +26,12 @@ let package = Package(
       targets: ["ElixxirDAppsSDK"]
     ),
   ],
+  dependencies: [
+    .package(
+      url: "https://github.com/pointfreeco/swift-custom-dump.git",
+      .upToNextMajor(from: "0.4.0")
+    ),
+  ],
   targets: [
     .target(
       name: "ElixxirDAppsSDK",
@@ -37,7 +43,11 @@ let package = Package(
     .testTarget(
       name: "ElixxirDAppsSDKTests",
       dependencies: [
-        .target(name: "ElixxirDAppsSDK")
+        .target(name: "ElixxirDAppsSDK"),
+        .product(
+          name: "CustomDump",
+          package: "swift-custom-dump"
+        ),
       ],
       swiftSettings: swiftSettings
     ),
diff --git a/Sources/ElixxirDAppsSDK/Identity.swift b/Sources/ElixxirDAppsSDK/Identity.swift
new file mode 100644
index 00000000..116fea14
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Identity.swift
@@ -0,0 +1,27 @@
+import Foundation
+
+public struct Identity: Equatable, Codable {
+  enum CodingKeys: String, CodingKey {
+    case id = "ID"
+    case rsaPrivatePem = "RSAPrivatePem"
+    case salt = "Salt"
+    case dhKeyPrivate = "DHKeyPrivate"
+  }
+
+  public init(
+    id: Data,
+    rsaPrivatePem: Data,
+    salt: Data,
+    dhKeyPrivate: Data
+  ) {
+    self.id = id
+    self.rsaPrivatePem = rsaPrivatePem
+    self.salt = salt
+    self.dhKeyPrivate = dhKeyPrivate
+  }
+
+  public var id: Data
+  public var rsaPrivatePem: Data
+  public var salt: Data
+  public var dhKeyPrivate: Data
+}
diff --git a/Tests/ElixxirDAppsSDKTests/IdentityTests.swift b/Tests/ElixxirDAppsSDKTests/IdentityTests.swift
new file mode 100644
index 00000000..1a4fb85f
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/IdentityTests.swift
@@ -0,0 +1,38 @@
+import CustomDump
+import XCTest
+@testable import ElixxirDAppsSDK
+
+final class IdentityTests: XCTestCase {
+  func testCoding() throws {
+    let userId = secureRandomData(count: 32)
+    let rsaPrivateKey = secureRandomData(count: 32)
+    let salt = secureRandomData(count: 32)
+    let dhKeyPrivate = secureRandomData(count: 32)
+    let jsonString = """
+    {
+      "ID": \(userId.jsonEncodedBase64()),
+      "RSAPrivatePem": \(rsaPrivateKey.jsonEncodedBase64()),
+      "Salt": \(salt.jsonEncodedBase64()),
+      "DHKeyPrivate": \(dhKeyPrivate.jsonEncodedBase64())
+    }
+    """
+    let jsonData = jsonString.data(using: .utf8)!
+    let decoder = JSONDecoder()
+    decoder.dataDecodingStrategy = .base64
+    let identity = try decoder.decode(Identity.self, from: jsonData)
+
+    XCTAssertNoDifference(identity, Identity(
+      id: userId,
+      rsaPrivatePem: rsaPrivateKey,
+      salt: salt,
+      dhKeyPrivate: dhKeyPrivate
+    ))
+
+    let encoder = JSONEncoder()
+    encoder.dataEncodingStrategy = .base64
+    let encodedIdentity = try encoder.encode(identity)
+    let decodedIdentity = try decoder.decode(Identity.self, from: encodedIdentity)
+
+    XCTAssertNoDifference(decodedIdentity, identity)
+  }
+}
diff --git a/Tests/ElixxirDAppsSDKTests/TestHelpers.swift b/Tests/ElixxirDAppsSDKTests/TestHelpers.swift
new file mode 100644
index 00000000..ff545db0
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/TestHelpers.swift
@@ -0,0 +1,17 @@
+import Foundation
+
+func secureRandomData(count: Int) -> Data {
+  var bytes = [Int8](repeating: 0, count: count)
+  let status = SecRandomCopyBytes(kSecRandomDefault, count, &bytes)
+  assert(status == errSecSuccess)
+  return Data(bytes: bytes, count: count)
+}
+
+extension Data {
+  func jsonEncodedBase64() -> String {
+    let encoder = JSONEncoder()
+    encoder.dataEncodingStrategy = .base64
+    let data = try! encoder.encode(self)
+    return String(data: data, encoding: .utf8)!
+  }
+}
-- 
GitLab


From 19b8f3ac7d6c02b20e47924d0ad7836aae6ae61d Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 11:22:08 +0200
Subject: [PATCH 03/11] Clean up

---
 Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift | 8 --------
 1 file changed, 8 deletions(-)
 delete mode 100644 Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift

diff --git a/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift b/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift
deleted file mode 100644
index 1332921d..00000000
--- a/Tests/ElixxirDAppsSDKTests/ElixxirDAppsSDKTests.swift
+++ /dev/null
@@ -1,8 +0,0 @@
-import XCTest
-@testable import ElixxirDAppsSDK
-
-final class ElixxirDAppsSDKTests: XCTestCase {
-  func testExample() {
-    XCTAssert(true)
-  }
-}
-- 
GitLab


From 0f945331be8ada79f10293a3b8ea84773cf5aedb Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 11:52:38 +0200
Subject: [PATCH 04/11] Refactor

---
 Sources/ElixxirDAppsSDK/Identity.swift | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/Sources/ElixxirDAppsSDK/Identity.swift b/Sources/ElixxirDAppsSDK/Identity.swift
index 116fea14..f192f6af 100644
--- a/Sources/ElixxirDAppsSDK/Identity.swift
+++ b/Sources/ElixxirDAppsSDK/Identity.swift
@@ -1,13 +1,6 @@
 import Foundation
 
-public struct Identity: Equatable, Codable {
-  enum CodingKeys: String, CodingKey {
-    case id = "ID"
-    case rsaPrivatePem = "RSAPrivatePem"
-    case salt = "Salt"
-    case dhKeyPrivate = "DHKeyPrivate"
-  }
-
+public struct Identity: Equatable {
   public init(
     id: Data,
     rsaPrivatePem: Data,
@@ -25,3 +18,12 @@ public struct Identity: Equatable, Codable {
   public var salt: Data
   public var dhKeyPrivate: Data
 }
+
+extension Identity: Codable {
+  enum CodingKeys: String, CodingKey {
+    case id = "ID"
+    case rsaPrivatePem = "RSAPrivatePem"
+    case salt = "Salt"
+    case dhKeyPrivate = "DHKeyPrivate"
+  }
+}
-- 
GitLab


From 00ad36391484d1a91bd73873c5821203e2da82ef Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:13:47 +0200
Subject: [PATCH 05/11] Add MessageSendReport codable model

---
 .../ElixxirDAppsSDK/MessageSendReport.swift   | 51 +++++++++++++++++++
 .../MessageSendReportTests.swift              | 35 +++++++++++++
 2 files changed, 86 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/MessageSendReport.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift

diff --git a/Sources/ElixxirDAppsSDK/MessageSendReport.swift b/Sources/ElixxirDAppsSDK/MessageSendReport.swift
new file mode 100644
index 00000000..687fc08d
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/MessageSendReport.swift
@@ -0,0 +1,51 @@
+import Foundation
+
+public struct MessageSendReport: Equatable {
+  public init(
+    roundList: [Int],
+    messageId: Data,
+    timestamp: Int
+  ) {
+    self.roundList = roundList
+    self.messageId = messageId
+    self.timestamp = timestamp
+  }
+
+  public var roundList: [Int]
+  public var messageId: Data
+  public var timestamp: Int
+}
+
+extension MessageSendReport: Codable {
+  enum CodingKeys: String, CodingKey {
+    case roundList = "RoundList"
+    case messageId = "MessageID"
+    case timestamp = "Timestamp"
+  }
+
+  enum RoundListCodingKeys: String, CodingKey {
+    case rounds = "Rounds"
+  }
+
+  public init(from decoder: Decoder) throws {
+    let container = try decoder.container(keyedBy: CodingKeys.self)
+    messageId = try container.decode(Data.self, forKey: .messageId)
+    timestamp = try container.decode(Int.self, forKey: .timestamp)
+    let roundListContainer = try container.nestedContainer(
+      keyedBy: RoundListCodingKeys.self,
+      forKey: .roundList
+    )
+    roundList = try roundListContainer.decode([Int].self, forKey: .rounds)
+  }
+
+  public func encode(to encoder: Encoder) throws {
+    var container = encoder.container(keyedBy: CodingKeys.self)
+    try container.encode(messageId, forKey: .messageId)
+    try container.encode(timestamp, forKey: .timestamp)
+    var roundListContainer = container.nestedContainer(
+      keyedBy: RoundListCodingKeys.self,
+      forKey: .roundList
+    )
+    try roundListContainer.encode(roundList, forKey: .rounds)
+  }
+}
diff --git a/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift b/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift
new file mode 100644
index 00000000..9adb1f2b
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift
@@ -0,0 +1,35 @@
+import CustomDump
+import XCTest
+@testable import ElixxirDAppsSDK
+
+final class MessageSendReportTests: XCTestCase {
+  func testCoding() throws {
+    let messageId = secureRandomData(count: 32)
+    let jsonString = """
+    {
+      "RoundList": {
+        "Rounds": [1,5,9]
+      },
+      "MessageID": \(messageId.jsonEncodedBase64()),
+      "Timestamp": 1653582683183384000
+    }
+    """
+    let jsonData = jsonString.data(using: .utf8)!
+    let decoder = JSONDecoder()
+    decoder.dataDecodingStrategy = .base64
+    let report = try decoder.decode(MessageSendReport.self, from: jsonData)
+
+    XCTAssertNoDifference(report, MessageSendReport(
+      roundList: [1, 5, 9],
+      messageId: messageId,
+      timestamp: 1_653_582_683_183_384_000
+    ))
+
+    let encoder = JSONEncoder()
+    encoder.dataEncodingStrategy = .base64
+    let encodedReport = try encoder.encode(report)
+    let decodedReport = try decoder.decode(MessageSendReport.self, from: encodedReport)
+
+    XCTAssertNoDifference(decodedReport, report)
+  }
+}
-- 
GitLab


From bb00851ce2af8607d51bfc5a26720c4f2dcd0039 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:18:46 +0200
Subject: [PATCH 06/11] Add ContactFact codable model

---
 Sources/ElixxirDAppsSDK/ContactFact.swift     | 19 ++++++++++++
 .../ContactFactTests.swift                    | 30 +++++++++++++++++++
 2 files changed, 49 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/ContactFact.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/ContactFactTests.swift

diff --git a/Sources/ElixxirDAppsSDK/ContactFact.swift b/Sources/ElixxirDAppsSDK/ContactFact.swift
new file mode 100644
index 00000000..f4401028
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/ContactFact.swift
@@ -0,0 +1,19 @@
+public struct ContactFact: Equatable {
+  public init(
+    fact: String,
+    type: Int
+  ) {
+    self.fact = fact
+    self.type = type
+  }
+
+  public var fact: String
+  public var type: Int
+}
+
+extension ContactFact: Codable {
+  enum CodingKeys: String, CodingKey {
+    case fact = "Fact"
+    case type = "Type"
+  }
+}
diff --git a/Tests/ElixxirDAppsSDKTests/ContactFactTests.swift b/Tests/ElixxirDAppsSDKTests/ContactFactTests.swift
new file mode 100644
index 00000000..a95b0b9e
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/ContactFactTests.swift
@@ -0,0 +1,30 @@
+import CustomDump
+import XCTest
+@testable import ElixxirDAppsSDK
+
+final class ContactFactTests: XCTestCase {
+  func testCoding() throws {
+    let jsonString = """
+    {
+      "Fact": "Zezima",
+      "Type": 0
+    }
+    """
+    let jsonData = jsonString.data(using: .utf8)!
+    let decoder = JSONDecoder()
+    decoder.dataDecodingStrategy = .base64
+    let fact = try decoder.decode(ContactFact.self, from: jsonData)
+
+    XCTAssertNoDifference(fact, ContactFact(
+      fact: "Zezima",
+      type: 0
+    ))
+
+    let encoder = JSONEncoder()
+    encoder.dataEncodingStrategy = .base64
+    let encodedFact = try encoder.encode(fact)
+    let decodedFact = try decoder.decode(ContactFact.self, from: encodedFact)
+
+    XCTAssertNoDifference(decodedFact, fact)
+  }
+}
-- 
GitLab


From 90d138212a3a14cdb7bba327ec29eb5645b2a467 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:27:49 +0200
Subject: [PATCH 07/11] Add Message codable model

---
 Sources/ElixxirDAppsSDK/Message.swift         | 49 +++++++++++++++++++
 Tests/ElixxirDAppsSDKTests/MessageTests.swift | 48 ++++++++++++++++++
 2 files changed, 97 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/Message.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/MessageTests.swift

diff --git a/Sources/ElixxirDAppsSDK/Message.swift b/Sources/ElixxirDAppsSDK/Message.swift
new file mode 100644
index 00000000..b6fc6c4c
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Message.swift
@@ -0,0 +1,49 @@
+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"
+  }
+}
diff --git a/Tests/ElixxirDAppsSDKTests/MessageTests.swift b/Tests/ElixxirDAppsSDKTests/MessageTests.swift
new file mode 100644
index 00000000..c01a880f
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/MessageTests.swift
@@ -0,0 +1,48 @@
+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)
+  }
+}
-- 
GitLab


From 58bbf5f7493ff32e09e7b0c77f78e97c39737c01 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:33:30 +0200
Subject: [PATCH 08/11] Add RestlikeMessage codable model

---
 Sources/ElixxirDAppsSDK/RestlikeMessage.swift | 37 +++++++++++++++++
 .../RestlikeMessageTests.swift                | 40 +++++++++++++++++++
 2 files changed, 77 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/RestlikeMessage.swift
 create mode 100644 Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift

diff --git a/Sources/ElixxirDAppsSDK/RestlikeMessage.swift b/Sources/ElixxirDAppsSDK/RestlikeMessage.swift
new file mode 100644
index 00000000..48b0e5ef
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/RestlikeMessage.swift
@@ -0,0 +1,37 @@
+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"
+  }
+}
diff --git a/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift
new file mode 100644
index 00000000..3471119a
--- /dev/null
+++ b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift
@@ -0,0 +1,40 @@
+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)
+  }
+}
-- 
GitLab


From 21cfba1af09c6e8b19971d42308d09a628ba9a75 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:37:05 +0200
Subject: [PATCH 09/11] Rename ContactFact model to Fact

---
 Sources/ElixxirDAppsSDK/{ContactFact.swift => Fact.swift}   | 4 ++--
 .../{ContactFactTests.swift => FactTests.swift}             | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)
 rename Sources/ElixxirDAppsSDK/{ContactFact.swift => Fact.swift} (77%)
 rename Tests/ElixxirDAppsSDKTests/{ContactFactTests.swift => FactTests.swift} (74%)

diff --git a/Sources/ElixxirDAppsSDK/ContactFact.swift b/Sources/ElixxirDAppsSDK/Fact.swift
similarity index 77%
rename from Sources/ElixxirDAppsSDK/ContactFact.swift
rename to Sources/ElixxirDAppsSDK/Fact.swift
index f4401028..fa4a277b 100644
--- a/Sources/ElixxirDAppsSDK/ContactFact.swift
+++ b/Sources/ElixxirDAppsSDK/Fact.swift
@@ -1,4 +1,4 @@
-public struct ContactFact: Equatable {
+public struct Fact: Equatable {
   public init(
     fact: String,
     type: Int
@@ -11,7 +11,7 @@ public struct ContactFact: Equatable {
   public var type: Int
 }
 
-extension ContactFact: Codable {
+extension Fact: Codable {
   enum CodingKeys: String, CodingKey {
     case fact = "Fact"
     case type = "Type"
diff --git a/Tests/ElixxirDAppsSDKTests/ContactFactTests.swift b/Tests/ElixxirDAppsSDKTests/FactTests.swift
similarity index 74%
rename from Tests/ElixxirDAppsSDKTests/ContactFactTests.swift
rename to Tests/ElixxirDAppsSDKTests/FactTests.swift
index a95b0b9e..6c5abbf3 100644
--- a/Tests/ElixxirDAppsSDKTests/ContactFactTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/FactTests.swift
@@ -13,9 +13,9 @@ final class ContactFactTests: XCTestCase {
     let jsonData = jsonString.data(using: .utf8)!
     let decoder = JSONDecoder()
     decoder.dataDecodingStrategy = .base64
-    let fact = try decoder.decode(ContactFact.self, from: jsonData)
+    let fact = try decoder.decode(Fact.self, from: jsonData)
 
-    XCTAssertNoDifference(fact, ContactFact(
+    XCTAssertNoDifference(fact, Fact(
       fact: "Zezima",
       type: 0
     ))
@@ -23,7 +23,7 @@ final class ContactFactTests: XCTestCase {
     let encoder = JSONEncoder()
     encoder.dataEncodingStrategy = .base64
     let encodedFact = try encoder.encode(fact)
-    let decodedFact = try decoder.decode(ContactFact.self, from: encodedFact)
+    let decodedFact = try decoder.decode(Fact.self, from: encodedFact)
 
     XCTAssertNoDifference(decodedFact, fact)
   }
-- 
GitLab


From a722a34e321553aca64ec1cb2011e17e1b48ede1 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:38:33 +0200
Subject: [PATCH 10/11] Refactor

---
 Tests/ElixxirDAppsSDKTests/FactTests.swift | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Tests/ElixxirDAppsSDKTests/FactTests.swift b/Tests/ElixxirDAppsSDKTests/FactTests.swift
index 6c5abbf3..21820a78 100644
--- a/Tests/ElixxirDAppsSDKTests/FactTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/FactTests.swift
@@ -2,7 +2,7 @@ import CustomDump
 import XCTest
 @testable import ElixxirDAppsSDK
 
-final class ContactFactTests: XCTestCase {
+final class FactTests: XCTestCase {
   func testCoding() throws {
     let jsonString = """
     {
-- 
GitLab


From 7230cd07a534cb92065bdb8ecddc32a8599c7c74 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 3 Jun 2022 12:52:27 +0200
Subject: [PATCH 11/11] Update codable models test data

Use example JSONs from Bindings documentation
---
 .../ElixxirDAppsSDKTests/IdentityTests.swift  | 20 ++++++++-----------
 .../MessageSendReportTests.swift              |  5 ++---
 Tests/ElixxirDAppsSDKTests/MessageTests.swift | 20 ++++++++-----------
 .../RestlikeMessageTests.swift                | 10 ++++------
 Tests/ElixxirDAppsSDKTests/TestHelpers.swift  | 17 ----------------
 5 files changed, 22 insertions(+), 50 deletions(-)
 delete mode 100644 Tests/ElixxirDAppsSDKTests/TestHelpers.swift

diff --git a/Tests/ElixxirDAppsSDKTests/IdentityTests.swift b/Tests/ElixxirDAppsSDKTests/IdentityTests.swift
index 1a4fb85f..b5176345 100644
--- a/Tests/ElixxirDAppsSDKTests/IdentityTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/IdentityTests.swift
@@ -4,16 +4,12 @@ import XCTest
 
 final class IdentityTests: XCTestCase {
   func testCoding() throws {
-    let userId = secureRandomData(count: 32)
-    let rsaPrivateKey = secureRandomData(count: 32)
-    let salt = secureRandomData(count: 32)
-    let dhKeyPrivate = secureRandomData(count: 32)
     let jsonString = """
     {
-      "ID": \(userId.jsonEncodedBase64()),
-      "RSAPrivatePem": \(rsaPrivateKey.jsonEncodedBase64()),
-      "Salt": \(salt.jsonEncodedBase64()),
-      "DHKeyPrivate": \(dhKeyPrivate.jsonEncodedBase64())
+      "ID": "emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+      "RSAPrivatePem": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBNU15dTdhYjBJOS9UL1BFUUxtd2x3ejZHV3FjMUNYemVIVXhoVEc4bmg1WWRWSXMxCmJ2THpBVjNOMDJxdXN6K2s4TVFEWjBtejMzdkswUmhPczZIY0NUSFdzTEpXRkE5WWpzWWlCRi9qTDd1bmd1ckIKL2tvK1JJSnNrWGFWaEZaazRGdERoRXhTNWY4RnR0Qmk1NmNLZmdJQlVKT3ozZi9qQllTMkxzMlJ6cWV5YXM3SApjV2RaME9TclBTT3BiYlViU1FPbS9LWnlweGZHU21yZ2oxRUZuU1dZZ2xGZTdUOTRPbHF5MG14QTV5clVXbHorCk9sK3hHbXpCNUp4WUFSMU9oMFQrQTk4RWMrTUZHNm43L1MraDdzRDgybGRnVnJmbStFTzRCdmFKeTRESGZGMWgKNnp6QnVnY25NUVFGc0dLeDFYWC9COTVMdUpPVjdyeXlDbzZGbHdJREFRQUJBb0lCQVFDaUh6OGNlcDZvQk9RTAphUzBVRitHeU5VMnlVcVRNTWtTWThoUkh1c09CMmFheXoybHZVb3RLUHBPbjZRSWRWVTJrcE4vY2dtY0lSb2x5CkhBMDRUOHJBWVNaRlVqaVlRajkzKzRFREpJYXd2Z0YyVEs1bFoyb3oxVTdreStncU82V0RMR2Z0Q0wvODVQWEIKa210aXhnUXpRV3g1RWcvemtHdm03eURBalQxeDloNytsRjJwNFlBam5kT2xTS0dmQjFZeTR1RXBQd0kwc1lWdgpKQWc0MEFxbllZUmt4emJPbmQxWGNjdEJFN2Z1VDdrWXhoeSs3WXYrUTJwVy9BYmh6NGlHOEY1MW9GMGZwV0czCmlISDhsVXZFTkp2SUZEVHZ0UEpESlFZalBRN3lUbGlGZUdrMXZUQkcyQkpQNExzVzhpbDZOeUFuRktaY1hOQ24KeHVCendiSlJBb0dCQVBUK0dGTVJGRHRHZVl6NmwzZmg3UjJ0MlhrMysvUmpvR3BDUWREWDhYNERqR1pVd1RGVQpOS2tQTTNjS29ia2RBYlBDb3FpL0tOOVBibk9QVlZ3R3JkSE9vSnNibFVHYmJGamFTUzJQMFZnNUVhTC9rT2dUCmxMMUdoVFpIUWk1VUlMM0p4M1Z3T0ZRQ3RQOU1UQlQ0UEQvcEFLbDg3VTJXN3JTY1dGV1ZGbFNkQW9HQkFPOFUKVmhHWkRpVGFKTWVtSGZIdVYrNmtzaUlsam9aUVVzeGpmTGNMZ2NjV2RmTHBqS0ZWTzJNN3NqcEJEZ0w4NmFnegorVk14ZkQzZ1l0SmNWN01aMVcwNlZ6TlNVTHh3a1dRY1hXUWdDaXc5elpyYlhCUmZRNUVjMFBlblVoWWVwVzF5CkpkTC8rSlpQeDJxSzVrQytiWU5EdmxlNWdpcjlDSGVzTlR5enVyckRBb0dCQUl0cTJnN1RaazhCSVFUUVNrZ24Kb3BkRUtzRW4wZExXcXlBdENtVTlyaWpHL2l2eHlXczMveXZDQWNpWm5VVEp0QUZISHVlbXVTeXplQ2g5QmRkegoyWkRPNUdqQVBxVHlQS3NudFlNZkY4UDczZ1NES1VSWWVFbHFDejdET0c5QzRzcitPK3FoN1B3cCtqUmFoK1ZiCkNuWllNMDlBVDQ3YStJYUJmbWRkaXpLbEFvR0JBSmo1dkRDNmJIQnNISWlhNUNJL1RZaG5YWXUzMkVCYytQM0sKMHF3VThzOCtzZTNpUHBla2Y4RjVHd3RuUU4zc2tsMk1GQWFGYldmeVFZazBpUEVTb0p1cGJzNXA1enNNRkJ1bwpncUZrVnQ0RUZhRDJweTVwM2tQbDJsZjhlZXVwWkZScGE0WmRQdVIrMjZ4eWYrNEJhdlZJeld3NFNPL1V4Q3crCnhqbTNEczRkQW9HQWREL0VOa1BjU004c1BCM3JSWW9MQ2twcUV2U0MzbVZSbjNJd3c1WFAwcDRRVndhRmR1ckMKYUhtSE1EekNrNEUvb0haQVhFdGZ2S2tRaUI4MXVYM2c1aVo4amdYUVhXUHRteTVIcVVhcWJYUTlENkxWc3B0egpKL3R4SWJLMXp5c1o2bk9IY1VoUUwyVVF6SlBBRThZNDdjYzVzTThEN3kwZjJ0QURTQUZNMmN3PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==",
+      "Salt": "4kk02v0NIcGtlobZ/xkxqWz8uH/ams/gjvQm14QT0dI=",
+      "DHKeyPrivate": "eyJWYWx1ZSI6NDU2MDgzOTEzMjA0OTIyODA5Njg2MDI3MzQ0MzM3OTA0MzAyODYwMjM2NDk2NDM5NDI4NTcxMTMwNDMzOTQwMzgyMTIyMjY4OTQzNTMyMjIyMzc1MTkzNTEzMjU4MjA4MDA0NTczMDY4MjEwNzg2NDI5NjA1MjA0OTA3MjI2ODI5OTc3NTczMDkxODY0NTY3NDExMDExNjQxNCwiRmluZ2VycHJpbnQiOjE2ODAxNTQxNTExMjMzMDk4MzYzfQ=="
     }
     """
     let jsonData = jsonString.data(using: .utf8)!
@@ -22,10 +18,10 @@ final class IdentityTests: XCTestCase {
     let identity = try decoder.decode(Identity.self, from: jsonData)
 
     XCTAssertNoDifference(identity, Identity(
-      id: userId,
-      rsaPrivatePem: rsaPrivateKey,
-      salt: salt,
-      dhKeyPrivate: dhKeyPrivate
+      id: Data(base64Encoded: "emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD")!,
+      rsaPrivatePem: Data(base64Encoded: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBNU15dTdhYjBJOS9UL1BFUUxtd2x3ejZHV3FjMUNYemVIVXhoVEc4bmg1WWRWSXMxCmJ2THpBVjNOMDJxdXN6K2s4TVFEWjBtejMzdkswUmhPczZIY0NUSFdzTEpXRkE5WWpzWWlCRi9qTDd1bmd1ckIKL2tvK1JJSnNrWGFWaEZaazRGdERoRXhTNWY4RnR0Qmk1NmNLZmdJQlVKT3ozZi9qQllTMkxzMlJ6cWV5YXM3SApjV2RaME9TclBTT3BiYlViU1FPbS9LWnlweGZHU21yZ2oxRUZuU1dZZ2xGZTdUOTRPbHF5MG14QTV5clVXbHorCk9sK3hHbXpCNUp4WUFSMU9oMFQrQTk4RWMrTUZHNm43L1MraDdzRDgybGRnVnJmbStFTzRCdmFKeTRESGZGMWgKNnp6QnVnY25NUVFGc0dLeDFYWC9COTVMdUpPVjdyeXlDbzZGbHdJREFRQUJBb0lCQVFDaUh6OGNlcDZvQk9RTAphUzBVRitHeU5VMnlVcVRNTWtTWThoUkh1c09CMmFheXoybHZVb3RLUHBPbjZRSWRWVTJrcE4vY2dtY0lSb2x5CkhBMDRUOHJBWVNaRlVqaVlRajkzKzRFREpJYXd2Z0YyVEs1bFoyb3oxVTdreStncU82V0RMR2Z0Q0wvODVQWEIKa210aXhnUXpRV3g1RWcvemtHdm03eURBalQxeDloNytsRjJwNFlBam5kT2xTS0dmQjFZeTR1RXBQd0kwc1lWdgpKQWc0MEFxbllZUmt4emJPbmQxWGNjdEJFN2Z1VDdrWXhoeSs3WXYrUTJwVy9BYmh6NGlHOEY1MW9GMGZwV0czCmlISDhsVXZFTkp2SUZEVHZ0UEpESlFZalBRN3lUbGlGZUdrMXZUQkcyQkpQNExzVzhpbDZOeUFuRktaY1hOQ24KeHVCendiSlJBb0dCQVBUK0dGTVJGRHRHZVl6NmwzZmg3UjJ0MlhrMysvUmpvR3BDUWREWDhYNERqR1pVd1RGVQpOS2tQTTNjS29ia2RBYlBDb3FpL0tOOVBibk9QVlZ3R3JkSE9vSnNibFVHYmJGamFTUzJQMFZnNUVhTC9rT2dUCmxMMUdoVFpIUWk1VUlMM0p4M1Z3T0ZRQ3RQOU1UQlQ0UEQvcEFLbDg3VTJXN3JTY1dGV1ZGbFNkQW9HQkFPOFUKVmhHWkRpVGFKTWVtSGZIdVYrNmtzaUlsam9aUVVzeGpmTGNMZ2NjV2RmTHBqS0ZWTzJNN3NqcEJEZ0w4NmFnegorVk14ZkQzZ1l0SmNWN01aMVcwNlZ6TlNVTHh3a1dRY1hXUWdDaXc5elpyYlhCUmZRNUVjMFBlblVoWWVwVzF5CkpkTC8rSlpQeDJxSzVrQytiWU5EdmxlNWdpcjlDSGVzTlR5enVyckRBb0dCQUl0cTJnN1RaazhCSVFUUVNrZ24Kb3BkRUtzRW4wZExXcXlBdENtVTlyaWpHL2l2eHlXczMveXZDQWNpWm5VVEp0QUZISHVlbXVTeXplQ2g5QmRkegoyWkRPNUdqQVBxVHlQS3NudFlNZkY4UDczZ1NES1VSWWVFbHFDejdET0c5QzRzcitPK3FoN1B3cCtqUmFoK1ZiCkNuWllNMDlBVDQ3YStJYUJmbWRkaXpLbEFvR0JBSmo1dkRDNmJIQnNISWlhNUNJL1RZaG5YWXUzMkVCYytQM0sKMHF3VThzOCtzZTNpUHBla2Y4RjVHd3RuUU4zc2tsMk1GQWFGYldmeVFZazBpUEVTb0p1cGJzNXA1enNNRkJ1bwpncUZrVnQ0RUZhRDJweTVwM2tQbDJsZjhlZXVwWkZScGE0WmRQdVIrMjZ4eWYrNEJhdlZJeld3NFNPL1V4Q3crCnhqbTNEczRkQW9HQWREL0VOa1BjU004c1BCM3JSWW9MQ2twcUV2U0MzbVZSbjNJd3c1WFAwcDRRVndhRmR1ckMKYUhtSE1EekNrNEUvb0haQVhFdGZ2S2tRaUI4MXVYM2c1aVo4amdYUVhXUHRteTVIcVVhcWJYUTlENkxWc3B0egpKL3R4SWJLMXp5c1o2bk9IY1VoUUwyVVF6SlBBRThZNDdjYzVzTThEN3kwZjJ0QURTQUZNMmN3PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ==")!,
+      salt: Data(base64Encoded: "4kk02v0NIcGtlobZ/xkxqWz8uH/ams/gjvQm14QT0dI=")!,
+      dhKeyPrivate: Data(base64Encoded: "eyJWYWx1ZSI6NDU2MDgzOTEzMjA0OTIyODA5Njg2MDI3MzQ0MzM3OTA0MzAyODYwMjM2NDk2NDM5NDI4NTcxMTMwNDMzOTQwMzgyMTIyMjY4OTQzNTMyMjIyMzc1MTkzNTEzMjU4MjA4MDA0NTczMDY4MjEwNzg2NDI5NjA1MjA0OTA3MjI2ODI5OTc3NTczMDkxODY0NTY3NDExMDExNjQxNCwiRmluZ2VycHJpbnQiOjE2ODAxNTQxNTExMjMzMDk4MzYzfQ==")!
     ))
 
     let encoder = JSONEncoder()
diff --git a/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift b/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift
index 9adb1f2b..d78a7eea 100644
--- a/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/MessageSendReportTests.swift
@@ -4,13 +4,12 @@ import XCTest
 
 final class MessageSendReportTests: XCTestCase {
   func testCoding() throws {
-    let messageId = secureRandomData(count: 32)
     let jsonString = """
     {
       "RoundList": {
         "Rounds": [1,5,9]
       },
-      "MessageID": \(messageId.jsonEncodedBase64()),
+      "MessageID": "51Yy47uZbP0o2Y9B/kkreDLTB6opUol3M3mYiY2dcdQ=",
       "Timestamp": 1653582683183384000
     }
     """
@@ -21,7 +20,7 @@ final class MessageSendReportTests: XCTestCase {
 
     XCTAssertNoDifference(report, MessageSendReport(
       roundList: [1, 5, 9],
-      messageId: messageId,
+      messageId: Data(base64Encoded: "51Yy47uZbP0o2Y9B/kkreDLTB6opUol3M3mYiY2dcdQ=")!,
       timestamp: 1_653_582_683_183_384_000
     ))
 
diff --git a/Tests/ElixxirDAppsSDKTests/MessageTests.swift b/Tests/ElixxirDAppsSDKTests/MessageTests.swift
index c01a880f..14831459 100644
--- a/Tests/ElixxirDAppsSDKTests/MessageTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/MessageTests.swift
@@ -4,17 +4,13 @@ import XCTest
 
 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()),
+      "ID": "EB/70R5HYEw5htZ4Hg9ondrn3+cAc/lH2G0mjQMja3w=",
+      "Payload": "7TzZKgNphT5UooNM7mDSwtVcIs8AIu4vMKm4ld6GSR8YX5GrHirixUBAejmsgdroRJyo06TkIVef7UM9FN8YfQ==",
+      "Sender": "emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
+      "RecipientID": "amFrZXh4MzYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD",
       "EphemeralID": 17,
       "Timestamp": 1653580439357351000,
       "Encrypted": false,
@@ -28,10 +24,10 @@ final class MessageTests: XCTestCase {
 
     XCTAssertNoDifference(message, Message(
       messageType: 1,
-      id: id,
-      payload: payload,
-      sender: sender,
-      recipientId: recipientId,
+      id: Data(base64Encoded: "EB/70R5HYEw5htZ4Hg9ondrn3+cAc/lH2G0mjQMja3w=")!,
+      payload: Data(base64Encoded: "7TzZKgNphT5UooNM7mDSwtVcIs8AIu4vMKm4ld6GSR8YX5GrHirixUBAejmsgdroRJyo06TkIVef7UM9FN8YfQ==")!,
+      sender: Data(base64Encoded: "emV6aW1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD")!,
+      recipientId: Data(base64Encoded: "amFrZXh4MzYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD")!,
       ephemeralId: 17,
       timestamp: 1_653_580_439_357_351_000,
       encrypted: false,
diff --git a/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift
index 3471119a..164fce5b 100644
--- a/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift
+++ b/Tests/ElixxirDAppsSDKTests/RestlikeMessageTests.swift
@@ -4,13 +4,11 @@ import XCTest
 
 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()),
+      "Headers": "Y29udGVudHM6YXBwbGljYXRpb24vanNvbg==",
+      "Content": "VGhpcyBpcyBhIHJlc3RsaWtlIG1lc3NhZ2U=",
       "Method": 2,
       "URI": "xx://CmixRestlike/rest",
       "Error": ""
@@ -23,8 +21,8 @@ final class RestlikeMessageTests: XCTestCase {
 
     XCTAssertNoDifference(message, RestlikeMessage(
       version: 1,
-      headers: headers,
-      content: content,
+      headers: Data(base64Encoded: "Y29udGVudHM6YXBwbGljYXRpb24vanNvbg==")!,
+      content: Data(base64Encoded: "VGhpcyBpcyBhIHJlc3RsaWtlIG1lc3NhZ2U=")!,
       method: 2,
       uri: "xx://CmixRestlike/rest",
       error: ""
diff --git a/Tests/ElixxirDAppsSDKTests/TestHelpers.swift b/Tests/ElixxirDAppsSDKTests/TestHelpers.swift
deleted file mode 100644
index ff545db0..00000000
--- a/Tests/ElixxirDAppsSDKTests/TestHelpers.swift
+++ /dev/null
@@ -1,17 +0,0 @@
-import Foundation
-
-func secureRandomData(count: Int) -> Data {
-  var bytes = [Int8](repeating: 0, count: count)
-  let status = SecRandomCopyBytes(kSecRandomDefault, count, &bytes)
-  assert(status == errSecSuccess)
-  return Data(bytes: bytes, count: count)
-}
-
-extension Data {
-  func jsonEncodedBase64() -> String {
-    let encoder = JSONEncoder()
-    encoder.dataEncodingStrategy = .base64
-    let data = try! encoder.encode(self)
-    return String(data: data, encoding: .utf8)!
-  }
-}
-- 
GitLab