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.
67 lines
3.0 KiB
Swift
67 lines
3.0 KiB
Swift
@testable import SignalServiceKit
|
|
import XCTest
|
|
import Curve25519Kit
|
|
|
|
class LK001UpdateFriendRequestStatusStorageTest : XCTestCase {
|
|
|
|
private var storage: OWSPrimaryStorage { OWSPrimaryStorage.shared() }
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
// Activate the mock environment
|
|
ClearCurrentAppContextForTests()
|
|
SetCurrentAppContext(TestAppContext())
|
|
MockSSKEnvironment.activate()
|
|
// Register a mock user
|
|
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()
|
|
}
|
|
|
|
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 migration to complete
|
|
let migration = self.expectation(description: "Migration")
|
|
LK001UpdateFriendRequestStatusStorage().runUp {
|
|
migration.fulfill()
|
|
}
|
|
self.wait(for: [migration], timeout: 5.0)
|
|
|
|
storage.dbReadWriteConnection.readWrite { 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)")
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|