Skip to content

Commit 803fcea

Browse files
committed
Added unit tests for date validation with leeway.
1 parent 716873a commit 803fcea

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

Tests/JWTTests/JWTTests.swift

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,89 @@ class DecodeTests: XCTestCase {
279279
}
280280
}
281281

282+
class ValidationTests: XCTestCase {
283+
func testClaimJustExpiredWithoutLeeway() {
284+
var claims = ClaimSet()
285+
claims.expiration = Date().addingTimeInterval(-1)
286+
287+
let expectation = XCTestExpectation(description: "Signature should be expired.")
288+
do {
289+
try claims.validateExpiary()
290+
XCTFail("InvalidToken.expiredSignature error should have been thrown.")
291+
} catch InvalidToken.expiredSignature {
292+
expectation.fulfill()
293+
} catch {
294+
XCTFail("Unexpected error while validating exp claim.")
295+
}
296+
self.wait(for: [expectation], timeout: 0.5)
297+
}
298+
299+
func testClaimJustNotExpiredWithoutLeeway() {
300+
var claims = ClaimSet()
301+
claims.expiration = Date().addingTimeInterval(-1)
302+
303+
do {
304+
try claims.validateExpiary(leeway: 2)
305+
} catch {
306+
XCTFail("Unexpected error while validating exp claim that should be valid with leeway.")
307+
}
308+
}
309+
310+
func testNotBeforeIsImmatureSignatureWithoutLeeway() {
311+
var claims = ClaimSet()
312+
claims.notBefore = Date().addingTimeInterval(1)
313+
314+
let expectation = XCTestExpectation(description: "Signature should be immature.")
315+
do {
316+
try claims.validateNotBefore()
317+
XCTFail("InvalidToken.immatureSignature error should have been thrown.")
318+
} catch InvalidToken.immatureSignature {
319+
expectation.fulfill()
320+
} catch {
321+
XCTFail("Unexpected error while validating nbf claim.")
322+
}
323+
self.wait(for: [expectation], timeout: 0.5)
324+
}
325+
326+
func testNotBeforeIsValidWithLeeway() {
327+
var claims = ClaimSet()
328+
claims.notBefore = Date().addingTimeInterval(1)
329+
330+
do {
331+
try claims.validateNotBefore(leeway: 2)
332+
} catch {
333+
XCTFail("Unexpected error while validating nbf claim that should be valid with leeway.")
334+
}
335+
}
336+
337+
func testIssuedAtIsInFutureWithoutLeeway() {
338+
var claims = ClaimSet()
339+
claims.issuedAt = Date().addingTimeInterval(1)
340+
341+
let expectation = XCTestExpectation(description: "iat should be in the future.")
342+
do {
343+
try claims.validateIssuedAt()
344+
XCTFail("InvalidToken.invalidIssuedAt error should have been thrown.")
345+
} catch InvalidToken.invalidIssuedAt {
346+
expectation.fulfill()
347+
} catch {
348+
XCTFail("Unexpected error while validating iat claim.")
349+
}
350+
self.wait(for: [expectation], timeout: 0.5)
351+
}
352+
353+
func testIssuedAtIsValidWithLeeway() {
354+
var claims = ClaimSet()
355+
claims.issuedAt = Date().addingTimeInterval(1)
356+
357+
do {
358+
try claims.validateIssuedAt(leeway: 2)
359+
} catch {
360+
XCTFail("Unexpected error while validating iat claim that should be valid with leeway.")
361+
}
362+
}
363+
}
364+
282365
// MARK: Helpers
283366

284367
func assertSuccess(_ decoder: @autoclosure () throws -> Payload, closure: ((Payload) -> Void)? = nil) {

0 commit comments

Comments
 (0)