@@ -9,6 +9,8 @@ final class RequestProcessorTests: XCTestCase {
99 private var sut : RequestProcessor !
1010 private var sessionManager : Alamofire . SessionManager !
1111
12+ private let url = URL ( string: " https://test.com/ " ) !
13+
1214 override func setUp( ) {
1315 super. setUp ( )
1416
@@ -29,7 +31,7 @@ final class RequestProcessorTests: XCTestCase {
2931 //
3032 func test_adapt_authenticates_the_urlrequest( ) throws {
3133 // Given
32- let urlRequest = URLRequest ( url: URL ( string : " https://test.com/ " ) ! )
34+ let urlRequest = URLRequest ( url: url )
3335
3436 // When
3537 let _ = try sut. adapt ( urlRequest)
@@ -109,6 +111,59 @@ final class RequestProcessorTests: XCTestCase {
109111 // Then
110112 XCTAssertFalse ( shouldRetry)
111113 }
114+
115+ // MARK: Error type
116+ //
117+ func test_request_is_scheduled_for_retry_when_applicationPasswordNotAvailable_error_occurs( ) throws {
118+ // Given
119+ let sessionManager = Alamofire . SessionManager ( configuration: URLSessionConfiguration . default)
120+ let request = try mockRequest ( )
121+
122+ // When
123+ let error = RequestAuthenticatorError . applicationPasswordNotAvailable
124+ let shouldRetry = waitFor { promise in
125+ self . sut. should ( sessionManager, retry: request, with: error) { shouldRetry, timeDelay in
126+ promise ( shouldRetry)
127+ }
128+ }
129+
130+ // Then
131+ XCTAssertTrue ( shouldRetry)
132+ }
133+
134+ func test_request_is_scheduled_for_retry_when_401_error_occurs( ) throws {
135+ // Given
136+ let sessionManager = Alamofire . SessionManager ( configuration: URLSessionConfiguration . default)
137+ let request = try mockRequest ( )
138+
139+ // When
140+ let error = AFError . responseValidationFailed ( reason: . unacceptableStatusCode( code: 401 ) )
141+ let shouldRetry = waitFor { promise in
142+ self . sut. should ( sessionManager, retry: request, with: error) { shouldRetry, timeDelay in
143+ promise ( shouldRetry)
144+ }
145+ }
146+
147+ // Then
148+ XCTAssertTrue ( shouldRetry)
149+ }
150+
151+ func test_request_is_not_scheduled_for_retry_when_irrelavant_error_occurs( ) throws {
152+ // Given
153+ let sessionManager = Alamofire . SessionManager ( configuration: URLSessionConfiguration . default)
154+ let request = try mockRequest ( )
155+
156+ // When
157+ let error = AFError . invalidURL ( url: url)
158+ let shouldRetry = waitFor { promise in
159+ self . sut. should ( sessionManager, retry: request, with: error) { shouldRetry, timeDelay in
160+ promise ( shouldRetry)
161+ }
162+ }
163+
164+ // Then
165+ XCTAssertFalse ( shouldRetry)
166+ }
112167}
113168
114169// MARK: Helpers
0 commit comments