From 191bcdb3289ac7b8296747eaa50e9373ac85f65a Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Sat, 12 Nov 2022 00:30:05 +0100
Subject: [PATCH] Make MessageService.metadata optional

---
 Sources/XXClient/Models/MessageService.swift  |  4 +--
 .../Models/MessageServiceTests.swift          | 25 +++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/Sources/XXClient/Models/MessageService.swift b/Sources/XXClient/Models/MessageService.swift
index 583225e0..bc43edb7 100644
--- a/Sources/XXClient/Models/MessageService.swift
+++ b/Sources/XXClient/Models/MessageService.swift
@@ -4,7 +4,7 @@ public struct MessageService: Equatable {
   public init(
     identifier: Data,
     tag: String,
-    metadata: Data
+    metadata: Data?
   ) {
     self.identifier = identifier
     self.tag = tag
@@ -13,7 +13,7 @@ public struct MessageService: Equatable {
 
   public var identifier: Data
   public var tag: String
-  public var metadata: Data
+  public var metadata: Data?
 }
 
 extension MessageService: Codable {
diff --git a/Tests/XXClientTests/Models/MessageServiceTests.swift b/Tests/XXClientTests/Models/MessageServiceTests.swift
index e0a0d9ba..c76f6dc4 100644
--- a/Tests/XXClientTests/Models/MessageServiceTests.swift
+++ b/Tests/XXClientTests/Models/MessageServiceTests.swift
@@ -29,6 +29,31 @@ final class MessageServiceTests: XCTestCase {
     XCTAssertNoDifference(decodedModel, model)
   }
 
+  func testCodingWithoutMetadata() throws {
+    let identifierB64 = "AQID"
+    let tag = "TestTag 2"
+    let jsonString = """
+    {
+     "Identifier": "\(identifierB64)",
+     "Tag": "\(tag)",
+     "Metadata": null
+    }
+    """
+    let jsonData = jsonString.data(using: .utf8)!
+    let model = try MessageService.decode(jsonData)
+
+    XCTAssertNoDifference(model, MessageService(
+      identifier: Data(base64Encoded: identifierB64)!,
+      tag: tag,
+      metadata: nil
+    ))
+
+    let encodedModel = try model.encode()
+    let decodedModel = try MessageService.decode(encodedModel)
+
+    XCTAssertNoDifference(decodedModel, model)
+  }
+
   func testCodingArray() throws {
     let models = [
       MessageService(
-- 
GitLab