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

Do not verify contact when request received

parent 71cc4baa
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!81Messenger example - contact authorization improvements
......@@ -15,7 +15,6 @@ public struct AuthCallbackHandlerRequest {
extension AuthCallbackHandlerRequest {
public static func live(
db: DBManagerGetDB,
messenger: Messenger,
now: @escaping () -> Date
) -> AuthCallbackHandlerRequest {
AuthCallbackHandlerRequest { xxContact in
......@@ -28,21 +27,9 @@ extension AuthCallbackHandlerRequest {
dbContact.username = try xxContact.getFact(.username)?.value
dbContact.email = try xxContact.getFact(.email)?.value
dbContact.phone = try xxContact.getFact(.phone)?.value
dbContact.authStatus = .verificationInProgress
dbContact.authStatus = .stranger
dbContact.createdAt = now()
dbContact = try db().saveContact(dbContact)
do {
try messenger.waitForNetwork()
try messenger.waitForNodes()
let verified = try messenger.verifyContact(xxContact)
dbContact.authStatus = verified ? .verified : .verificationFailed
dbContact = try db().saveContact(dbContact)
} catch {
dbContact.authStatus = .verificationFailed
dbContact = try db().saveContact(dbContact)
throw error
}
}
}
}
......
......@@ -20,11 +20,7 @@ extension AppEnvironment {
let messenger = Messenger.live(messengerEnv)
let authHandler = AuthCallbackHandler.live(
messenger: messenger,
handleRequest: .live(
db: dbManager.getDB,
messenger: messenger,
now: Date.init
),
handleRequest: .live(db: dbManager.getDB, now: Date.init),
handleConfirm: .live(db: dbManager.getDB),
handleReset: .live(db: dbManager.getDB)
)
......
......@@ -10,17 +10,8 @@ final class AuthCallbackHandlerRequestTests: XCTestCase {
func testRequestFromNewContact() throws {
let now = Date()
var didFetchContacts: [XXModels.Contact.Query] = []
var didVerifyContact: [XXClient.Contact] = []
var didSaveContact: [XXModels.Contact] = []
var messenger: Messenger = .unimplemented
messenger.waitForNetwork.run = { _ in }
messenger.waitForNodes.run = { _, _, _, _ in }
messenger.verifyContact.run = { contact in
didVerifyContact.append(contact)
return true
}
let request = AuthCallbackHandlerRequest.live(
db: .init {
var db: Database = .failing
......@@ -34,7 +25,6 @@ final class AuthCallbackHandlerRequestTests: XCTestCase {
}
return db
},
messenger: messenger,
now: { now }
)
var xxContact = XXClient.Contact.unimplemented("contact".data(using: .utf8)!)
......@@ -50,26 +40,15 @@ final class AuthCallbackHandlerRequestTests: XCTestCase {
try request(xxContact)
XCTAssertNoDifference(didFetchContacts, [.init(id: ["id".data(using: .utf8)!])])
XCTAssertNoDifference(didSaveContact, [
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
username: "username",
email: "email",
phone: "phone",
authStatus: .verificationInProgress,
createdAt: now
),
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
username: "username",
email: "email",
phone: "phone",
authStatus: .verified,
createdAt: now
)
])
XCTAssertNoDifference(didSaveContact, [.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
username: "username",
email: "email",
phone: "phone",
authStatus: .stranger,
createdAt: now
)])
}
func testRequestWhenContactInDatabase() throws {
......@@ -79,7 +58,6 @@ final class AuthCallbackHandlerRequestTests: XCTestCase {
db.fetchContacts.run = { _ in [.init(id: "id".data(using: .utf8)!)] }
return db
},
messenger: .unimplemented,
now: XCTUnimplemented("now", placeholder: Date())
)
var contact = XXClient.Contact.unimplemented("contact".data(using: .utf8)!)
......@@ -87,96 +65,4 @@ final class AuthCallbackHandlerRequestTests: XCTestCase {
try request(contact)
}
func testRequestFromNewContactVerificationFalse() throws {
let now = Date()
var didSaveContact: [XXModels.Contact] = []
var messenger: Messenger = .unimplemented
messenger.waitForNetwork.run = { _ in }
messenger.waitForNodes.run = { _, _, _, _ in }
messenger.verifyContact.run = { _ in false }
let request = AuthCallbackHandlerRequest.live(
db: .init {
var db: Database = .failing
db.fetchContacts.run = { query in return [] }
db.saveContact.run = { contact in
didSaveContact.append(contact)
return contact
}
return db
},
messenger: messenger,
now: { now }
)
var xxContact = XXClient.Contact.unimplemented("contact".data(using: .utf8)!)
xxContact.getIdFromContact.run = { _ in "id".data(using: .utf8)! }
xxContact.getFactsFromContact.run = { _ in [] }
try request(xxContact)
XCTAssertNoDifference(didSaveContact, [
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
authStatus: .verificationInProgress,
createdAt: now
),
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
authStatus: .verificationFailed,
createdAt: now
)
])
}
func testRequestFromNewContactVerificationFailure() throws {
struct Failure: Error, Equatable {}
let failure = Failure()
let now = Date()
var didSaveContact: [XXModels.Contact] = []
var messenger: Messenger = .unimplemented
messenger.waitForNetwork.run = { _ in }
messenger.waitForNodes.run = { _, _, _, _ in }
messenger.verifyContact.run = { _ in throw failure }
let request = AuthCallbackHandlerRequest.live(
db: .init {
var db: Database = .failing
db.fetchContacts.run = { query in return [] }
db.saveContact.run = { contact in
didSaveContact.append(contact)
return contact
}
return db
},
messenger: messenger,
now: { now }
)
var xxContact = XXClient.Contact.unimplemented("contact".data(using: .utf8)!)
xxContact.getIdFromContact.run = { _ in "id".data(using: .utf8)! }
xxContact.getFactsFromContact.run = { _ in [] }
XCTAssertThrowsError(try request(xxContact)) { error in
XCTAssertNoDifference(error as? Failure, failure)
}
XCTAssertNoDifference(didSaveContact, [
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
authStatus: .verificationInProgress,
createdAt: now
),
.init(
id: "id".data(using: .utf8)!,
marshaled: "contact".data(using: .utf8)!,
authStatus: .verificationFailed,
createdAt: now
)
])
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment