1
0

SwifterTestsHttpRouter.swift 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // SwifterTestsHttpRouter.swift
  3. // Swifter
  4. //
  5. // Copyright © 2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import XCTest
  8. class SwifterTestsHttpRouter: XCTestCase {
  9. func testHttpRouterSlashRoot() {
  10. let router = Router<String>()
  11. router.attach(nil, path: "/", handler: "")
  12. XCTAssertNotNil(router.route(nil, path: "/"))
  13. }
  14. func testHttpRouterSimplePathSegments() {
  15. let router = Router<String>()
  16. router.attach(nil, path: "/a/b/c/d", handler: "")
  17. XCTAssertNil(router.route(nil, path: "/"))
  18. XCTAssertNil(router.route(nil, path: "/a"))
  19. XCTAssertNil(router.route(nil, path: "/a/b"))
  20. XCTAssertNil(router.route(nil, path: "/a/b/c"))
  21. XCTAssertNotNil(router.route(nil, path: "/a/b/c/d"))
  22. }
  23. func testHttpRouterSinglePathSegmentWildcard() {
  24. let router = Router<String>()
  25. router.attach(nil, path: "/a/*/c/d", handler: "")
  26. XCTAssertNil(router.route(nil, path: "/"))
  27. XCTAssertNil(router.route(nil, path: "/a"))
  28. XCTAssertNotNil(router.route(nil, path: "/a/foo/c/d"))
  29. XCTAssertNotNil(router.route(nil, path: "/a/b/c/d"))
  30. XCTAssertNil(router.route(nil, path: "/a/b"))
  31. XCTAssertNil(router.route(nil, path: "/a/b/foo/d"))
  32. }
  33. func testHttpRouterVariables() {
  34. let router = Router<String>()
  35. router.attach(nil, path: "/a/:arg1/:arg2/b/c/d/:arg3", handler: "")
  36. XCTAssertNil(router.route(nil, path: "/"))
  37. XCTAssertNil(router.route(nil, path: "/a"))
  38. XCTAssertNil(router.route(nil, path: "/a/b/c/d"))
  39. XCTAssertEqual(router.route(nil, path: "/a/value1/value2/b/c/d/value3")?.0[":arg1"], "value1")
  40. XCTAssertEqual(router.route(nil, path: "/a/value1/value2/b/c/d/value3")?.0[":arg2"], "value2")
  41. XCTAssertEqual(router.route(nil, path: "/a/value1/value2/b/c/d/value3")?.0[":arg3"], "value3")
  42. }
  43. func testHttpRouterMultiplePathSegmentWildcards() {
  44. let router = Router<String>()
  45. router.attach(nil, path: "/a/**/e/f/g", handler: "")
  46. XCTAssertNil(router.route(nil, path: "/"))
  47. XCTAssertNil(router.route(nil, path: "/a"))
  48. XCTAssertNotNil(router.route(nil, path: "/a/b/c/d/e/f/g"))
  49. XCTAssertNil(router.route(nil, path: "/a/e/f/g"))
  50. }
  51. func testHttpRouterEmptyTail() {
  52. let router = Router<String>()
  53. router.attach(nil, path: "/a/b/", handler: "")
  54. router.attach(nil, path: "/a/b/:var", handler: "")
  55. XCTAssertNil(router.route(nil, path: "/"))
  56. XCTAssertNil(router.route(nil, path: "/a"))
  57. XCTAssertNotNil(router.route(nil, path: "/a/b/"))
  58. XCTAssertNil(router.route(nil, path: "/a/e/f/g"))
  59. XCTAssertEqual(router.route(nil, path: "/a/b/value1")?.0[":var"], "value1")
  60. XCTAssertEqual(router.route(nil, path: "/a/b/")?.0[":var"], "")
  61. }
  62. }