mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.3 KiB
Swift
57 lines
2.3 KiB
Swift
@testable import SignalServiceKit
|
|
import XCTest
|
|
import Curve25519Kit
|
|
|
|
class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
|
|
|
|
private var storage: OWSPrimaryStorage { OWSPrimaryStorage.shared() }
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
|
|
LokiTestUtilities.setUpMockEnvironment()
|
|
}
|
|
|
|
func test_shouldMigrateFriendRequestStatusCorrectly() {
|
|
typealias ThreadFriendRequestStatus = NSInteger
|
|
let friendRequestMappings: [ThreadFriendRequestStatus:LKFriendRequestStatus] = [
|
|
0 : .none,
|
|
1 : .requestSending,
|
|
2 : .requestSent,
|
|
3 : .requestReceived,
|
|
4 : .friends,
|
|
5 : .requestExpired
|
|
]
|
|
|
|
var hexEncodedPublicKeyMapping: [String:ThreadFriendRequestStatus] = [:]
|
|
for (threadFriendRequestStatus, _) in friendRequestMappings {
|
|
let hexEncodedPublicKey = Curve25519.generateKeyPair().hexEncodedPublicKey
|
|
hexEncodedPublicKeyMapping[hexEncodedPublicKey] = threadFriendRequestStatus
|
|
}
|
|
|
|
storage.dbReadWriteConnection.readWrite { transaction in
|
|
for (hexEncodedPublicKey, friendRequestStatus) in hexEncodedPublicKeyMapping {
|
|
let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction)
|
|
thread.friendRequestStatus = friendRequestStatus
|
|
thread.save(with: transaction)
|
|
}
|
|
}
|
|
|
|
// Wait for the migration to complete
|
|
let migration = self.expectation(description: "Migration")
|
|
LK001UpdateFriendRequestStatusStorage().runUp {
|
|
migration.fulfill()
|
|
}
|
|
wait(for: [ migration ], timeout: 5)
|
|
|
|
storage.dbReadConnection.read { transaction in
|
|
for (hexEncodedPublicKey, threadFriendRequestStatus) in hexEncodedPublicKeyMapping {
|
|
let expectedFriendRequestStatus = friendRequestMappings[threadFriendRequestStatus]!
|
|
let friendRequestStatus = self.storage.getFriendRequestStatus(for: hexEncodedPublicKey, transaction: transaction)
|
|
XCTAssertEqual(friendRequestStatus, expectedFriendRequestStatus, "Expected friend request status \(friendRequestStatus.rawValue) to match \(expectedFriendRequestStatus.rawValue).")
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|