11import Foundation
22import XCTest
3- import JWT
3+ @ testable import JWT
44
55class DecodeTests : XCTestCase {
6- func testDecodingValidJWTAsClaimSet( ) throws {
7- let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS3lsZSJ9.zxm7xcp1eZtZhp4t-nlw09ATQnnFKIiSN83uG8u6cAg "
8-
9- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
10- XCTAssertEqual ( claims [ " name " ] as? String , " Kyle " )
11- }
12-
136 func testDecodingValidJWT( ) throws {
147 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiS3lsZSJ9.zxm7xcp1eZtZhp4t-nlw09ATQnnFKIiSN83uG8u6cAg "
158
16- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
9+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
1710 XCTAssertEqual ( claims [ " name " ] as? String , " Kyle " )
1811 }
1912
@@ -25,15 +18,15 @@ class DecodeTests: XCTestCase {
2518
2619 func testDisablingVerify( ) throws {
2720 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.2_8pWJfyPup0YwOXK7g9Dn0cF1E3pdn299t4hSeJy5w "
28- _ = try decode ( jwt, algorithm: . none, verify: false , issuer: " fuller.li " ) as ClaimSet
21+ _ = try decode ( jwt, algorithm: . none, verify: false , issuer: " fuller.li " )
2922 }
3023
3124 // MARK: Issuer claim
3225
3326 func testSuccessfulIssuerValidation( ) throws {
3427 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmdWxsZXIubGkifQ.d7B7PAQcz1E6oNhrlxmHxHXHgg39_k7X7wWeahl8kSQ "
3528
36- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
29+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
3730 XCTAssertEqual ( claims. issuer, " fuller.li " )
3831 }
3932
@@ -54,7 +47,7 @@ class DecodeTests: XCTestCase {
5447 XCTAssertThrowsError ( try decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) ) )
5548 }
5649
57- func testInvalidExpiaryClaim ( ) {
50+ func testInvalidExpiryClaim ( ) {
5851 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOlsiMTQyODE4ODQ5MSJdfQ.OwF-wd3THjxrEGUhh6IdnNhxQZ7ydwJ3Z6J_dfl9MBs "
5952 XCTAssertThrowsError ( try decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) ) )
6053 }
@@ -63,15 +56,15 @@ class DecodeTests: XCTestCase {
6356 // If this just started failing, hello 2024!
6457 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjgxODg0OTF9.EW7k-8Mvnv0GpvOKJalFRLoCB3a3xGG3i7hAZZXNAz0 "
6558
66- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
67- XCTAssertEqual ( claims. expiration? . timeIntervalSince1970, 1728188491 )
59+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
60+ XCTAssertEqual ( claims. expiration? . timeIntervalSince1970, 1728188491 )
6861 }
6962
7063 func testUnexpiredClaimString( ) throws {
7164 // If this just started failing, hello 2024!
7265 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOiIxNzI4MTg4NDkxIn0.y4w7lNLrfRRPzuNUfM-ZvPkoOtrTU_d8ZVYasLdZGpk "
7366
74- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
67+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
7568 XCTAssertEqual ( claims. expiration? . timeIntervalSince1970, 1728188491 )
7669 }
7770
@@ -80,14 +73,14 @@ class DecodeTests: XCTestCase {
8073 func testNotBeforeClaim( ) throws {
8174 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0MjgxODk3MjB9.jFT0nXAJvEwyG6R7CMJlzNJb7FtZGv30QRZpYam5cvs "
8275
83- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
76+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
8477 XCTAssertEqual ( claims. notBefore? . timeIntervalSince1970, 1428189720 )
8578 }
8679
8780 func testNotBeforeClaimString( ) throws {
8881 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOiIxNDI4MTg5NzIwIn0.qZsj36irdmIAeXv6YazWDSFbpuxHtEh4Deof5YTpnVI "
8982
90- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
83+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
9184 XCTAssertEqual ( claims. notBefore? . timeIntervalSince1970, 1428189720 )
9285 }
9386
@@ -107,14 +100,14 @@ class DecodeTests: XCTestCase {
107100 func testIssuedAtClaimInThePast( ) throws {
108101 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MjgxODk3MjB9.I_5qjRcCUZVQdABLwG82CSuu2relSdIyJOyvXWUAJh4 "
109102
110- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
103+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
111104 XCTAssertEqual ( claims. issuedAt? . timeIntervalSince1970, 1428189720 )
112105 }
113106
114107 func testIssuedAtClaimInThePastString( ) throws {
115108 let jwt = " eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNDI4MTg5NzIwIn0.M8veWtsY52oBwi7LRKzvNnzhjK0QBS8Su1r0atlns2k "
116109
117- let claims : ClaimSet = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
110+ let claims = try JWT . decode ( jwt, algorithm: . hs256( " secret " . data ( using: . utf8) !) )
118111 XCTAssertEqual ( claims. issuedAt? . timeIntervalSince1970, 1428189720 )
119112 }
120113
@@ -185,24 +178,24 @@ class DecodeTests: XCTestCase {
185178
186179 func testHS512Algorithm( ) {
187180 let jwt = " eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoicGF5bG9hZCJ9.WTzLzFO079PduJiFIyzrOah54YaM8qoxH9fLMQoQhKtw3_fMGjImIOokijDkXVbyfBqhMo2GCNu4w9v7UXvnpA "
188- assertSuccess ( try decode ( jwt, algorithm: . hs512( " secret " . data ( using: . utf8) !) ) ) { payload in
189- XCTAssertEqual ( payload as! [ String : String ] , [ " some " : " payload " ] )
181+ assertSuccess ( try decode ( jwt, algorithm: . hs512( " secret " . data ( using: . utf8) !) ) ) { claims in
182+ XCTAssertEqual ( claims as! [ String : String ] , [ " some " : " payload " ] )
190183 }
191184 }
192185}
193186
194187// MARK: Helpers
195188
196- func assertSuccess( _ decoder: @autoclosure ( ) throws -> Payload , closure: ( ( Payload ) -> Void ) ? = nil ) {
189+ func assertSuccess( _ decoder: @autoclosure ( ) throws -> ClaimSet , closure: ( ( [ String : Any ] ) -> Void ) ? = nil ) {
197190 do {
198- let payload = try decoder ( )
199- closure ? ( payload )
191+ let claims = try decoder ( )
192+ closure ? ( claims . claims as [ String : Any ] )
200193 } catch {
201194 XCTFail ( " Failed to decode while expecting success. \( error) " )
202195 }
203196}
204197
205- func assertFailure( _ decoder: @autoclosure ( ) throws -> Payload , closure: ( ( InvalidToken ) -> Void ) ? = nil ) {
198+ func assertFailure( _ decoder: @autoclosure ( ) throws -> ClaimSet , closure: ( ( InvalidToken ) -> Void ) ? = nil ) {
206199 do {
207200 _ = try decoder ( )
208201 XCTFail ( " Decoding succeeded, expected a failure. " )
@@ -213,7 +206,7 @@ func assertFailure(_ decoder: @autoclosure () throws -> Payload, closure: ((Inva
213206 }
214207}
215208
216- func assertDecodeError( _ decoder: @autoclosure ( ) throws -> Payload , error: String ) {
209+ func assertDecodeError( _ decoder: @autoclosure ( ) throws -> ClaimSet , error: String ) {
217210 assertFailure ( try decoder ( ) ) { failure in
218211 switch failure {
219212 case . decodeError( let decodeError) :
0 commit comments