From d0006cd916be314faae0381719a6fefa050b1144 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 9 Sep 2022 13:27:01 +0200
Subject: [PATCH] Add MessengerVerifyContact function

---
 .../Functions/MessengerVerifyContact.swift    | 25 +++++++++++++++++++
 .../Messenger/Messenger.swift                 |  7 ++++--
 .../MessengerVerifyContactTests.swift         | 16 ++++++++++++
 3 files changed, 46 insertions(+), 2 deletions(-)
 create mode 100644 Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
 create mode 100644 Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift

diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
new file mode 100644
index 00000000..3d3d40e3
--- /dev/null
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerVerifyContact.swift
@@ -0,0 +1,25 @@
+import XCTestDynamicOverlay
+import XXClient
+
+public struct MessengerVerifyContact {
+  public var run: (Contact) throws -> Bool
+
+  public func callAsFunction(_ contact: Contact) throws -> Bool {
+    try run(contact)
+  }
+}
+
+extension MessengerVerifyContact {
+  public static func live(_ env: MessengerEnvironment) -> MessengerVerifyContact {
+    MessengerVerifyContact { contact in
+      // TODO:
+      return false
+    }
+  }
+}
+
+extension MessengerVerifyContact {
+  public static let unimplemented = MessengerVerifyContact(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/XXMessengerClient/Messenger/Messenger.swift b/Sources/XXMessengerClient/Messenger/Messenger.swift
index cc48651c..e2d31f69 100644
--- a/Sources/XXMessengerClient/Messenger/Messenger.swift
+++ b/Sources/XXMessengerClient/Messenger/Messenger.swift
@@ -21,6 +21,7 @@ public struct Messenger {
   public var destroy: MessengerDestroy
   public var searchUsers: MessengerSearchUsers
   public var registerForNotifications: MessengerRegisterForNotifications
+  public var verifyContact: MessengerVerifyContact
 }
 
 extension Messenger {
@@ -45,7 +46,8 @@ extension Messenger {
       waitForNodes: .live(env),
       destroy: .live(env),
       searchUsers: .live(env),
-      registerForNotifications: .live(env)
+      registerForNotifications: .live(env),
+      verifyContact: .live(env)
     )
   }
 }
@@ -71,6 +73,7 @@ extension Messenger {
     waitForNodes: .unimplemented,
     destroy: .unimplemented,
     searchUsers: .unimplemented,
-    registerForNotifications: .unimplemented
+    registerForNotifications: .unimplemented,
+    verifyContact: .unimplemented
   )
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift
new file mode 100644
index 00000000..255a7220
--- /dev/null
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerVerifyContactTests.swift
@@ -0,0 +1,16 @@
+import CustomDump
+import XCTest
+import XXClient
+@testable import XXMessengerClient
+
+final class MessengerVerifyContactTests: XCTestCase {
+  func testVerify() throws {
+    var env: MessengerEnvironment = .unimplemented
+    let verify: MessengerVerifyContact = .live(env)
+    let contact = Contact.unimplemented("data".data(using: .utf8)!)
+
+    let result = try verify(contact)
+
+    XCTAssertNoDifference(result, false)
+  }
+}
-- 
GitLab