|  |  |  | /*
 | 
					
						
							|  |  |  | import PromiseKit | 
					
						
							|  |  |  | @testable import SignalServiceKit | 
					
						
							|  |  |  | import XCTest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MultiDeviceProtocolTests : XCTestCase { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private var storage: OWSPrimaryStorage { OWSPrimaryStorage.shared() } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     override func setUp() { | 
					
						
							|  |  |  |         super.setUp() | 
					
						
							|  |  |  |         LokiTestUtilities.setUpMockEnvironment() | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // MARK: - isSlaveThread | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     func test_isSlaveThreadShouldReturnFalseOnGroupThreads() { | 
					
						
							|  |  |  |         let allGroupTypes: [GroupType] = [ .closedGroup, .openGroup, .rssFeed ] | 
					
						
							|  |  |  |         for groupType in allGroupTypes { | 
					
						
							|  |  |  |             guard let groupThread = LokiTestUtilities.createGroupThread(groupType: groupType) else { return XCTFail() } | 
					
						
							|  |  |  |             XCTAssertFalse(MultiDeviceProtocol.isSlaveThread(groupThread)) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     func test_isSlaveThreadShouldReturnTheCorrectValues() { | 
					
						
							|  |  |  |         let master = LokiTestUtilities.generateHexEncodedPublicKey() | 
					
						
							|  |  |  |         let slave = LokiTestUtilities.generateHexEncodedPublicKey() | 
					
						
							|  |  |  |         let other = LokiTestUtilities.generateHexEncodedPublicKey() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         guard let masterDevice = LokiTestUtilities.getDevice(for: master) else { return XCTFail() } | 
					
						
							|  |  |  |         guard let slaveDevice = LokiTestUtilities.getDevice(for: slave) else { return XCTFail() } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         let deviceLink = DeviceLink(between: masterDevice, and: slaveDevice) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         storage.dbReadWriteConnection.readWrite { transaction in | 
					
						
							|  |  |  |             self.storage.addDeviceLink(deviceLink, in: transaction) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         let masterThread = LokiTestUtilities.createContactThread(for: master) | 
					
						
							|  |  |  |         let slaveThread = LokiTestUtilities.createContactThread(for: slave) | 
					
						
							|  |  |  |         let otherThread = LokiTestUtilities.createContactThread(for: other) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         storage.dbReadConnection.read { transaction in | 
					
						
							|  |  |  |             XCTAssertNotNil(self.storage.getMasterHexEncodedPublicKey(for: slaveThread.contactIdentifier(), in: transaction)) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         XCTAssertFalse(MultiDeviceProtocol.isSlaveThread(masterThread)) | 
					
						
							|  |  |  |         XCTAssertTrue(MultiDeviceProtocol.isSlaveThread(slaveThread)) | 
					
						
							|  |  |  |         XCTAssertFalse(MultiDeviceProtocol.isSlaveThread(otherThread)) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     func test_isSlaveThreadShouldWorkInsideATransaction() { | 
					
						
							|  |  |  |         let bob = LokiTestUtilities.generateHexEncodedPublicKey() | 
					
						
							|  |  |  |         let thread = LokiTestUtilities.createContactThread(for: bob) | 
					
						
							|  |  |  |         storage.dbReadWriteConnection.read { transaction in | 
					
						
							|  |  |  |             XCTAssertNoThrow(MultiDeviceProtocol.isSlaveThread(thread)) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         storage.dbReadWriteConnection.readWrite { transaction in | 
					
						
							|  |  |  |             XCTAssertNoThrow(MultiDeviceProtocol.isSlaveThread(thread)) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  |  */ |