Skip to content

Commit 2148628

Browse files
authored
Merge pull request #502 from httpswift/files-tests
Add tests for the Files utilities
2 parents eea4bb1 + 9e31b68 commit 2148628

File tree

3 files changed

+123
-0
lines changed

3 files changed

+123
-0
lines changed

Xcode/Swifter.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@
4848
269B47981D3AAAE20042D137 /* Errno.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B2A11D369C9D00D35BFB /* Errno.swift */; };
4949
269B47991D3AAAE20042D137 /* String+BASE64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C76B6F61D2C44F30030FC98 /* String+BASE64.swift */; };
5050
269B47A71D3AAC4F0042D137 /* SwiftertvOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 269B47A51D3AAC4F0042D137 /* SwiftertvOS.h */; settings = {ATTRIBUTES = (Public, ); }; };
51+
39BFCFFA26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
52+
39BFCFFB26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
53+
39BFCFFC26E4F0A000A6D7BF /* FilesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */; };
5154
6A0D4512204E9988000A0726 /* MimeTypesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0D4511204E9988000A0726 /* MimeTypesTests.swift */; };
5255
6AE2FF722048013000302EC4 /* MimeTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE2FF702048011A00302EC4 /* MimeTypes.swift */; };
5356
6AE2FF732048013000302EC4 /* MimeTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AE2FF702048011A00302EC4 /* MimeTypes.swift */; };
@@ -174,6 +177,7 @@
174177
269B47A11D3AAAE20042D137 /* Swifter.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Swifter.framework; sourceTree = BUILT_PRODUCTS_DIR; };
175178
269B47A41D3AAC4F0042D137 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
176179
269B47A51D3AAC4F0042D137 /* SwiftertvOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SwiftertvOS.h; sourceTree = "<group>"; };
180+
39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FilesTests.swift; sourceTree = "<group>"; };
177181
540CA839228F275B00A3AF9B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
178182
540CA83A228F275B00A3AF9B /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = "<group>"; };
179183
6A0D4511204E9988000A0726 /* MimeTypesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MimeTypesTests.swift; sourceTree = "<group>"; };
@@ -420,6 +424,7 @@
420424
7CCD876C1C660B250068099B /* Tests */ = {
421425
isa = PBXGroup;
422426
children = (
427+
39BFCFF926E4F0A000A6D7BF /* FilesTests.swift */,
423428
7B912F49220507D00062C360 /* XCTestManifests.swift */,
424429
7CCB8C5F1D97B8CC008B9712 /* SwifterTestsHttpRouter.swift */,
425430
7CCD876D1C660B250068099B /* SwifterTestsHttpParser.swift */,
@@ -778,6 +783,7 @@
778783
043660D121FED35D00497989 /* SwifterTestsWebSocketSession.swift in Sources */,
779784
043660D221FED36800497989 /* IOSafetyTests.swift in Sources */,
780785
043660D021FED35B00497989 /* SwifterTestsStringExtensions.swift in Sources */,
786+
39BFCFFB26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
781787
043660CD21FED35200497989 /* SwifterTestsHttpRouter.swift in Sources */,
782788
047F1F02226AB9AD00909B95 /* XCTestManifests.swift in Sources */,
783789
043660CE21FED35500497989 /* SwifterTestsHttpParser.swift in Sources */,
@@ -798,6 +804,7 @@
798804
043660E521FED51100497989 /* SwifterTestsHttpRouter.swift in Sources */,
799805
7B55EC97226E0E4F00042D23 /* ServerThreadingTests.swift in Sources */,
800806
043660E621FED51400497989 /* SwifterTestsHttpParser.swift in Sources */,
807+
39BFCFFC26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
801808
043660EB21FED52000497989 /* MimeTypesTests.swift in Sources */,
802809
0C1F3CAF2265FC470076B6F5 /* SwifterTestsHttpResponseBody.swift in Sources */,
803810
);
@@ -909,6 +916,7 @@
909916
6A0D4512204E9988000A0726 /* MimeTypesTests.swift in Sources */,
910917
6AE2FF752048013300302EC4 /* MimeTypes.swift in Sources */,
911918
0858E7F81D68BC2600491CD1 /* PingServer.swift in Sources */,
919+
39BFCFFA26E4F0A000A6D7BF /* FilesTests.swift in Sources */,
912920
7C4785E91C71D15600A9FE73 /* SwifterTestsWebSocketSession.swift in Sources */,
913921
043660D421FED36900497989 /* IOSafetyTests.swift in Sources */,
914922
7CCD87721C660B250068099B /* SwifterTestsStringExtensions.swift in Sources */,

Xcode/Tests/FilesTests.swift

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
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+
9+
import XCTest
10+
#if os(Linux)
11+
import FoundationNetworking
12+
#endif
13+
@testable import Swifter
14+
15+
class FilesTests: XCTestCase {
16+
let temporaryDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
17+
let temporaryFileName = UUID().uuidString + ".png"
18+
19+
override func setUp() {
20+
super.setUp()
21+
22+
let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
23+
let data = "This is a file"
24+
do {
25+
try data.write(to: temporaryFileURL, atomically: true, encoding: String.Encoding.utf8)
26+
} catch {
27+
XCTFail("Failed to create temporary file")
28+
}
29+
}
30+
31+
override func tearDown() {
32+
let temporaryFileURL = temporaryDirectoryURL.appendingPathComponent(temporaryFileName)
33+
do {
34+
try FileManager.default.removeItem(at: temporaryFileURL)
35+
} catch {
36+
// no worries
37+
}
38+
39+
super.tearDown()
40+
}
41+
42+
func testShareFile() {
43+
let request = HttpRequest()
44+
let closure = shareFile(temporaryDirectoryURL.appendingPathComponent(temporaryFileName).path)
45+
let result = closure(request)
46+
let headers = result.headers()
47+
48+
XCTAssert(result.statusCode == 200)
49+
XCTAssert(headers["Content-Type"] == "image/png")
50+
XCTAssert(headers["Content-Length"] == "14")
51+
}
52+
53+
func testShareFileNotFound() {
54+
let request = HttpRequest()
55+
let closure = shareFile(temporaryDirectoryURL.appendingPathComponent("does_not_exist").path)
56+
let result = closure(request)
57+
58+
XCTAssert(result == .notFound)
59+
}
60+
61+
func testShareFilesFromDirectory() {
62+
let request = HttpRequest()
63+
request.params = ["path": temporaryFileName]
64+
let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
65+
let result = closure(request)
66+
let headers = result.headers()
67+
68+
XCTAssert(result.statusCode == 200)
69+
XCTAssert(headers["Content-Type"] == "image/png")
70+
XCTAssert(headers["Content-Length"] == "14")
71+
}
72+
73+
func testShareFilesFromDirectoryFileNotFound() {
74+
let request = HttpRequest()
75+
request.params = ["path": "does_not_exist.wav"]
76+
77+
let closure = shareFilesFromDirectory(temporaryDirectoryURL.path)
78+
let result = closure(request)
79+
80+
XCTAssert(result == .notFound)
81+
}
82+
83+
func testDirectoryBrowser() {
84+
let request = HttpRequest()
85+
request.params = ["path": ""]
86+
let closure = directoryBrowser(temporaryDirectoryURL.path)
87+
let result = closure(request)
88+
89+
XCTAssert(result.statusCode == 200)
90+
}
91+
92+
func testDirectoryBrowserNotFound() {
93+
let request = HttpRequest()
94+
request.params = ["path": "does/not/exist"]
95+
let closure = directoryBrowser(temporaryDirectoryURL.path)
96+
let result = closure(request)
97+
98+
XCTAssert(result == .notFound)
99+
}
100+
}

Xcode/Tests/XCTestManifests.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
#if !canImport(ObjectiveC)
22
import XCTest
33

4+
extension FilesTests {
5+
// DO NOT MODIFY: This is autogenerated, use:
6+
// `swift test --generate-linuxmain`
7+
// to regenerate.
8+
static let __allTests__FilesTests = [
9+
("testDirectoryBrowser", testDirectoryBrowser),
10+
("testDirectoryBrowserNotFound", testDirectoryBrowserNotFound),
11+
("testShareFile", testShareFile),
12+
("testShareFileNotFound", testShareFileNotFound),
13+
("testShareFilesFromDirectory", testShareFilesFromDirectory),
14+
("testShareFilesFromDirectoryFileNotFound", testShareFilesFromDirectoryFileNotFound),
15+
]
16+
}
17+
418
extension IOSafetyTests {
519
// DO NOT MODIFY: This is autogenerated, use:
620
// `swift test --generate-linuxmain`
@@ -98,6 +112,7 @@ extension SwifterTestsWebSocketSession {
98112

99113
public func __allTests() -> [XCTestCaseEntry] {
100114
return [
115+
testCase(FilesTests.__allTests__FilesTests),
101116
testCase(MimeTypeTests.__allTests__MimeTypeTests),
102117
testCase(ServerThreadingTests.__allTests__ServerThreadingTests),
103118
testCase(SwifterTestsHttpParser.__allTests__SwifterTestsHttpParser),

0 commit comments

Comments
 (0)