Skip to content

Conversation

yafuquen
Copy link
Contributor

Ticket

  • [#####]

Github Issue

  • ISSUE-

Description

Commit message

Screenshot

Testing

  • Added unit tests
  • Ran unit tests successfully
  • Added documentation for public APIs and/or Wiki

yafuquen and others added 14 commits July 14, 2022 12:28
…re/biometrics

# Conflicts:
#	TwilioVerifySDK.xcodeproj/project.pbxproj
#	TwilioVerifySDK/TwilioSecurity/Sources/Keychain/KeychainQuery.swift
#	TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainQueryTests.swift
#	TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/Mocks/KeychainMock.swift
#	fastlane/Fastfile
* [26703] - Add Optional Attemps for CopyItemMatching.
- Add Optional attempt for get queries on SecureStorage & AuthenticatedSecureStorage.

* [26703] - Add Optional Attemps for CopyItemMatching.
- Set only 1 retry for the AuthenticatedSecureStorage biometric verification.
- Make KeychainError public.

Co-authored-by: Yeimi Moreno <[email protected]>
BREAKING CHANGE: Dropped support for iOS 11
…ion, for enabling users to migrate their factors to another iPhone or restore them during backup processes. (#218)
* fix: Gemfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-RUBY-REXML-6861566

* Update CircleCI Resources

---------

Co-authored-by: snyk-bot <[email protected]>
# Conflicts:
#	Gemfile.lock
#	README.md
#	fastlane/Fastfile
…ios into ymoreno/biometrics

# Conflicts:
#	fastlane/Fastfile
…no/biometrics

# Conflicts:
#	TwilioVerifySDK/TwilioSecurity/Sources/Keychain/Keychain.swift
#	TwilioVerifySDK/TwilioSecurity/Sources/Keychain/KeychainQuery.swift
#	TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainQueryTests.swift
@yafuquen yafuquen changed the title Ymoreno/biometrics Sync biometrics with main Apr 30, 2025
var accessGroup: String?
let accessGroup: String?

init(accessGroup: String?) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This memberwise initializer would be synthesized automatically - you do not need to define it
unneeded_synthesized_initializer KeychainQuery.swift:60

}

func testSaveData_withKey_shouldReturnValidQuery() {
let expectedData = "data".data(using: .utf8)!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainQueryTests.swift:78


func testSaveItem_withAccessGroup_shouldReturnValidQuery() {
keychainQuery = KeychainQuery(accessGroup: Constants.accessGroup)
let expectedData = "data".data(using: .utf8)!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainQueryTests.swift:145


func testSaveItem_withAttrAccessible_shouldReturnValidQuery() {
keychainQuery = KeychainQuery(accessGroup: Constants.accessGroup)
let expectedData = "data".data(using: .utf8)!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainQueryTests.swift:162


func testCreateFactor_withSuccessResponse_shouldSucceed() {
let successExpectation = expectation(description: "Wait for success response")
let expectedResponse = "{\"key\":\"value\"}".data(using: .utf8)!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:41

"User agent header should not be nil")
XCTAssertEqual(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self), params.asString(),
"Body should be \(params.asString()) but was \(networkProvider.urlRequest!.httpBody!)")
XCTAssert(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == params.asString() || String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == paramsv2.asString(),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion FactorAPIClientTests.swift:161

"User agent header should not be nil")
XCTAssertEqual(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self), params.asString(),
"Body should be \(params.asString()) but was \(networkProvider.urlRequest!.httpBody!)")
XCTAssert(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == params.asString() || String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == paramsv2.asString(),

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Line should be 195 characters or less; currently it has 203 characters
line_length FactorAPIClientTests.swift:161

XCTAssertEqual(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self), params.asString(),
"Body should be \(params.asString()) but was \(networkProvider.urlRequest!.httpBody!)")
XCTAssert(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == params.asString() || String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self) == paramsv2.asString(),
"Body should be \(params.asString()) or \(paramsv2.asString()) but was \(String(decoding: networkProvider.urlRequest!.httpBody!, as: UTF8.self))")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion FactorAPIClientTests.swift:162

)
static let failureResponse = FailureResponse(
statusCode: 401,
errorData: "error".data(using: .utf8)!,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:475

@testable import TwilioVerifySDK

// swiftlint:disable force_cast force_try
// swiftlint:disable force_cast force_try type_body_length

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command FactorMapperTests.swift:23`

@testable import TwilioVerifySDK

// swiftlint:disable force_cast force_try
// swiftlint:disable force_cast force_try type_body_length

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command FactorMapperTests.swift:23`

@testable import TwilioVerifySDK

// swiftlint:disable force_cast force_try
// swiftlint:disable force_cast force_try type_body_length

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command FactorMapperTests.swift:23`

@testable import TwilioVerifySDK

// swiftlint:disable force_cast force_try
// swiftlint:disable force_cast force_try type_body_length

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ SwiftLint rule 'type_body_length' did not trigger a violation in the disabled region; remove the disable command
superfluous_disable_command FactorMapperTests.swift:23

let factorPayload = CreateFactorPayload(friendlyName: Constants.friendlyNameValue, type: Constants.pushType, allowIphoneMigration: false, serviceSid: Constants.serviceSidValue,
identity: Constants.identityValue, config: [:], binding: [:], accessToken: Constants.accessToken, metadata: nil)
XCTAssertThrowsError(try mapper.fromAPI(withData: data, factorPayload: factorPayload)) { error in
XCTAssertEqual((error as! TwilioVerifyError).errorDescription, TwilioVerifyError.mapperError(error: NSError()).errorDescription)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Discouraged direct initialization of types that can be harmful
discouraged_direct_init FactorMapperTests.swift:127

@AuthyApps
Copy link

75 Warnings
⚠️ Big PR
⚠️ TwilioVerifySDK/TwilioVerify/Sources/Data/StorageProvider.swift#L53 - Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion StorageProvider.swift:53
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Key/Template/ECP256SignerTemplateTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command ECP256SignerTemplateTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeyManagerTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command KeyManagerTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeyManagerTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command KeyManagerTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainQueryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command KeychainQueryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command KeychainTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command KeychainTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L90 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:90
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L124 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:124
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L142 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:142
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L161 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:161
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L178 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:178
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L301 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeychainTests.swift:301
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Keychain/KeychainTests.swift#L419 - File should contain 400 lines or less: currently contains 419
file_length KeychainTests.swift:419
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command SecureStorageTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L40 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:40
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L78 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:78
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L86 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:86
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L107 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:107
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L109 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:109
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L120 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:120
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L138 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:138
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L154 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:154
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L192 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:192
⚠️ TwilioVerifySDKTests/TwilioSecurity/Sources/Storage/SecureStorageTests.swift#L219 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion SecureStorageTests.swift:219
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeAPIClientTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeAPIClientTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L41 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:41
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L62 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:62
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L135 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:135
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L162 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:162
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L274 - Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion ChallengeAPIClientTests.swift:274
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L298 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:298
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L401 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:401
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/ChallengeAPIClientTests.swift#L453 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion ChallengeAPIClientTests.swift:453
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command FactorAPIClientTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command FactorAPIClientTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L114 - Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion FactorAPIClientTests.swift:114
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L167 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:167
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L182 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:182
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L249 - Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion FactorAPIClientTests.swift:249
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L259 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:259
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L286 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:286
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L317 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:317
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L349 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:349
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L364 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorAPIClientTests.swift:364
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/API/FactorAPIClientTests.swift#L435 - Prefer failable String(data:encoding:) initializer when converting Data to String
optional_data_string_conversion FactorAPIClientTests.swift:435
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/JWT/JwtGeneratorTests.swift#L65 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion JwtGeneratorTests.swift:65
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/JWT/JwtSignerTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command JwtSignerTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/KeyStorageAdapterTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command KeyStorageAdapterTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/KeyStorageAdapterTests.swift#L134 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion KeyStorageAdapterTests.swift:134
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/StorageTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command StorageTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/StorageTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command StorageTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/StorageTests.swift#L284 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion StorageTests.swift:284
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Data/StorageTests.swift#L306 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion StorageTests.swift:306
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/ChallengeFacadeTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeFacadeTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/ChallengeListMapperTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeListMapperTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/ChallengeListMapperTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeListMapperTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/ChallengeRepositoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeRepositoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/ChallengeRepositoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command ChallengeRepositoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Challenge/PushChallengeProcessorTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command PushChallengeProcessorTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorFacadeTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command FactorFacadeTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorFacadeTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command FactorFacadeTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorRepositoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command FactorRepositoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorRepositoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command FactorRepositoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorRepositoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command FactorRepositoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/FactorRepositoryTests.swift#L495 - Prefer non-optional Data(_:) initializer when converting String to Data
non_optional_string_data_conversion FactorRepositoryTests.swift:495
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/PushFactoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command PushFactoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Factor/PushFactoryTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command PushFactoryTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Manager/TwilioVerifyManagerTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command TwilioVerifyManagerTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Domain/Manager/TwilioVerifyManagerTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'type_body_length' rule once, or re-enable it as soon as possible blanket_disable_command TwilioVerifyManagerTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Integration/TwilioVerifyTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command TwilioVerifyTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Integration/TwilioVerifyTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_try' rule once, or re-enable it as soon as possible blanket_disable_command TwilioVerifyTests.swift:23`
⚠️ TwilioVerifySDKTests/TwilioVerify/Sources/Networking/AuthenticationProviderTests.swift#L23 - Use 'next', 'this' or 'previous' instead to disable the 'force_cast' rule once, or re-enable it as soon as possible blanket_disable_command AuthenticationProviderTests.swift:23`

Code coverage

Total coverage: 94.23%

File Coverage
TwilioVerifySDK/TwilioSecurity/Sources/Key/Signer/ECSigner.swift 100.00%
TwilioVerifySDK/TwilioSecurity/Sources/Key/Template/ECP256SignerTemplate.swift 93.02%
TwilioVerifySDK/TwilioSecurity/Sources/Keychain/KeyManager.swift 89.66%
TwilioVerifySDK/TwilioSecurity/Sources/Keychain/Keychain.swift 89.06%
TwilioVerifySDK/TwilioSecurity/Sources/Keychain/KeychainQuery.swift 100.00%
TwilioVerifySDK/TwilioSecurity/Sources/Storage/AuthenticatedSecureStorage.swift 93.42%
TwilioVerifySDK/TwilioSecurity/Sources/Storage/SecureStorage.swift 87.36%
TwilioVerifySDK/TwilioVerify/Sources/API/ChallengeAPIClient.swift 93.62%
TwilioVerifySDK/TwilioVerify/Sources/Data/JWT/JwtGenerator.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Data/JWT/JwtSigner.swift 74.75%
TwilioVerifySDK/TwilioVerify/Sources/Data/KeyStorage.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Data/Storage+AccessGroup.swift 93.48%
TwilioVerifySDK/TwilioVerify/Sources/Data/Storage.swift 91.18%
TwilioVerifySDK/TwilioVerify/Sources/Data/StorageProvider.swift 80.85%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Challenge/ChallengeFacade.swift 96.84%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Challenge/ChallengeRepository.swift 94.37%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Challenge/PushChallengeProcessor.swift 97.30%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Factor/FactorFacade.swift 97.93%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Factor/FactorMapper.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Factor/FactorRepository.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Factor/Models/PushFactor.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Factor/PushFactory.swift 98.90%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Manager/TwilioVerify.swift 81.25%
TwilioVerifySDK/TwilioVerify/Sources/Domain/Manager/TwilioVerifyManager.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Logger/Logger.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Models/ChallengeListPayload.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Models/Factor.swift 85.71%
TwilioVerifySDK/TwilioVerify/Sources/Models/FactorPayload.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Models/UpdateChallengePayload.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Models/UpdateFactorPayload.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Models/VerifyFactorPayload.swift 100.00%
TwilioVerifySDK/TwilioVerify/Sources/Networking/Authentication.swift 100.00%

Powered by Slather

Generated by 🚫 Danger

@yafuquen yafuquen marked this pull request as ready for review May 7, 2025 20:57
Copy link
Contributor

@AlejandroOrozco AlejandroOrozco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants