Skip to content

Commit f9daa1e

Browse files
committed
Rebase and adjust to ObservabilityScope changes
1 parent 993f328 commit f9daa1e

File tree

3 files changed

+24
-18
lines changed

3 files changed

+24
-18
lines changed

Sources/Basics/AuthorizationProvider.swift

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,11 @@ public struct NetrcAuthorizationProvider: AuthorizationProvider {
138138

139139
#if canImport(Security)
140140
public struct KeychainAuthorizationProvider: AuthorizationProvider {
141-
public init() {}
141+
private let observabilityScope: ObservabilityScope
142+
143+
public init(observabilityScope: ObservabilityScope) {
144+
self.observabilityScope = observabilityScope
145+
}
142146

143147
public func addOrUpdate(for url: Foundation.URL, user: String, password: String, callback: @escaping (Result<Void, Error>) -> Void) {
144148
guard let server = url.authenticationID else {
@@ -176,11 +180,11 @@ public struct KeychainAuthorizationProvider: AuthorizationProvider {
176180
} catch {
177181
switch error {
178182
case AuthorizationProviderError.notFound:
179-
ObservabilitySystem.topScope.emit(info: "No credentials found for server \(server) in keychain")
183+
self.observabilityScope.emit(info: "No credentials found for server \(server) in keychain")
180184
case AuthorizationProviderError.other(let detail):
181-
ObservabilitySystem.topScope.emit(error: detail)
185+
self.observabilityScope.emit(error: detail)
182186
default:
183-
ObservabilitySystem.topScope.emit(error: "Failed to find credentials for server \(server) in keychain: \(error)")
187+
self.observabilityScope.emit(error: "Failed to find credentials for server \(server) in keychain: \(error)")
184188
}
185189
return nil
186190
}
@@ -254,27 +258,29 @@ public struct KeychainAuthorizationProvider: AuthorizationProvider {
254258

255259
public struct CompositeAuthorizationProvider: AuthorizationProvider {
256260
private let providers: [AuthorizationProvider]
261+
private let observabilityScope: ObservabilityScope
257262

258-
public init(_ providers: AuthorizationProvider...) {
259-
self.init(providers)
263+
public init(_ providers: AuthorizationProvider..., observabilityScope: ObservabilityScope) {
264+
self.init(providers, observabilityScope: observabilityScope)
260265
}
261266

262-
public init(_ providers: [AuthorizationProvider]) {
267+
public init(_ providers: [AuthorizationProvider], observabilityScope: ObservabilityScope) {
263268
self.providers = providers
269+
self.observabilityScope = observabilityScope
264270
}
265271

266272
public func authentication(for url: Foundation.URL) -> (user: String, password: String)? {
267273
for provider in self.providers {
268274
if let authentication = provider.authentication(for: url) {
269275
switch provider {
270276
case let provider as NetrcAuthorizationProvider:
271-
ObservabilitySystem.topScope.emit(info: "Credentials for \(url) found in netrc file at \(provider.path)")
272-
#if canImport(Security)
277+
self.observabilityScope.emit(info: "Credentials for \(url) found in netrc file at \(provider.path)")
278+
#if canImport(Security)
273279
case is KeychainAuthorizationProvider:
274-
ObservabilitySystem.topScope.emit(info: "Credentials for \(url) found in keychain")
275-
#endif
280+
self.observabilityScope.emit(info: "Credentials for \(url) found in keychain")
281+
#endif
276282
default:
277-
ObservabilitySystem.topScope.emit(info: "Credentials for \(url) found in \(provider)")
283+
self.observabilityScope.emit(info: "Credentials for \(url) found in \(provider)")
278284
}
279285
return authentication
280286
}

Sources/Commands/SwiftTool.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,10 +504,10 @@ public class SwiftTool {
504504

505505
// TODO: add --no-keychain option to allow opt-out
506506
//#if canImport(Security)
507-
// providers.append(KeychainAuthorizationProvider())
507+
// providers.append(KeychainAuthorizationProvider(observabilityScope: self.observabilityScope))
508508
//#endif
509509

510-
return providers.isEmpty ? nil : CompositeAuthorizationProvider(providers)
510+
return providers.isEmpty ? nil : CompositeAuthorizationProvider(providers, observabilityScope: self.observabilityScope)
511511
}
512512

513513
func getNetrcConfig() -> Workspace.Configuration.Netrc? {

Tests/BasicsTests/AuthorizationProviderTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ final class AuthorizationProviderTests: XCTestCase {
6363
#if !canImport(Security) || !ENABLE_KEYCHAIN_TEST
6464
try XCTSkipIf(true)
6565
#else
66-
let provider = KeychainAuthorizationProvider()
66+
let provider = KeychainAuthorizationProvider(observabilityScope: ObservabilitySystem.NOOP)
6767

6868
let user = UUID().uuidString
6969

@@ -101,20 +101,20 @@ final class AuthorizationProviderTests: XCTestCase {
101101

102102
do {
103103
// providerOne's password is returned first
104-
let provider = CompositeAuthorizationProvider(providerOne, providerTwo)
104+
let provider = CompositeAuthorizationProvider(providerOne, providerTwo, observabilityScope: ObservabilitySystem.NOOP)
105105
self.assertAuthentication(provider, for: url, expected: (user, passwordOne))
106106
}
107107

108108
do {
109109
// providerTwo's password is returned first
110-
let provider = CompositeAuthorizationProvider(providerTwo, providerOne)
110+
let provider = CompositeAuthorizationProvider(providerTwo, providerOne, observabilityScope: ObservabilitySystem.NOOP)
111111
self.assertAuthentication(provider, for: url, expected: (user, passwordTwo))
112112
}
113113

114114
do {
115115
// Neither has password
116116
let unknownURL = URL(string: "http://\(UUID().uuidString)")!
117-
let provider = CompositeAuthorizationProvider(providerOne, providerTwo)
117+
let provider = CompositeAuthorizationProvider(providerOne, providerTwo, observabilityScope: ObservabilitySystem.NOOP)
118118
XCTAssertNil(provider.authentication(for: unknownURL))
119119
}
120120
}

0 commit comments

Comments
 (0)