Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
Elixxir dApps SDK Swift
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
mobile
iOS
Elixxir dApps SDK Swift
Commits
35da3a3d
Commit
35da3a3d
authored
2 years ago
by
Dariusz Rybicki
Browse files
Options
Downloads
Patches
Plain Diff
Test MessengerRestoreBackup function wrapper
parent
86ed9a21
No related branches found
No related tags found
2 merge requests
!102
Release 1.0.0
,
!100
Messenger - restore from backup
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift
+218
-0
218 additions, 0 deletions
...sts/Messenger/Functions/MessengerRestoreBackupTests.swift
with
218 additions
and
0 deletions
Tests/XXMessengerClientTests/Messenger/Functions/MessengerRestoreBackupTests.swift
0 → 100644
+
218
−
0
View file @
35da3a3d
import
CustomDump
import
XCTest
import
XXClient
@testable
import
XXMessengerClient
final
class
MessengerRestoreBackupTests
:
XCTestCase
{
func
testRestore
()
throws
{
let
backupData
=
"backup-data"
.
data
(
using
:
.
utf8
)
!
let
backupPassphrase
=
"backup-passphrase"
let
ndfData
=
"ndf-data"
.
data
(
using
:
.
utf8
)
!
let
password
=
"password"
.
data
(
using
:
.
utf8
)
!
let
backupParams
=
BackupParams
(
username
:
"backup-username"
,
email
:
"backup-email"
,
phone
:
"backup-phone"
)
let
backupReport
=
BackupReport
(
restoredContacts
:
[],
params
:
String
(
data
:
try!
JSONEncoder
()
.
encode
(
backupParams
),
encoding
:
.
utf8
)
!
)
let
cMixParams
=
"cmix-params"
.
data
(
using
:
.
utf8
)
!
let
e2eParams
=
"e2e-params"
.
data
(
using
:
.
utf8
)
!
let
cMixId
=
123
let
e2eId
=
456
let
receptionIdentity
=
ReceptionIdentity
(
id
:
"reception-id"
.
data
(
using
:
.
utf8
)
!
,
rsaPrivatePem
:
"reception-rsaPrivatePem"
.
data
(
using
:
.
utf8
)
!
,
salt
:
"reception-salt"
.
data
(
using
:
.
utf8
)
!
,
dhKeyPrivate
:
"reception-dhKeyPrivate"
.
data
(
using
:
.
utf8
)
!
,
e2eGrp
:
"reception-e2eGrp"
.
data
(
using
:
.
utf8
)
!
)
let
udContactFromNdf
=
"ud-contact"
.
data
(
using
:
.
utf8
)
!
let
udCertFromNdf
=
"ud-cert"
.
data
(
using
:
.
utf8
)
!
let
udAddressFromNdf
=
"ud-address"
var
caughtActions
:
[
CaughtAction
]
=
[]
var
env
:
MessengerEnvironment
=
.
unimplemented
env
.
downloadNDF
.
run
=
{
ndfEnvironment
in
caughtActions
.
append
(
.
didDownloadNDF
(
environment
:
ndfEnvironment
))
return
ndfData
}
env
.
generateSecret
.
run
=
{
_
in
password
}
env
.
passwordStorage
.
save
=
{
caughtActions
.
append
(
.
didSavePassword
(
password
:
$0
))
}
env
.
passwordStorage
.
load
=
{
password
}
env
.
fileManager
.
removeDirectory
=
{
caughtActions
.
append
(
.
didRemoveDirectory
(
path
:
$0
))
}
env
.
fileManager
.
createDirectory
=
{
caughtActions
.
append
(
.
didCreateDirectory
(
path
:
$0
))
}
env
.
newCMixFromBackup
.
run
=
{
ndfJSON
,
storageDir
,
backupPassphrase
,
sessionPassword
,
backupFileContents
in
caughtActions
.
append
(
.
didNewCMixFromBackup
(
ndfJSON
:
ndfJSON
,
storageDir
:
storageDir
,
backupPassphrase
:
backupPassphrase
,
sessionPassword
:
sessionPassword
,
backupFileContents
:
backupFileContents
))
return
backupReport
}
env
.
getCMixParams
.
run
=
{
cMixParams
}
env
.
getE2EParams
.
run
=
{
e2eParams
}
env
.
loadCMix
.
run
=
{
storageDir
,
password
,
cMixParams
in
caughtActions
.
append
(
.
didLoadCMix
(
storageDir
:
storageDir
,
password
:
password
,
cMixParams
:
cMixParams
))
var
cMix
:
CMix
=
.
unimplemented
cMix
.
getId
.
run
=
{
cMixId
}
cMix
.
makeReceptionIdentity
.
run
=
{
legacy
in
caughtActions
.
append
(
.
cMixDidMakeReceptionIdentity
(
legacy
:
legacy
))
return
receptionIdentity
}
return
cMix
}
env
.
login
.
run
=
{
ephemeral
,
cMixId
,
_
,
identity
,
e2eParams
in
caughtActions
.
append
(
.
didLogin
(
ephemeral
:
ephemeral
,
cMixId
:
cMixId
,
identity
:
identity
,
e2eParamsJSON
:
e2eParams
))
var
e2e
:
E2E
=
.
unimplemented
e2e
.
getId
.
run
=
{
e2eId
}
e2e
.
getUdCertFromNdf
.
run
=
{
udCertFromNdf
}
e2e
.
getUdContactFromNdf
.
run
=
{
udContactFromNdf
}
e2e
.
getUdAddressFromNdf
.
run
=
{
udAddressFromNdf
}
return
e2e
}
env
.
newUdManagerFromBackup
.
run
=
{
params
,
_
in
caughtActions
.
append
(
.
didNewUdManagerFromBackup
(
params
:
params
))
return
.
unimplemented
}
env
.
authCallbacks
.
registered
=
{
AuthCallbacks
{
_
in
}
}
env
.
cMix
.
set
=
{
_
in
caughtActions
.
append
(
.
didSetCMix
)
}
env
.
e2e
.
set
=
{
_
in
caughtActions
.
append
(
.
didSetE2E
)
}
env
.
ud
.
set
=
{
_
in
caughtActions
.
append
(
.
didSetUD
)
}
let
restore
:
MessengerRestoreBackup
=
.
live
(
env
)
let
result
=
try
restore
(
backupData
:
backupData
,
backupPassphrase
:
backupPassphrase
)
XCTAssertNoDifference
(
caughtActions
,
[
.
didDownloadNDF
(
environment
:
env
.
ndfEnvironment
),
.
didSavePassword
(
password
:
password
),
.
didRemoveDirectory
(
path
:
env
.
storageDir
),
.
didCreateDirectory
(
path
:
env
.
storageDir
),
.
didNewCMixFromBackup
(
ndfJSON
:
String
(
data
:
ndfData
,
encoding
:
.
utf8
)
!
,
storageDir
:
env
.
storageDir
,
backupPassphrase
:
backupPassphrase
,
sessionPassword
:
password
,
backupFileContents
:
backupData
),
.
didLoadCMix
(
storageDir
:
env
.
storageDir
,
password
:
password
,
cMixParams
:
cMixParams
),
.
cMixDidMakeReceptionIdentity
(
legacy
:
true
),
.
didLogin
(
ephemeral
:
false
,
cMixId
:
cMixId
,
identity
:
receptionIdentity
,
e2eParamsJSON
:
e2eParams
),
.
didNewUdManagerFromBackup
(
params
:
.
init
(
e2eId
:
e2eId
,
username
:
Fact
(
type
:
.
username
,
value
:
backupParams
.
username
),
email
:
Fact
(
type
:
.
email
,
value
:
backupParams
.
email
!
),
phone
:
Fact
(
type
:
.
phone
,
value
:
backupParams
.
phone
!
),
cert
:
udCertFromNdf
,
contact
:
udContactFromNdf
,
address
:
udAddressFromNdf
)),
.
didSetCMix
,
.
didSetE2E
,
.
didSetUD
,
])
XCTAssertNoDifference
(
result
,
backupParams
)
}
func
testDownloadNdfFailure
()
{
struct
Failure
:
Error
,
Equatable
{}
let
failure
=
Failure
()
var
actions
:
[
CaughtAction
]
=
[]
var
env
:
MessengerEnvironment
=
.
unimplemented
env
.
downloadNDF
.
run
=
{
_
in
throw
failure
}
env
.
fileManager
.
removeDirectory
=
{
actions
.
append
(
.
didRemoveDirectory
(
path
:
$0
))
}
let
restore
:
MessengerRestoreBackup
=
.
live
(
env
)
XCTAssertThrowsError
(
try
restore
(
backupData
:
Data
(),
backupPassphrase
:
""
))
{
error
in
XCTAssertNoDifference
(
error
as?
Failure
,
failure
)
}
XCTAssertNoDifference
(
actions
,
[
.
didRemoveDirectory
(
path
:
env
.
storageDir
)
])
}
}
private
enum
CaughtAction
:
Equatable
{
case
didDownloadNDF
(
environment
:
NDFEnvironment
)
case
didSavePassword
(
password
:
Data
)
case
didRemoveDirectory
(
path
:
String
)
case
didCreateDirectory
(
path
:
String
)
case
didNewCMixFromBackup
(
ndfJSON
:
String
,
storageDir
:
String
,
backupPassphrase
:
String
,
sessionPassword
:
Data
,
backupFileContents
:
Data
)
case
didLoadCMix
(
storageDir
:
String
,
password
:
Data
,
cMixParams
:
Data
)
case
didLogin
(
ephemeral
:
Bool
,
cMixId
:
Int
,
identity
:
ReceptionIdentity
,
e2eParamsJSON
:
Data
)
case
cMixDidMakeReceptionIdentity
(
legacy
:
Bool
)
case
didNewUdManagerFromBackup
(
params
:
NewUdManagerFromBackup
.
Params
)
case
didSetCMix
case
didSetE2E
case
didSetUD
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment