Skip to content

Commit 8cd089b

Browse files
committed
chore: Add support for testing on Linux
1 parent 654bc93 commit 8cd089b

File tree

2 files changed

+88
-20
lines changed

2 files changed

+88
-20
lines changed

Tests/JWTTests/JWTTests.swift

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,30 @@ class EncodeTests: XCTestCase {
1717
}
1818

1919
assertSuccess(try JWT.decode(jwt, algorithm: algorithm)) { payload in
20-
XCTAssertEqual(payload as NSDictionary, ["iss": "fuller.li"])
20+
XCTAssertEqual(payload as! [String: String], ["iss": "fuller.li"])
2121
}
2222
}
2323
}
2424

2525
class PayloadTests: XCTestCase {
2626
func testIssuer() {
27-
JWT.encode(.none) { builder in
27+
_ = JWT.encode(.none) { builder in
2828
builder.issuer = "fuller.li"
2929
XCTAssertEqual(builder.issuer, "fuller.li")
3030
XCTAssertEqual(builder["iss"] as? String, "fuller.li")
3131
}
3232
}
3333

3434
func testAudience() {
35-
JWT.encode(.none) { builder in
35+
_ = JWT.encode(.none) { builder in
3636
builder.audience = "cocoapods"
3737
XCTAssertEqual(builder.audience, "cocoapods")
3838
XCTAssertEqual(builder["aud"] as? String, "cocoapods")
3939
}
4040
}
4141

4242
func testExpiration() {
43-
JWT.encode(.none) { builder in
43+
_ = JWT.encode(.none) { builder in
4444
let date = Date(timeIntervalSince1970: Date().timeIntervalSince1970)
4545
builder.expiration = date
4646
XCTAssertEqual(builder.expiration, date)
@@ -49,7 +49,7 @@ class PayloadTests: XCTestCase {
4949
}
5050

5151
func testNotBefore() {
52-
JWT.encode(.none) { builder in
52+
_ = JWT.encode(.none) { builder in
5353
let date = Date(timeIntervalSince1970: Date().timeIntervalSince1970)
5454
builder.notBefore = date
5555
XCTAssertEqual(builder.notBefore, date)
@@ -58,7 +58,7 @@ class PayloadTests: XCTestCase {
5858
}
5959

6060
func testIssuedAt() {
61-
JWT.encode(.none) { builder in
61+
_ = JWT.encode(.none) { builder in
6262
let date = Date(timeIntervalSince1970: Date().timeIntervalSince1970)
6363
builder.issuedAt = date
6464
XCTAssertEqual(builder.issuedAt, date)
@@ -67,7 +67,7 @@ class PayloadTests: XCTestCase {
6767
}
6868

6969
func testCustomAttributes() {
70-
JWT.encode(.none) { builder in
70+
_ = JWT.encode(.none) { builder in
7171
builder["user"] = "kyle"
7272
XCTAssertEqual(builder["user"] as? String, "kyle")
7373
}
@@ -79,7 +79,7 @@ class DecodeTests: XCTestCase {
7979
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS3lsZSJ9.zxm7xcp1eZtZhp4t-nlw09ATQnnFKIiSN83uG8u6cAg"
8080

8181
assertSuccess(try JWT.decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
82-
XCTAssertEqual(payload as NSDictionary, ["name": "Kyle"])
82+
XCTAssertEqual(payload as! [String: String], ["name": "Kyle"])
8383
}
8484
}
8585

@@ -99,7 +99,7 @@ class DecodeTests: XCTestCase {
9999
func testSuccessfulIssuerValidation() {
100100
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmdWxsZXIubGkifQ.d7B7PAQcz1E6oNhrlxmHxHXHgg39_k7X7wWeahl8kSQ"
101101
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!), issuer:"fuller.li")) { payload in
102-
XCTAssertEqual(payload as NSDictionary, ["iss": "fuller.li"])
102+
XCTAssertEqual(payload as! [String: String], ["iss": "fuller.li"])
103103
}
104104
}
105105

@@ -129,15 +129,15 @@ class DecodeTests: XCTestCase {
129129
// If this just started failing, hello 2024!
130130
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjgxODg0OTF9.EW7k-8Mvnv0GpvOKJalFRLoCB3a3xGG3i7hAZZXNAz0"
131131
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
132-
XCTAssertEqual(payload as NSDictionary, ["exp": 1728188491])
132+
XCTAssertEqual(payload as! [String: Int], ["exp": 1728188491])
133133
}
134134
}
135135

136136
func testUnexpiredClaimString() {
137137
// If this just started failing, hello 2024!
138138
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOiIxNzI4MTg4NDkxIn0.y4w7lNLrfRRPzuNUfM-ZvPkoOtrTU_d8ZVYasLdZGpk"
139139
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
140-
XCTAssertEqual(payload as NSDictionary, ["exp": "1728188491"])
140+
XCTAssertEqual(payload as! [String: String], ["exp": "1728188491"])
141141
}
142142
}
143143

@@ -146,14 +146,14 @@ class DecodeTests: XCTestCase {
146146
func testNotBeforeClaim() {
147147
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0MjgxODk3MjB9.jFT0nXAJvEwyG6R7CMJlzNJb7FtZGv30QRZpYam5cvs"
148148
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
149-
XCTAssertEqual(payload as NSDictionary, ["nbf": 1428189720])
149+
XCTAssertEqual(payload as! [String: Int], ["nbf": 1428189720])
150150
}
151151
}
152152

153153
func testNotBeforeClaimString() {
154154
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOiIxNDI4MTg5NzIwIn0.qZsj36irdmIAeXv6YazWDSFbpuxHtEh4Deof5YTpnVI"
155155
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
156-
XCTAssertEqual(payload as NSDictionary, ["nbf": "1428189720"])
156+
XCTAssertEqual(payload as! [String: String], ["nbf": "1428189720"])
157157
}
158158
}
159159

@@ -173,14 +173,14 @@ class DecodeTests: XCTestCase {
173173
func testIssuedAtClaimInThePast() {
174174
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MjgxODk3MjB9.I_5qjRcCUZVQdABLwG82CSuu2relSdIyJOyvXWUAJh4"
175175
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
176-
XCTAssertEqual(payload as NSDictionary, ["iat": 1428189720])
176+
XCTAssertEqual(payload as! [String: Int], ["iat": 1428189720])
177177
}
178178
}
179179

180180
func testIssuedAtClaimInThePastString() {
181181
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNDI4MTg5NzIwIn0.M8veWtsY52oBwi7LRKzvNnzhjK0QBS8Su1r0atlns2k"
182182
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!))) { payload in
183-
XCTAssertEqual(payload as NSDictionary, ["iat": "1428189720"])
183+
XCTAssertEqual(payload as! [String: String], ["iat": "1428189720"])
184184
}
185185
}
186186

@@ -201,14 +201,15 @@ class DecodeTests: XCTestCase {
201201
func testAudiencesClaim() {
202202
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsibWF4aW5lIiwia2F0aWUiXX0.-PKvdNLCClrWG7CvesHP6PB0-vxu-_IZcsYhJxBy5JM"
203203
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!), audience:"maxine")) { payload in
204-
XCTAssertEqual(payload as NSDictionary, ["aud": ["maxine", "katie"]])
204+
XCTAssertEqual(payload.count, 1)
205+
XCTAssertEqual(payload["aud"] as! [String], ["maxine", "katie"])
205206
}
206207
}
207208

208209
func testAudienceClaim() {
209210
let jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJreWxlIn0.dpgH4JOwueReaBoanLSxsGTc7AjKUvo7_M1sAfy_xVE"
210211
assertSuccess(try decode(jwt, algorithm: .hs256("secret".data(using: .utf8)!), audience:"kyle")) { payload in
211-
XCTAssertEqual(payload as NSDictionary, ["aud": "kyle"])
212+
XCTAssertEqual(payload as! [String: String], ["aud": "kyle"])
212213
}
213214
}
214215

@@ -227,7 +228,7 @@ class DecodeTests: XCTestCase {
227228
func testNoneAlgorithm() {
228229
let jwt = "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ0ZXN0IjoiaW5nIn0."
229230
assertSuccess(try decode(jwt, algorithm:.none)) { payload in
230-
XCTAssertEqual(payload as NSDictionary, ["test": "ing"])
231+
XCTAssertEqual(payload as! [String: String], ["test": "ing"])
231232
}
232233
}
233234

@@ -244,14 +245,14 @@ class DecodeTests: XCTestCase {
244245
func testHS384Algorithm() {
245246
let jwt = "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.lddiriKLoo42qXduMhCTKZ5Lo3njXxOC92uXyvbLyYKzbq4CVVQOb3MpDwnI19u4"
246247
assertSuccess(try decode(jwt, algorithm: .hs384("secret".data(using: .utf8)!))) { payload in
247-
XCTAssertEqual(payload as NSDictionary, ["some": "payload"])
248+
XCTAssertEqual(payload as! [String: String], ["some": "payload"])
248249
}
249250
}
250251

251252
func testHS512Algorithm() {
252253
let jwt = "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.WTzLzFO079PduJiFIyzrOah54YaM8qoxH9fLMQoQhKtw3_fMGjImIOokijDkXVbyfBqhMo2GCNu4w9v7UXvnpA"
253254
assertSuccess(try decode(jwt, algorithm: .hs512("secret".data(using: .utf8)!))) { payload in
254-
XCTAssertEqual(payload as NSDictionary, ["some": "payload"])
255+
XCTAssertEqual(payload as! [String: String], ["some": "payload"])
255256
}
256257
}
257258
}

Tests/LinuxMain.swift

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import XCTest
2+
@testable import JWTTests
3+
4+
5+
extension EncodeTests {
6+
static var allTests : [(String, (EncodeTests) -> () throws -> Void)] {
7+
return [
8+
("testEncodingJWT", testEncodingJWT),
9+
("testEncodingWithBuilder", testEncodingWithBuilder),
10+
]
11+
}
12+
}
13+
14+
15+
extension DecodeTests {
16+
static var allTests : [(String, (DecodeTests) -> () throws -> Void)] {
17+
return [
18+
("testDecodingValidJWT", testDecodingValidJWT),
19+
("testFailsToDecodeInvalidStringWithoutThreeSegments", testFailsToDecodeInvalidStringWithoutThreeSegments),
20+
("testDisablingVerify", testDisablingVerify),
21+
("testSuccessfulIssuerValidation", testSuccessfulIssuerValidation),
22+
("testIncorrectIssuerValidation", testIncorrectIssuerValidation),
23+
("testMissingIssuerValidation", testMissingIssuerValidation),
24+
("testExpiredClaim", testExpiredClaim),
25+
("testInvalidExpiaryClaim", testInvalidExpiaryClaim),
26+
("testUnexpiredClaim", testUnexpiredClaim),
27+
("testUnexpiredClaimString", testUnexpiredClaimString),
28+
("testNotBeforeClaim", testNotBeforeClaim),
29+
("testNotBeforeClaimString", testNotBeforeClaimString),
30+
("testInvalidNotBeforeClaim", testInvalidNotBeforeClaim),
31+
("testUnmetNotBeforeClaim", testUnmetNotBeforeClaim),
32+
("testIssuedAtClaimInThePast", testIssuedAtClaimInThePast),
33+
("testIssuedAtClaimInThePastString", testIssuedAtClaimInThePastString),
34+
("testIssuedAtClaimInTheFuture", testIssuedAtClaimInTheFuture),
35+
("testInvalidIssuedAtClaim", testInvalidIssuedAtClaim),
36+
("testAudiencesClaim", testAudiencesClaim),
37+
("testAudienceClaim", testAudienceClaim),
38+
("testMismatchAudienceClaim", testMismatchAudienceClaim),
39+
("testMissingAudienceClaim", testMissingAudienceClaim),
40+
("testNoneAlgorithm", testNoneAlgorithm),
41+
("testNoneFailsWithSecretAlgorithm", testNoneFailsWithSecretAlgorithm),
42+
("testMatchesAnyAlgorithm", testMatchesAnyAlgorithm),
43+
("testHS384Algorithm", testHS384Algorithm),
44+
("testHS512Algorithm", testHS512Algorithm),
45+
]
46+
}
47+
}
48+
49+
50+
extension PayloadTests {
51+
static var allTests : [(String, (PayloadTests) -> () throws -> Void)] {
52+
return [
53+
("testIssuer", testIssuer),
54+
("testAudience", testAudience),
55+
("testExpiration", testExpiration),
56+
("testNotBefore", testNotBefore),
57+
("testIssuedAt", testIssuedAt),
58+
("testCustomAttributes", testCustomAttributes),
59+
]
60+
}
61+
}
62+
63+
XCTMain([
64+
testCase(EncodeTests.allTests),
65+
testCase(DecodeTests.allTests),
66+
testCase(PayloadTests.allTests),
67+
])

0 commit comments

Comments
 (0)