@@ -25,22 +25,24 @@ import Testing
2525
2626@Suite ( " Login Credentials Provider " , . serialized)
2727final class LoginCredentialsProviderTests {
28- var tempDirectory : URL !
29-
30- init ( ) async throws {
31- // Create temp directory
32- tempDirectory = FileManager . default. temporaryDirectory . appendingPathComponent ( UUID ( ) . uuidString )
33- try FileManager . default . createDirectory ( at : tempDirectory , withIntermediateDirectories : true )
28+
29+ // Helper to create a unique temp directory for each test
30+ func createTempDirectory ( ) throws -> URL {
31+ let tempDir = FileManager . default . temporaryDirectory . appendingPathComponent ( UUID ( ) . uuidString )
32+ try FileManager . default. createDirectory ( at : tempDir , withIntermediateDirectories : true )
33+ return tempDir
3434 }
35-
36- deinit {
37- if let tempDirectory = tempDirectory {
38- try ? FileManager . default. removeItem ( at: tempDirectory)
39- }
35+
36+ // Helper to clean up temp directory
37+ func removeTempDirectory( _ url: URL ) {
38+ try ? FileManager . default. removeItem ( at: url)
4039 }
4140
4241 @Test ( " Get credentials successfully with full flow " )
4342 func getCredentialsSuccess( ) async throws {
43+ let tempDirectory = try createTempDirectory ( )
44+ defer { removeTempDirectory ( tempDirectory) }
45+
4446 // Setup token file
4547 let privateKey = P256 . Signing. PrivateKey ( )
4648 let pemKey = privateKey. pemRepresentation
@@ -142,6 +144,9 @@ final class LoginCredentialsProviderTests {
142144
143145 @Test ( " Get credentials with HTTP error returns proper error " )
144146 func getCredentialsHTTPError( ) async throws {
147+ let tempDirectory = try createTempDirectory ( )
148+ defer { removeTempDirectory ( tempDirectory) }
149+
145150 // Setup token file
146151 let privateKey = P256 . Signing. PrivateKey ( )
147152 let pemKey = privateKey. pemRepresentation
@@ -196,6 +201,8 @@ final class LoginCredentialsProviderTests {
196201
197202 @Test ( " Get credentials with invalid response throws decoding error " )
198203 func getCredentialsInvalidResponse( ) async throws {
204+ let tempDirectory = try createTempDirectory ( )
205+ defer { removeTempDirectory ( tempDirectory) }
199206
200207 // Setup token file
201208 let privateKey = P256 . Signing. PrivateKey ( )
@@ -251,6 +258,9 @@ final class LoginCredentialsProviderTests {
251258
252259 @Test ( " Get credentials with missing token file throws error " )
253260 func getCredentialsTokenFileNotFound( ) async throws {
261+ let tempDirectory = try createTempDirectory ( )
262+ defer { removeTempDirectory ( tempDirectory) }
263+
254264 // Create provider without token file
255265 let provider = try LoginCredentialsProvider . create (
256266 loginSession: " nonexistent-session " ,
@@ -268,6 +278,9 @@ final class LoginCredentialsProviderTests {
268278
269279 @Test ( " Get credentials returns cached token when not expired " )
270280 func getCredentialsCachedToken( ) async throws {
281+ let tempDirectory = try createTempDirectory ( )
282+ defer { removeTempDirectory ( tempDirectory) }
283+
271284 // Setup token file with future expiration
272285 let privateKey = P256 . Signing. PrivateKey ( )
273286 let pemKey = privateKey. pemRepresentation
@@ -329,6 +342,9 @@ final class LoginCredentialsProviderTests {
329342
330343 @Test ( " Token validation fails when clientId is missing " )
331344 func tokenValidationMissingClientId( ) async throws {
345+ let tempDirectory = try createTempDirectory ( )
346+ defer { removeTempDirectory ( tempDirectory) }
347+
332348 let privateKey = P256 . Signing. PrivateKey ( )
333349 let pemKey = privateKey. pemRepresentation
334350 let escapedPemKey = pemKey. replacingOccurrences ( of: " \n " , with: " \\ n " )
@@ -373,6 +389,9 @@ final class LoginCredentialsProviderTests {
373389
374390 @Test ( " Token validation fails when refreshToken is missing " )
375391 func tokenValidationMissingRefreshToken( ) async throws {
392+ let tempDirectory = try createTempDirectory ( )
393+ defer { removeTempDirectory ( tempDirectory) }
394+
376395 let privateKey = P256 . Signing. PrivateKey ( )
377396 let pemKey = privateKey. pemRepresentation
378397 let escapedPemKey = pemKey. replacingOccurrences ( of: " \n " , with: " \\ n " )
@@ -416,6 +435,9 @@ final class LoginCredentialsProviderTests {
416435
417436 @Test ( " Token validation fails when dpopKey is missing " )
418437 func tokenValidationMissingDpopKey( ) async throws {
438+ let tempDirectory = try createTempDirectory ( )
439+ defer { removeTempDirectory ( tempDirectory) }
440+
419441 let tokenData = """
420442 {
421443 " accessToken " : {
@@ -455,6 +477,9 @@ final class LoginCredentialsProviderTests {
455477
456478 @Test ( " Provider is immutable " )
457479 func providerIsImmutable( ) throws {
480+ let tempDirectory = try createTempDirectory ( )
481+ defer { removeTempDirectory ( tempDirectory) }
482+
458483 let provider = try LoginCredentialsProvider . create (
459484 loginSession: " test-session " ,
460485 loginRegion: . useast1,
0 commit comments