RedirectHandlerTests.swift 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. //
  2. // RedirectHandlerTests.swift
  3. //
  4. // Copyright (c) 2019 Alamofire Software Foundation (http://alamofire.org/)
  5. //
  6. // Permission is hereby granted, free of charge, to any person obtaining a copy
  7. // of this software and associated documentation files (the "Software"), to deal
  8. // in the Software without restriction, including without limitation the rights
  9. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. // copies of the Software, and to permit persons to whom the Software is
  11. // furnished to do so, subject to the following conditions:
  12. //
  13. // The above copyright notice and this permission notice shall be included in
  14. // all copies or substantial portions of the Software.
  15. //
  16. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22. // THE SOFTWARE.
  23. //
  24. import Alamofire
  25. import Foundation
  26. import XCTest
  27. // Disabled due to HTTPBin issue: https://github.com/postmanlabs/httpbin/issues/617
  28. // final class RedirectHandlerTestCase: BaseTestCase {
  29. // // MARK: - Properties
  30. //
  31. // private var redirectURLString: String { URL.makeHTTPBinURL().absoluteString }
  32. // private var urlString: String { "\(String.httpBinURLString)/redirect-to?url=\(redirectURLString)" }
  33. //
  34. // // MARK: - Tests - Per Request
  35. //
  36. // func testThatRequestRedirectHandlerCanFollowRedirects() {
  37. // // Given
  38. // let session = Session()
  39. //
  40. // var response: DataResponse<Data?, AFError>?
  41. // let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
  42. //
  43. // // When
  44. // session.request(urlString).redirect(using: Redirector.follow).response { resp in
  45. // response = resp
  46. // expectation.fulfill()
  47. // }
  48. //
  49. // waitForExpectations(timeout: timeout)
  50. //
  51. // // Then
  52. // XCTAssertNotNil(response?.request)
  53. // XCTAssertNotNil(response?.response)
  54. // XCTAssertNotNil(response?.data)
  55. // XCTAssertNil(response?.error)
  56. //
  57. // XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
  58. // XCTAssertEqual(response?.response?.statusCode, 200)
  59. // }
  60. //
  61. // func testThatRequestRedirectHandlerCanNotFollowRedirects() {
  62. // // Given
  63. // let session = Session()
  64. //
  65. // var response: DataResponse<Data?, AFError>?
  66. // let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
  67. //
  68. // // When
  69. // session.request(urlString).redirect(using: Redirector.doNotFollow).response { resp in
  70. // response = resp
  71. // expectation.fulfill()
  72. // }
  73. //
  74. // waitForExpectations(timeout: timeout)
  75. //
  76. // // Then
  77. // XCTAssertNotNil(response?.request)
  78. // XCTAssertNotNil(response?.response)
  79. // XCTAssertNil(response?.data)
  80. // XCTAssertNil(response?.error)
  81. //
  82. // XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
  83. // XCTAssertEqual(response?.response?.statusCode, 302)
  84. // }
  85. //
  86. // func testThatRequestRedirectHandlerCanModifyRedirects() {
  87. // // Given
  88. // let session = Session()
  89. // let redirectURLString = URL.makeHTTPBinURL().absoluteString
  90. // let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
  91. //
  92. // var response: DataResponse<Data?, AFError>?
  93. // let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
  94. //
  95. // // When
  96. // let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
  97. //
  98. // session.request(urlString).redirect(using: redirector).response { resp in
  99. // response = resp
  100. // expectation.fulfill()
  101. // }
  102. //
  103. // waitForExpectations(timeout: timeout)
  104. //
  105. // // Then
  106. // XCTAssertNotNil(response?.request)
  107. // XCTAssertNotNil(response?.response)
  108. // XCTAssertNotNil(response?.data)
  109. // XCTAssertNil(response?.error)
  110. //
  111. // XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
  112. // XCTAssertEqual(response?.response?.statusCode, 200)
  113. // }
  114. //
  115. // // MARK: - Tests - Per Session
  116. //
  117. // func testThatSessionRedirectHandlerCanFollowRedirects() {
  118. // // Given
  119. // let session = Session(redirectHandler: Redirector.follow)
  120. //
  121. // var response: DataResponse<Data?, AFError>?
  122. // let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
  123. //
  124. // // When
  125. // session.request(urlString).response { resp in
  126. // response = resp
  127. // expectation.fulfill()
  128. // }
  129. //
  130. // waitForExpectations(timeout: timeout)
  131. //
  132. // // Then
  133. // XCTAssertNotNil(response?.request)
  134. // XCTAssertNotNil(response?.response)
  135. // XCTAssertNotNil(response?.data)
  136. // XCTAssertNil(response?.error)
  137. //
  138. // XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
  139. // XCTAssertEqual(response?.response?.statusCode, 200)
  140. // }
  141. //
  142. // func testThatSessionRedirectHandlerCanNotFollowRedirects() {
  143. // // Given
  144. // let session = Session(redirectHandler: Redirector.doNotFollow)
  145. //
  146. // var response: DataResponse<Data?, AFError>?
  147. // let expectation = self.expectation(description: "Request should NOT redirect to \(redirectURLString)")
  148. //
  149. // // When
  150. // session.request(urlString).response { resp in
  151. // response = resp
  152. // expectation.fulfill()
  153. // }
  154. //
  155. // waitForExpectations(timeout: timeout)
  156. //
  157. // // Then
  158. // XCTAssertNotNil(response?.request)
  159. // XCTAssertNotNil(response?.response)
  160. // XCTAssertNil(response?.data)
  161. // XCTAssertNil(response?.error)
  162. //
  163. // XCTAssertEqual(response?.response?.url?.absoluteString, urlString)
  164. // XCTAssertEqual(response?.response?.statusCode, 302)
  165. // }
  166. //
  167. // func testThatSessionRedirectHandlerCanModifyRedirects() {
  168. // // Given
  169. // let redirectURLString = URL.makeHTTPBinURL().absoluteString
  170. // let redirectURLRequest = URLRequest(url: URL(string: redirectURLString)!)
  171. //
  172. // let redirector = Redirector(behavior: .modify { _, _, _ in redirectURLRequest })
  173. // let session = Session(redirectHandler: redirector)
  174. //
  175. // var response: DataResponse<Data?, AFError>?
  176. // let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
  177. //
  178. // // When
  179. // session.request(urlString).response { resp in
  180. // response = resp
  181. // expectation.fulfill()
  182. // }
  183. //
  184. // waitForExpectations(timeout: timeout)
  185. //
  186. // // Then
  187. // XCTAssertNotNil(response?.request)
  188. // XCTAssertNotNil(response?.response)
  189. // XCTAssertNotNil(response?.data)
  190. // XCTAssertNil(response?.error)
  191. //
  192. // XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
  193. // XCTAssertEqual(response?.response?.statusCode, 200)
  194. // }
  195. //
  196. // // MARK: - Tests - Per Request Prioritization
  197. //
  198. // func testThatRequestRedirectHandlerIsPrioritizedOverSessionRedirectHandler() {
  199. // // Given
  200. // let session = Session(redirectHandler: Redirector.doNotFollow)
  201. //
  202. // var response: DataResponse<Data?, AFError>?
  203. // let expectation = self.expectation(description: "Request should redirect to \(redirectURLString)")
  204. //
  205. // // When
  206. // session.request(urlString).redirect(using: Redirector.follow).response { resp in
  207. // response = resp
  208. // expectation.fulfill()
  209. // }
  210. //
  211. // waitForExpectations(timeout: timeout)
  212. //
  213. // // Then
  214. // XCTAssertNotNil(response?.request)
  215. // XCTAssertNotNil(response?.response)
  216. // XCTAssertNotNil(response?.data)
  217. // XCTAssertNil(response?.error)
  218. //
  219. // XCTAssertEqual(response?.response?.url?.absoluteString, redirectURLString)
  220. // XCTAssertEqual(response?.response?.statusCode, 200)
  221. // }
  222. // }