فهرست منبع

Merge pull request #502 from httpswift/files-tests

Add tests for the Files utilities
Victor Sigler 4 سال پیش
والد
کامیت
2148628729
3فایلهای تغییر یافته به همراه123 افزوده شده و 0 حذف شده
  1. 8 0
      Xcode/Swifter.xcodeproj/project.pbxproj
  2. 100 0
      Xcode/Tests/FilesTests.swift
  3. 15 0
      Xcode/Tests/XCTestManifests.swift

+ 8 - 0
Xcode/Swifter.xcodeproj/project.pbxproj

@@ -48,6 +48,9 @@
 		269B47981D3AAAE20042D137 /* Errno.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B2A11D369C9D00D35BFB /* Errno.swift */; };
 		269B47991D3AAAE20042D137 /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */; };
 		269B47A71D3AAC4F0042D137 /* SwiftertvOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 269B47A51D3AAC4F0042D137 /* SwiftertvOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		39BFCFFA26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
+		39BFCFFB26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
+		39BFCFFC26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
 		6A0D4512204E9988000A0726 /* MimeTypesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4511204E9988000A0726 /* MimeTypesTests.swift */; };
 		6AE2FF722048013000302EC4 /* MimeTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE2FF702048011A00302EC4 /* MimeTypes.swift */; };
 		6AE2FF732048013000302EC4 /* MimeTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE2FF702048011A00302EC4 /* MimeTypes.swift */; };
