diff --git a/Jot/Token/Payload.swift b/Jot/Token/Payload.swift index f4e610d..0fbfd27 100644 --- a/Jot/Token/Payload.swift +++ b/Jot/Token/Payload.swift @@ -8,6 +8,4 @@ import Foundation -class Payload: Codable { - -} +typealias Payload = [String: Any] diff --git a/Jot/Token/TokenDeserializer.swift b/Jot/Token/TokenDeserializer.swift index e0b63e9..5128a39 100644 --- a/Jot/Token/TokenDeserializer.swift +++ b/Jot/Token/TokenDeserializer.swift @@ -40,7 +40,7 @@ extension JWT { do { let header = try decoder.decode(Header.self, from: headerData) - let payload = try decoder.decode(Payload.self, from: payloadData) + let payload = try JSONSerialization.jsonObject(with: payloadData) as? Payload ?? [:] let signature = Signature() self.init(header: header, payload: payload, signature: signature) } catch { diff --git a/JotTests/JotTests.swift b/JotTests/JotTests.swift index bde3715..6852f9d 100644 --- a/JotTests/JotTests.swift +++ b/JotTests/JotTests.swift @@ -21,4 +21,15 @@ class JotTests: XCTestCase { XCTAssertEqual(jwt.header.typ, JwtType.jwt) } + func testJWTPayload() { + guard let jwt = JWT(token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqZ3JpZmZpbiIsIm5hbWUiOiJKYW1lcyBHcmlmZmluIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.DXfNW7Gzvie7LIl5-HSG9clm3sjeglYG2uNmsPvcNerBQbzLI06vys4YqqCMtrWKEFij_y2hKGP9YFdHSRMdtyVcGEXmYP6H6E62uGhASmGFzEHeSa6B1X1-v8lRt_YpIGEXhkUnxfhdcQ90HJlNfajv0ndnRFk8YJxRkmr99OI") else { + XCTFail() + return + } + + XCTAssertEqual(jwt.payload["sub"] as? String, "jgriffin") + XCTAssertEqual(jwt.payload["name"] as? String, "James Griffin") + + } + }