File tree Expand file tree Collapse file tree 12 files changed +1785
-111
lines changed
.swiftpm/xcode/xcshareddata/xcschemes Expand file tree Collapse file tree 12 files changed +1785
-111
lines changed Original file line number Diff line number Diff line change 1
1
<?xml version =" 1.0" encoding =" UTF-8" ?>
2
2
<Scheme
3
3
LastUpgradeVersion = " 1530"
4
- version = " 1.7 " >
4
+ version = " 1.3 " >
5
5
<BuildAction
6
6
parallelizeBuildables = " YES"
7
7
buildImplicitDependencies = " YES"
27
27
buildConfiguration = " Debug"
28
28
selectedDebuggerIdentifier = " Xcode.DebuggerFoundation.Debugger.LLDB"
29
29
selectedLauncherIdentifier = " Xcode.DebuggerFoundation.Launcher.LLDB"
30
- shouldUseLaunchSchemeArgsEnv = " YES" >
30
+ shouldUseLaunchSchemeArgsEnv = " YES"
31
+ codeCoverageEnabled = " YES"
32
+ onlyGenerateCoverageForSpecifiedTargets = " YES" >
33
+ <CodeCoverageTargets >
34
+ <BuildableReference
35
+ BuildableIdentifier = " primary"
36
+ BlueprintIdentifier = " Auth"
37
+ BuildableName = " Auth"
38
+ BlueprintName = " Auth"
39
+ ReferencedContainer = " container:" >
40
+ </BuildableReference >
41
+ </CodeCoverageTargets >
31
42
<Testables >
43
+ <TestableReference
44
+ skipped = " NO" >
45
+ <BuildableReference
46
+ BuildableIdentifier = " primary"
47
+ BlueprintIdentifier = " AuthTests"
48
+ BuildableName = " AuthTests"
49
+ BlueprintName = " AuthTests"
50
+ ReferencedContainer = " container:" >
51
+ </BuildableReference >
52
+ </TestableReference >
32
53
</Testables >
33
54
</TestAction >
34
55
<LaunchAction
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ public final class AuthClient: Sendable {
29
29
private var eventEmitter : AuthStateChangeEventEmitter { Dependencies [ clientID] . eventEmitter }
30
30
private var logger : ( any SupabaseLogger ) ? { Dependencies [ clientID] . configuration. logger }
31
31
private var sessionStorage : SessionStorage { Dependencies [ clientID] . sessionStorage }
32
+ private var pkce : PKCE { Dependencies [ clientID] . pkce }
32
33
33
34
/// Returns the session, refreshing it if necessary.
34
35
///
@@ -1310,10 +1311,10 @@ public final class AuthClient: Sendable {
1310
1311
return ( nil , nil )
1311
1312
}
1312
1313
1313
- let codeVerifier = PKCE . generateCodeVerifier ( )
1314
+ let codeVerifier = pkce . generateCodeVerifier ( )
1314
1315
codeVerifierStorage. set ( codeVerifier)
1315
1316
1316
- let codeChallenge = PKCE . generateCodeChallenge ( from : codeVerifier)
1317
+ let codeChallenge = pkce . generateCodeChallenge ( codeVerifier)
1317
1318
let codeChallengeMethod = codeVerifier == codeChallenge ? " plain " : " s256 "
1318
1319
1319
1320
return ( codeChallenge, codeChallengeMethod)
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ public struct AuthMFA: Sendable {
54
54
///
55
55
/// - Parameter params: The parameters for verifying the MFA factor.
56
56
/// - Returns: An authentication response after verifying the factor.
57
+ @discardableResult
57
58
public func verify( params: MFAVerifyParams ) async throws -> AuthMFAVerifyResponse {
58
59
let response : AuthMFAVerifyResponse = try await api. authorizedExecute (
59
60
HTTPRequest (
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ struct Dependencies: Sendable {
14
14
var date : @Sendable ( ) -> Date = { Date ( ) }
15
15
16
16
var urlOpener : URLOpener = . live
17
+ var pkce : PKCE = . live
17
18
18
19
var encoder : JSONEncoder { configuration. encoder }
19
20
var decoder : JSONDecoder { configuration. decoder }
Original file line number Diff line number Diff line change 1
1
import Crypto
2
2
import Foundation
3
3
4
- enum PKCE {
5
- static func generateCodeVerifier( ) -> String {
6
- let buffer = [ UInt8 ] . random ( count: 64 )
7
- return Data ( buffer) . pkceBase64EncodedString ( )
8
- }
4
+ struct PKCE {
5
+ var generateCodeVerifier : @Sendable ( ) -> String
6
+ var generateCodeChallenge : @Sendable ( _ codeVerifier: String ) -> String
7
+ }
9
8
10
- static func generateCodeChallenge( from string: String ) -> String {
11
- guard let data = string. data ( using: . utf8) else {
12
- preconditionFailure ( " provided string should be utf8 encoded. " )
13
- }
9
+ extension PKCE {
10
+ static let live = PKCE (
11
+ generateCodeVerifier: {
12
+ let buffer = [ UInt8 ] . random ( count: 64 )
13
+ return Data ( buffer) . pkceBase64EncodedString ( )
14
+ } ,
15
+ generateCodeChallenge: { codeVerifier in
16
+ guard let data = codeVerifier. data ( using: . utf8) else {
17
+ preconditionFailure ( " provided string should be utf8 encoded. " )
18
+ }
14
19
15
- var hasher = SHA256 ( )
16
- hasher. update ( data: data)
17
- let hashed = hasher. finalize ( )
18
- return Data ( hashed) . pkceBase64EncodedString ( )
19
- }
20
+ var hasher = SHA256 ( )
21
+ hasher. update ( data: data)
22
+ let hashed = hasher. finalize ( )
23
+ return Data ( hashed) . pkceBase64EncodedString ( )
24
+ }
25
+ )
20
26
}
21
27
22
28
extension Data {
Original file line number Diff line number Diff line change 5
5
// Created by Guilherme Souza on 05/07/24.
6
6
//
7
7
8
- @testable import Auth
9
8
import TestHelpers
10
9
import XCTest
11
10
11
+ @testable import Auth
12
+
12
13
final class AuthClientMultipleInstancesTests : XCTestCase {
13
14
func testMultipleAuthClientInstances( ) {
14
15
let url = URL ( string: " http://localhost:54321/auth " ) !
You can’t perform that action at this time.
0 commit comments