FilesTests.swift 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //
  2. // FilesTests.swift
  3. // Swifter
  4. //
  5. // Created by Michael Enger on 02/09/2021.
  6. // Copyright © 2021 Damian Kołakowski. All rights reserved.
  7. //
  8. import XCTest
  9. #if os(Linux)
  10. import FoundationNetworking
  11. #endif
  12. @testable import Swifter
  13. class FilesTests: XCTestCase {
  14. let temporaryDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
  15. let temporaryFileName = UUID().uuidString + ".png"
  16. override func setUp() {
  17. super.setUp()
  18. let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
  19. let data = "This is a file"
  20. do {
  21. try data.write(to: temporaryFileURL, atomically: true, encoding: String.Encoding.utf8)
  22. } catch {
  23. XCTFail("Failed to create temporary file")
  24. }
  25. }
  26. override func tearDown() {
  27. let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
  28. do {
  29. try FileManager.default.removeItem(at: temporaryFileURL)
  30. } catch {
  31. // no worries
  32. }
  33. super.tearDown()
  34. }
  35. func testShareFile() {
  36. let request = HttpRequest()
  37. let closure = shareFile(temporaryDirectoryURL.appendingPathComponent(temporaryFileName).path)
  38. let result = closure(request)
  39. let headers = result.headers()
  40. XCTAssert(result.statusCode == 200)
  41. XCTAssert(headers["Content-Type"] == "image/png")
  42. XCTAssert(headers["Content-Length"] == "14")
  43. }
  44. func testShareFileNotFound() {
  45. let request = HttpRequest()
  46. let closure = shareFile(temporaryDirectoryURL.appendingPathComponent("does_not_exist").path)
  47. let result = closure(request)
  48. XCTAssert(result == .notFound)
  49. }
  50. func testShareFilesFromDirectory() {
  51. let request = HttpRequest()
  52. request.params = ["path": temporaryFileName]
  53. let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
  54. let result = closure(request)
  55. let headers = result.headers()
  56. XCTAssert(result.statusCode == 200)
  57. XCTAssert(headers["Content-Type"] == "image/png")
  58. XCTAssert(headers["Content-Length"] == "14")
  59. }
  60. func testShareFilesFromDirectoryFileNotFound() {
  61. let request = HttpRequest()
  62. request.params = ["path": "does_not_exist.wav"]
  63. let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
  64. let result = closure(request)
  65. XCTAssert(result == .notFound)
  66. }
  67. func testDirectoryBrowser() {
  68. let request = HttpRequest()
  69. request.params = ["path": ""]
  70. let closure = directoryBrowser(temporaryDirectoryURL.path)
  71. let result = closure(request)
  72. XCTAssert(result.statusCode == 200)
  73. }
  74. func testDirectoryBrowserNotFound() {
  75. let request = HttpRequest()
  76. request.params = ["path": "does/not/exist"]
  77. let closure = directoryBrowser(temporaryDirectoryURL.path)
  78. let result = closure(request)
  79. XCTAssert(result == .notFound)
  80. }
  81. }