@@ -174,6 +177,7 @@
 		269B47A11D3AAAE20042D137 /* Swifter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Swifter.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		269B47A41D3AAC4F0042D137 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		269B47A51D3AAC4F0042D137 /* SwiftertvOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SwiftertvOS.h; sourceTree = "<group>"; };
+		39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilesTests.swift; sourceTree = "<group>"; };
 		540CA839228F275B00A3AF9B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
 		540CA83A228F275B00A3AF9B /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = "<group>"; };
 		6A0D4511204E9988000A0726 /* MimeTypesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MimeTypesTests.swift; sourceTree = "<group>"; };
@@ -420,6 +424,7 @@
 		7CCD876C1C660B250068099B /* Tests */ = {
 			isa = PBXGroup;
 			children = (
+				39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */,
 				7B912F49220507D00062C360 /* XCTestManifests.swift */,
 				7CCB8C5F1D97B8CC008B9712 /* SwifterTestsHttpRouter.swift */,
 				7CCD876D1C660B250068099B /* SwifterTestsHttpParser.swift */,
@@ -778,6 +783,7 @@
 				043660D121FED35D00497989 /* SwifterTestsWebSocketSession.swift in Sources */,
 				043660D221FED36800497989 /* IOSafetyTests.swift in Sources */,
 				043660D021FED35B00497989 /* SwifterTestsStringExtensions.swift in Sources */,
+				39BFCFFB26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
 				043660CD21FED35200497989 /* SwifterTestsHttpRouter.swift in Sources */,
 				047F1F02226AB9AD00909B95 /* XCTestManifests.swift in Sources */,
 				043660CE21FED35500497989 /* SwifterTestsHttpParser.swift in Sources */,
@@ -798,6 +804,7 @@
 				043660E521FED51100497989 /* SwifterTestsHttpRouter.swift in Sources */,
 				7B55EC97226E0E4F00042D23 /* ServerThreadingTests.swift in Sources */,
 				043660E621FED51400497989 /* SwifterTestsHttpParser.swift in Sources */,
+				39BFCFFC26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
 				043660EB21FED52000497989 /* MimeTypesTests.swift in Sources */,
 				0C1F3CAF2265FC470076B6F5 /* SwifterTestsHttpResponseBody.swift in Sources */,
 			);
@@ -909,6 +916,7 @@
 				6A0D4512204E9988000A0726 /* MimeTypesTests.swift in Sources */,
 				6AE2FF752048013300302EC4 /* MimeTypes.swift in Sources */,
 				0858E7F81D68BC2600491CD1 /* PingServer.swift in Sources */,
+				39BFCFFA26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
 				7C4785E91C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */,
 				043660D421FED36900497989 /* IOSafetyTests.swift in Sources */,
 				7CCD87721C660B250068099B /* SwifterTestsStringExtensions.swift in Sources */,

+ 100 - 0
Xcode/Tests/FilesTests.swift

@@ -0,0 +1,100 @@
+//
+//  FilesTests.swift
+//  Swifter
+//
+//  Created by Michael Enger on 02/09/2021.
+//  Copyright © 2021 Damian Kołakowski. All rights reserved.
+//
+
+import XCTest
+#if os(Linux)
+import FoundationNetworking
+#endif
+@testable import Swifter
+
+class FilesTests: XCTestCase {
+    let temporaryDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
+    let temporaryFileName = UUID().uuidString + ".png"
+
+    override func setUp() {
+        super.setUp()
+
+        let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
+        let data = "This is a file"
+        do {
+            try data.write(to: temporaryFileURL, atomically: true, encoding: String.Encoding.utf8)
+        } catch {
+            XCTFail("Failed to create temporary file")
+        }
+    }
+
+    override func tearDown() {
+        let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
+        do {
+            try FileManager.default.removeItem(at: temporaryFileURL)
+        } catch {
+            // no worries
+        }
+        
+        super.tearDown()
+    }
+    
+    func testShareFile() {
+        let request = HttpRequest()
+        let closure = shareFile(temporaryDirectoryURL.appendingPathComponent(temporaryFileName).path)
+        let result = closure(request)
+        let headers = result.headers()
+
+        XCTAssert(result.statusCode == 200)
+        XCTAssert(headers["Content-Type"] == "image/png")
+        XCTAssert(headers["Content-Length"] == "14")
+    }
+    
+    func testShareFileNotFound() {
+        let request = HttpRequest()
+        let closure = shareFile(temporaryDirectoryURL.appendingPathComponent("does_not_exist").path)
+        let result = closure(request)
+
+        XCTAssert(result == .notFound)
+    }
+
+    func testShareFilesFromDirectory() {
+        let request = HttpRequest()
+        request.params = ["path": temporaryFileName]
+        let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
+        let result = closure(request)
+        let headers = result.headers()
+
+        XCTAssert(result.statusCode == 200)
+        XCTAssert(headers["Content-Type"] == "image/png")
+        XCTAssert(headers["Content-Length"] == "14")
+    }
+    
+    func testShareFilesFromDirectoryFileNotFound() {
+        let request = HttpRequest()
+        request.params = ["path": "does_not_exist.wav"]
+
+        let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
+        let result = closure(request)
+
+        XCTAssert(result == .notFound)
+    }
+    
+    func testDirectoryBrowser() {
+        let request = HttpRequest()
+        request.params = ["path": ""]
+        let closure = directoryBrowser(temporaryDirectoryURL.path)
+        let result = closure(request)
+
+        XCTAssert(result.statusCode == 200)
+    }
+    
+    func testDirectoryBrowserNotFound() {
+        let request = HttpRequest()
+        request.params = ["path": "does/not/exist"]
+        let closure = directoryBrowser(temporaryDirectoryURL.path)
+        let result = closure(request)
+
+        XCTAssert(result == .notFound)
+    }
+}

+ 15 - 0
Xcode/Tests/XCTestManifests.swift

@@ -1,6 +1,20 @@
 #if !canImport(ObjectiveC)
 import XCTest
 
+extension FilesTests {
+    // DO NOT MODIFY: This is autogenerated, use:
+    //   `swift test --generate-linuxmain`
+    // to regenerate.
+    static let __allTests__FilesTests = [
+        ("testDirectoryBrowser", testDirectoryBrowser),
+        ("testDirectoryBrowserNotFound", testDirectoryBrowserNotFound),
+        ("testShareFile", testShareFile),
+        ("testShareFileNotFound", testShareFileNotFound),
+        ("testShareFilesFromDirectory", testShareFilesFromDirectory),
+        ("testShareFilesFromDirectoryFileNotFound", testShareFilesFromDirectoryFileNotFound),
+    ]
+}
+
 extension IOSafetyTests {
     // DO NOT MODIFY: This is autogenerated, use:
     //   `swift test --generate-linuxmain`
@@ -98,6 +112,7 @@ extension SwifterTestsWebSocketSession {
 
 public func __allTests() -> [XCTestCaseEntry] {
     return [
+        testCase(FilesTests.__allTests__FilesTests),
         testCase(MimeTypeTests.__allTests__MimeTypeTests),
         testCase(ServerThreadingTests.__allTests__ServerThreadingTests),
         testCase(SwifterTestsHttpParser.__allTests__SwifterTestsHttpParser),