diff --git a/SignalMessaging/Loki/Migrations/LK001UpdateFriendRequestStatusStorageTest.swift b/SignalMessaging/Loki/Migrations/LK001UpdateFriendRequestStatusStorageTest.swift
index efd9da286..60fb0b078 100644
--- a/SignalMessaging/Loki/Migrations/LK001UpdateFriendRequestStatusStorageTest.swift
+++ b/SignalMessaging/Loki/Migrations/LK001UpdateFriendRequestStatusStorageTest.swift
@@ -9,17 +9,7 @@ class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
     override func setUp() {
         super.setUp()
 
-        ClearCurrentAppContextForTests()
-        SetCurrentAppContext(TestAppContext())
-        MockSSKEnvironment.activate()
-
-        let identityManager = OWSIdentityManager.shared()
-        let seed = Randomness.generateRandomBytes(16)!
-        let keyPair = Curve25519.generateKeyPair(fromSeed: seed + seed)
-        let databaseConnection = identityManager.value(forKey: "dbConnection") as! YapDatabaseConnection
-        databaseConnection.setObject(keyPair, forKey: OWSPrimaryStorageIdentityKeyStoreIdentityKey, inCollection: OWSPrimaryStorageIdentityKeyStoreCollection)
-        TSAccountManager.sharedInstance().phoneNumberAwaitingVerification = keyPair.hexEncodedPublicKey
-        TSAccountManager.sharedInstance().didRegister()
+        LokiTestUtilities.setUpMockEnvironment()
     }
 
     func test_shouldMigrateFriendRequestStatusCorrectly() {
@@ -54,7 +44,7 @@ class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
         }
         wait(for: [ migration ], timeout: 5)
 
-        storage.dbReadWriteConnection.readWrite { transaction in
+        storage.dbReadConnection.read { transaction in
             for (hexEncodedPublicKey, threadFriendRequestStatus) in hexEncodedPublicKeyMapping {
                 let expectedFriendRequestStatus = friendRequestMappings[threadFriendRequestStatus]!
                 let friendRequestStatus = self.storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
diff --git a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift
index afc73a8bf..5a2db292f 100644
--- a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift	
+++ b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocol.swift	
@@ -265,7 +265,7 @@ public final class MultiDeviceProtocol : NSObject {
     @objc public static func isSlaveThread(_ thread: TSThread) -> Bool {
         guard let thread = thread as? TSContactThread else { return false }
         var isSlaveThread = false
-        Storage.read { transaction in
+        storage.dbReadConnection.read { transaction in
             isSlaveThread = storage.getMasterHexEncodedPublicKey(for: thread.contactIdentifier(), in: transaction) != nil
         }
         return isSlaveThread
diff --git a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocolTests.swift b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocolTests.swift
index 1f4cb274b..ac0dece40 100644
--- a/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocolTests.swift	
+++ b/SignalServiceKit/src/Loki/Protocol/Multi Device/MultiDeviceProtocolTests.swift	
@@ -4,5 +4,58 @@ 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.dbReadWriteConnection.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))
+        }
+    }
 
 }