Skip to content
Snippets Groups Projects
Commit b215df5e authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Update MessengerRestoreBackup

Do not try to clean up after failure
parent 04d8ce0c
No related branches found
No related tags found
2 merge requests!105Backup restoration fixes,!102Release 1.0.0
This commit is part of merge request !105. Comments created here will be created in the context of that merge request.
...@@ -30,7 +30,6 @@ extension MessengerRestoreBackup { ...@@ -30,7 +30,6 @@ extension MessengerRestoreBackup {
public static func live(_ env: MessengerEnvironment) -> MessengerRestoreBackup { public static func live(_ env: MessengerEnvironment) -> MessengerRestoreBackup {
MessengerRestoreBackup { backupData, backupPassphrase in MessengerRestoreBackup { backupData, backupPassphrase in
let storageDir = env.storageDir let storageDir = env.storageDir
do {
let ndfData = try env.downloadNDF(env.ndfEnvironment) let ndfData = try env.downloadNDF(env.ndfEnvironment)
let password = env.generateSecret() let password = env.generateSecret()
try env.passwordStorage.save(password) try env.passwordStorage.save(password)
...@@ -48,6 +47,7 @@ extension MessengerRestoreBackup { ...@@ -48,6 +47,7 @@ extension MessengerRestoreBackup {
password: password, password: password,
cMixParamsJSON: env.getCMixParams() cMixParamsJSON: env.getCMixParams()
) )
env.cMix.set(cMix)
try cMix.startNetworkFollower(timeoutMS: 30_000) try cMix.startNetworkFollower(timeoutMS: 30_000)
let e2e = try env.login( let e2e = try env.login(
cMixId: cMix.getId(), cMixId: cMix.getId(),
...@@ -55,6 +55,8 @@ extension MessengerRestoreBackup { ...@@ -55,6 +55,8 @@ extension MessengerRestoreBackup {
identity: try cMix.makeReceptionIdentity(legacy: true), identity: try cMix.makeReceptionIdentity(legacy: true),
e2eParamsJSON: env.getE2EParams() e2eParamsJSON: env.getE2EParams()
) )
env.e2e.set(e2e)
env.isListeningForMessages.set(false)
let decoder = JSONDecoder() let decoder = JSONDecoder()
let paramsData = report.params.data(using: .utf8)! let paramsData = report.params.data(using: .utf8)!
let params = try decoder.decode(BackupParams.self, from: paramsData) let params = try decoder.decode(BackupParams.self, from: paramsData)
...@@ -70,18 +72,11 @@ extension MessengerRestoreBackup { ...@@ -70,18 +72,11 @@ extension MessengerRestoreBackup {
), ),
follower: UdNetworkStatus { cMix.networkFollowerStatus() } follower: UdNetworkStatus { cMix.networkFollowerStatus() }
) )
env.cMix.set(cMix)
env.e2e.set(e2e)
env.ud.set(ud) env.ud.set(ud)
env.isListeningForMessages.set(false)
return Result( return Result(
restoredParams: params, restoredParams: params,
restoredContacts: report.restoredContacts restoredContacts: report.restoredContacts
) )
} catch {
try? env.fileManager.removeDirectory(storageDir)
throw error
}
} }
} }
} }
......
...@@ -136,6 +136,7 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -136,6 +136,7 @@ final class MessengerRestoreBackupTests: XCTestCase {
password: password, password: password,
cMixParams: cMixParams cMixParams: cMixParams
), ),
.didSetCMix,
.cMixDidStartNetworkFollower( .cMixDidStartNetworkFollower(
timeoutMS: 30_000 timeoutMS: 30_000
), ),
...@@ -148,6 +149,10 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -148,6 +149,10 @@ final class MessengerRestoreBackupTests: XCTestCase {
identity: receptionIdentity, identity: receptionIdentity,
e2eParamsJSON: e2eParams e2eParamsJSON: e2eParams
), ),
.didSetE2E,
.didSetIsListeningForMessages(
isListening: false
),
.didNewUdManagerFromBackup(params: .init( .didNewUdManagerFromBackup(params: .init(
e2eId: e2eId, e2eId: e2eId,
username: Fact(type: .username, value: backupParams.username), username: Fact(type: .username, value: backupParams.username),
...@@ -157,12 +162,7 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -157,12 +162,7 @@ final class MessengerRestoreBackupTests: XCTestCase {
contact: udContactFromNdf, contact: udContactFromNdf,
address: udAddressFromNdf address: udAddressFromNdf
)), )),
.didSetCMix,
.didSetE2E,
.didSetUD, .didSetUD,
.didSetIsListeningForMessages(
isListening: false
),
]) ])
XCTAssertNoDifference(result, MessengerRestoreBackup.Result( XCTAssertNoDifference(result, MessengerRestoreBackup.Result(
...@@ -175,19 +175,13 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -175,19 +175,13 @@ final class MessengerRestoreBackupTests: XCTestCase {
struct Failure: Error, Equatable {} struct Failure: Error, Equatable {}
let failure = Failure() let failure = Failure()
var actions: [CaughtAction] = []
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.downloadNDF.run = { _ in throw failure } env.downloadNDF.run = { _ in throw failure }
env.fileManager.removeDirectory = { actions.append(.didRemoveDirectory(path: $0)) }
let restore: MessengerRestoreBackup = .live(env) let restore: MessengerRestoreBackup = .live(env)
XCTAssertThrowsError(try restore(backupData: Data(), backupPassphrase: "")) { error in XCTAssertThrowsError(try restore(backupData: Data(), backupPassphrase: "")) { error in
XCTAssertNoDifference(error as? Failure, failure) XCTAssertNoDifference(error as? Failure, failure)
} }
XCTAssertNoDifference(actions, [
.didRemoveDirectory(path: env.storageDir)
])
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment