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

Remove XXMessenger.BackupParams model

- use string for backup params
- start backup with optional params
parent eafc7805
No related branches found
No related tags found
2 merge requests!136Update backup params handling in XXMessenger,!102Release 1.0.0
This commit is part of merge request !102. Comments created here will be created in the context of that merge request.
...@@ -6,9 +6,9 @@ public struct MessengerBackupParams { ...@@ -6,9 +6,9 @@ public struct MessengerBackupParams {
case notRunning case notRunning
} }
public var run: (BackupParams) throws -> Void public var run: (String) throws -> Void
public func callAsFunction(_ params: BackupParams) throws { public func callAsFunction(_ params: String) throws {
try run(params) try run(params)
} }
} }
...@@ -19,9 +19,7 @@ extension MessengerBackupParams { ...@@ -19,9 +19,7 @@ extension MessengerBackupParams {
guard let backup = env.backup(), backup.isRunning() else { guard let backup = env.backup(), backup.isRunning() else {
throw Error.notRunning throw Error.notRunning
} }
let paramsData = try params.encode() backup.addJSON(params)
let paramsString = String(data: paramsData, encoding: .utf8)!
backup.addJSON(paramsString)
} }
} }
} }
......
...@@ -5,14 +5,14 @@ import XCTestDynamicOverlay ...@@ -5,14 +5,14 @@ import XCTestDynamicOverlay
public struct MessengerRestoreBackup { public struct MessengerRestoreBackup {
public struct Result: Equatable { public struct Result: Equatable {
public init( public init(
restoredParams: BackupParams, restoredParams: String,
restoredContacts: [Data] restoredContacts: [Data]
) { ) {
self.restoredParams = restoredParams self.restoredParams = restoredParams
self.restoredContacts = restoredContacts self.restoredContacts = restoredContacts
} }
public var restoredParams: BackupParams public var restoredParams: String
public var restoredContacts: [Data] public var restoredContacts: [Data]
} }
...@@ -42,8 +42,6 @@ extension MessengerRestoreBackup { ...@@ -42,8 +42,6 @@ extension MessengerRestoreBackup {
sessionPassword: password, sessionPassword: password,
backupFileContents: backupData backupFileContents: backupData
) )
let paramsData = report.params.data(using: .utf8)!
let params = try BackupParams.decode(paramsData)
let cMix = try env.loadCMix( let cMix = try env.loadCMix(
storageDir: storageDir, storageDir: storageDir,
password: password, password: password,
...@@ -68,7 +66,7 @@ extension MessengerRestoreBackup { ...@@ -68,7 +66,7 @@ extension MessengerRestoreBackup {
) )
env.ud.set(ud) env.ud.set(ud)
return Result( return Result(
restoredParams: params, restoredParams: report.params,
restoredContacts: report.restoredContacts restoredContacts: report.restoredContacts
) )
} }
......
...@@ -9,11 +9,11 @@ public struct MessengerStartBackup { ...@@ -9,11 +9,11 @@ public struct MessengerStartBackup {
case notLoggedIn case notLoggedIn
} }
public var run: (String, BackupParams) throws -> Void public var run: (String, String?) throws -> Void
public func callAsFunction( public func callAsFunction(
password: String, password: String,
params: BackupParams params: String? = nil
) throws { ) throws {
try run(password, params) try run(password, params)
} }
...@@ -31,8 +31,6 @@ extension MessengerStartBackup { ...@@ -31,8 +31,6 @@ extension MessengerStartBackup {
guard let ud = env.ud() else { guard let ud = env.ud() else {
throw Error.notLoggedIn throw Error.notLoggedIn
} }
let paramsData = try params.encode()
let paramsString = String(data: paramsData, encoding: .utf8)!
var didAddParams = false var didAddParams = false
var semaphore: DispatchSemaphore? = .init(value: 0) var semaphore: DispatchSemaphore? = .init(value: 0)
let backup = try env.initializeBackup( let backup = try env.initializeBackup(
...@@ -41,9 +39,9 @@ extension MessengerStartBackup { ...@@ -41,9 +39,9 @@ extension MessengerStartBackup {
password: password, password: password,
callback: .init { data in callback: .init { data in
semaphore?.wait() semaphore?.wait()
if !didAddParams { if let params, !didAddParams {
if let backup = env.backup() { if let backup = env.backup() {
backup.addJSON(paramsString) backup.addJSON(params)
didAddParams = true didAddParams = true
} }
} else { } else {
......
import Foundation
public struct BackupParams: Equatable {
public init(
username: String
) {
self.username = username
}
public var username: String
}
extension BackupParams: Codable {
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
...@@ -6,6 +6,7 @@ import XXClient ...@@ -6,6 +6,7 @@ import XXClient
final class MessengerBackupParamsTests: XCTestCase { final class MessengerBackupParamsTests: XCTestCase {
func testBackupParams() throws { func testBackupParams() throws {
var didAddJSON: [String] = [] var didAddJSON: [String] = []
let params = "test-123"
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.backup.get = { env.backup.get = {
...@@ -16,11 +17,9 @@ final class MessengerBackupParamsTests: XCTestCase { ...@@ -16,11 +17,9 @@ final class MessengerBackupParamsTests: XCTestCase {
} }
let backup: MessengerBackupParams = .live(env) let backup: MessengerBackupParams = .live(env)
try backup(.stub) try backup(params)
XCTAssertNoDifference(didAddJSON, [ XCTAssertNoDifference(didAddJSON, [params])
String(data: try BackupParams.stub.encode(), encoding: .utf8)!
])
} }
func testBackupParamsWhenNoBackup() { func testBackupParamsWhenNoBackup() {
...@@ -28,7 +27,7 @@ final class MessengerBackupParamsTests: XCTestCase { ...@@ -28,7 +27,7 @@ final class MessengerBackupParamsTests: XCTestCase {
env.backup.get = { nil } env.backup.get = { nil }
let backup: MessengerBackupParams = .live(env) let backup: MessengerBackupParams = .live(env)
XCTAssertThrowsError(try backup(.stub)) { error in XCTAssertThrowsError(try backup("")) { error in
XCTAssertNoDifference( XCTAssertNoDifference(
error as NSError, error as NSError,
MessengerBackupParams.Error.notRunning as NSError MessengerBackupParams.Error.notRunning as NSError
...@@ -45,7 +44,7 @@ final class MessengerBackupParamsTests: XCTestCase { ...@@ -45,7 +44,7 @@ final class MessengerBackupParamsTests: XCTestCase {
} }
let backup: MessengerBackupParams = .live(env) let backup: MessengerBackupParams = .live(env)
XCTAssertThrowsError(try backup(.stub)) { error in XCTAssertThrowsError(try backup("")) { error in
XCTAssertNoDifference( XCTAssertNoDifference(
error as NSError, error as NSError,
MessengerBackupParams.Error.notRunning as NSError MessengerBackupParams.Error.notRunning as NSError
......
...@@ -10,10 +10,9 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -10,10 +10,9 @@ final class MessengerRestoreBackupTests: XCTestCase {
let ndfData = "ndf-data".data(using: .utf8)! let ndfData = "ndf-data".data(using: .utf8)!
let password = "password".data(using: .utf8)! let password = "password".data(using: .utf8)!
let backupContacts: [Data] = (1...3).map { "contact-\($0)" }.map { $0.data(using: .utf8)! } let backupContacts: [Data] = (1...3).map { "contact-\($0)" }.map { $0.data(using: .utf8)! }
let backupParams = BackupParams.stub
let backupReport = BackupReport( let backupReport = BackupReport(
restoredContacts: backupContacts, restoredContacts: backupContacts,
params: String(data: try! JSONEncoder().encode(backupParams), encoding: .utf8)! params: "backup-report-params"
) )
let cMixParams = "cmix-params".data(using: .utf8)! let cMixParams = "cmix-params".data(using: .utf8)!
let e2eParams = "e2e-params".data(using: .utf8)! let e2eParams = "e2e-params".data(using: .utf8)!
...@@ -157,7 +156,7 @@ final class MessengerRestoreBackupTests: XCTestCase { ...@@ -157,7 +156,7 @@ final class MessengerRestoreBackupTests: XCTestCase {
]) ])
XCTAssertNoDifference(result, MessengerRestoreBackup.Result( XCTAssertNoDifference(result, MessengerRestoreBackup.Result(
restoredParams: backupParams, restoredParams: backupReport.params,
restoredContacts: backupContacts restoredContacts: backupContacts
)) ))
} }
......
...@@ -4,7 +4,7 @@ import XXClient ...@@ -4,7 +4,7 @@ import XXClient
@testable import XXMessengerClient @testable import XXMessengerClient
final class MessengerStartBackupTests: XCTestCase { final class MessengerStartBackupTests: XCTestCase {
func testStart() throws { func testStartWithParams() throws {
struct InitBackupParams: Equatable { struct InitBackupParams: Equatable {
var e2eId: Int var e2eId: Int
var udId: Int var udId: Int
...@@ -16,6 +16,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -16,6 +16,7 @@ final class MessengerStartBackupTests: XCTestCase {
var didSetBackup: [Backup?] = [] var didSetBackup: [Backup?] = []
var didAddJSON: [String] = [] var didAddJSON: [String] = []
let params = "backup-params"
let password = "test-password" let password = "test-password"
let e2eId = 123 let e2eId = 123
let udId = 321 let udId = 321
...@@ -49,7 +50,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -49,7 +50,7 @@ final class MessengerStartBackupTests: XCTestCase {
} }
let start: MessengerStartBackup = .live(env) let start: MessengerStartBackup = .live(env)
try start(password: password, params: .stub) try start(password: password, params: params)
XCTAssertNoDifference(didInitializeBackup, [ XCTAssertNoDifference(didInitializeBackup, [
.init(e2eId: e2eId, udId: udId, password: password) .init(e2eId: e2eId, udId: udId, password: password)
...@@ -62,9 +63,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -62,9 +63,7 @@ final class MessengerStartBackupTests: XCTestCase {
didHandleCallback.map(StringData.init), didHandleCallback.map(StringData.init),
[].map(StringData.init) [].map(StringData.init)
) )
XCTAssertNoDifference(didAddJSON, [ XCTAssertNoDifference(didAddJSON, [params])
String(data: try BackupParams.stub.encode(), encoding: .utf8)!
])
backupCallbacks.forEach { $0.handle(dataWithParams) } backupCallbacks.forEach { $0.handle(dataWithParams) }
...@@ -74,6 +73,60 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -74,6 +73,60 @@ final class MessengerStartBackupTests: XCTestCase {
) )
} }
func testStartWithoutParams() throws {
struct InitBackupParams: Equatable {
var e2eId: Int
var udId: Int
var password: String
}
var didInitializeBackup: [InitBackupParams] = []
var backupCallbacks: [UpdateBackupFunc] = []
var didHandleCallback: [Data] = []
var didSetBackup: [Backup?] = []
let password = "test-password"
let e2eId = 123
let udId = 321
let dataWithoutParams = "backup-without-params".data(using: .utf8)!
var env: MessengerEnvironment = .unimplemented
env.backup.get = { didSetBackup.last as? Backup }
env.backup.set = { didSetBackup.append($0) }
env.e2e.get = {
var e2e: E2E = .unimplemented
e2e.getId.run = { e2eId }
return e2e
}
env.ud.get = {
var ud: UserDiscovery = .unimplemented
ud.getId.run = { udId }
return ud
}
env.backupCallbacks.registered = {
UpdateBackupFunc { didHandleCallback.append($0) }
}
env.initializeBackup.run = { e2eId, udId, password, callback in
didInitializeBackup.append(.init(e2eId: e2eId, udId: udId, password: password))
backupCallbacks.append(callback)
return .unimplemented
}
let start: MessengerStartBackup = .live(env)
try start(password: password)
XCTAssertNoDifference(didInitializeBackup, [
.init(e2eId: e2eId, udId: udId, password: password)
])
XCTAssertNoDifference(didSetBackup.map { $0 != nil }, [true])
backupCallbacks.forEach { $0.handle(dataWithoutParams) }
XCTAssertNoDifference(
didHandleCallback.map(StringData.init),
[dataWithoutParams].map(StringData.init)
)
}
func testStartWhenRunning() { func testStartWhenRunning() {
var env: MessengerEnvironment = .unimplemented var env: MessengerEnvironment = .unimplemented
env.backup.get = { env.backup.get = {
...@@ -83,7 +136,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -83,7 +136,7 @@ final class MessengerStartBackupTests: XCTestCase {
} }
let start: MessengerStartBackup = .live(env) let start: MessengerStartBackup = .live(env)
XCTAssertThrowsError(try start(password: "", params: .stub)) { error in XCTAssertThrowsError(try start(password: "")) { error in
XCTAssertNoDifference( XCTAssertNoDifference(
error as NSError, error as NSError,
MessengerStartBackup.Error.isRunning as NSError MessengerStartBackup.Error.isRunning as NSError
...@@ -97,7 +150,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -97,7 +150,7 @@ final class MessengerStartBackupTests: XCTestCase {
env.e2e.get = { nil } env.e2e.get = { nil }
let start: MessengerStartBackup = .live(env) let start: MessengerStartBackup = .live(env)
XCTAssertThrowsError(try start(password: "", params: .stub)) { error in XCTAssertThrowsError(try start(password: "")) { error in
XCTAssertNoDifference( XCTAssertNoDifference(
error as NSError, error as NSError,
MessengerStartBackup.Error.notConnected as NSError MessengerStartBackup.Error.notConnected as NSError
...@@ -112,7 +165,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -112,7 +165,7 @@ final class MessengerStartBackupTests: XCTestCase {
env.ud.get = { nil } env.ud.get = { nil }
let start: MessengerStartBackup = .live(env) let start: MessengerStartBackup = .live(env)
XCTAssertThrowsError(try start(password: "", params: .stub)) { error in XCTAssertThrowsError(try start(password: "")) { error in
XCTAssertNoDifference( XCTAssertNoDifference(
error as NSError, error as NSError,
MessengerStartBackup.Error.notLoggedIn as NSError MessengerStartBackup.Error.notLoggedIn as NSError
...@@ -140,7 +193,7 @@ final class MessengerStartBackupTests: XCTestCase { ...@@ -140,7 +193,7 @@ final class MessengerStartBackupTests: XCTestCase {
env.initializeBackup.run = { _, _, _, _ in throw failure } env.initializeBackup.run = { _, _, _, _ in throw failure }
let start: MessengerStartBackup = .live(env) let start: MessengerStartBackup = .live(env)
XCTAssertThrowsError(try start(password: "", params: .stub)) { error in XCTAssertThrowsError(try start(password: "")) { error in
XCTAssertNoDifference(error as NSError, failure as NSError) XCTAssertNoDifference(error as NSError, failure as NSError)
} }
} }
......
...@@ -18,12 +18,6 @@ extension Message { ...@@ -18,12 +18,6 @@ extension Message {
} }
} }
extension BackupParams {
static let stub = BackupParams(
username: "stub-username"
)
}
extension ReceivedFile { extension ReceivedFile {
static func stub(_ id: Int) -> ReceivedFile { static func stub(_ id: Int) -> ReceivedFile {
ReceivedFile( ReceivedFile(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment