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.
		
		
		
		
		
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Swift
		
	
import Foundation
 | 
						|
import SignalServiceKit
 | 
						|
import Curve25519Kit
 | 
						|
 | 
						|
enum LokiTestUtilities {
 | 
						|
 | 
						|
    public static func setUpMockEnvironment() {
 | 
						|
        // Activate the mock Signal 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()
 | 
						|
    }
 | 
						|
 | 
						|
    public static func generateKeyPair() -> ECKeyPair {
 | 
						|
        return Curve25519.generateKeyPair()
 | 
						|
    }
 | 
						|
 | 
						|
    public static func getCurrentUserHexEncodedPublicKey() -> String {
 | 
						|
        return OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey
 | 
						|
    }
 | 
						|
 | 
						|
    public static func generateHexEncodedPublicKey() -> String {
 | 
						|
        return generateKeyPair().hexEncodedPublicKey
 | 
						|
    }
 | 
						|
 | 
						|
    public static func getDevice(for hexEncodedPublicKey: String) -> DeviceLink.Device? {
 | 
						|
        guard let signature = Data.getSecureRandomData(ofSize: 64) else { return nil }
 | 
						|
        return DeviceLink.Device(hexEncodedPublicKey: hexEncodedPublicKey, signature: signature)
 | 
						|
    }
 | 
						|
 | 
						|
    public static func createContactThread(for hexEncodedPublicKey: String) -> TSContactThread {
 | 
						|
        return TSContactThread.getOrCreateThread(contactId: hexEncodedPublicKey)
 | 
						|
    }
 | 
						|
 | 
						|
    public static func createGroupThread(groupType: GroupType) -> TSGroupThread? {
 | 
						|
        let hexEncodedGroupID = Randomness.generateRandomBytes(kGroupIdLength)!.toHexString()
 | 
						|
        let groupID: Data
 | 
						|
        switch groupType {
 | 
						|
        case .closedGroup: groupID = LKGroupUtilities.getEncodedClosedGroupIDAsData(hexEncodedGroupID)
 | 
						|
        case .openGroup: groupID = LKGroupUtilities.getEncodedOpenGroupIDAsData(hexEncodedGroupID)
 | 
						|
        case .rssFeed: groupID = LKGroupUtilities.getEncodedRSSFeedIDAsData(hexEncodedGroupID)
 | 
						|
        default: return nil
 | 
						|
        }
 | 
						|
        return TSGroupThread.getOrCreateThread(withGroupId: groupID, groupType: groupType)
 | 
						|
    }
 | 
						|
}
 |