Deserialize payload into dictionary

This commit is contained in:
2018-12-29 23:24:19 -04:00
parent ba099e66c2
commit d9181da04f
3 changed files with 13 additions and 4 deletions

View File

@@ -8,6 +8,4 @@
import Foundation import Foundation
class Payload: Codable { typealias Payload = [String: Any]
}

View File

@@ -40,7 +40,7 @@ extension JWT {
do { do {
let header = try decoder.decode(Header.self, from: headerData) 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() let signature = Signature()
self.init(header: header, payload: payload, signature: signature) self.init(header: header, payload: payload, signature: signature)
} catch { } catch {

View File

@@ -21,4 +21,15 @@ class JotTests: XCTestCase {
XCTAssertEqual(jwt.header.typ, JwtType.jwt) 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")
}
} }