diff --git a/Jot/Info.plist b/Jot/Info.plist index 942f34d..a085c0b 100644 --- a/Jot/Info.plist +++ b/Jot/Info.plist @@ -20,6 +20,8 @@ 1.0 CFBundleVersion 1 + LSApplicationCategoryType + public.app-category.developer-tools LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright diff --git a/Jot/Main.storyboard b/Jot/Main.storyboard index 016029c..c3dc1d3 100644 --- a/Jot/Main.storyboard +++ b/Jot/Main.storyboard @@ -224,7 +224,7 @@ - + @@ -236,24 +236,24 @@ - + - - + + - + - + - + @@ -272,7 +272,7 @@ - + @@ -289,8 +289,8 @@ - - + - + - + - + - + - + - + @@ -335,7 +335,7 @@ - + @@ -343,7 +343,7 @@ - + @@ -351,7 +351,7 @@ - + @@ -359,7 +359,7 @@ - + @@ -400,7 +400,7 @@ - + diff --git a/JotTests/JotTests.swift b/JotTests/JotTests.swift index 6852f9d..8db983c 100644 --- a/JotTests/JotTests.swift +++ b/JotTests/JotTests.swift @@ -12,7 +12,7 @@ import XCTest class JotTests: XCTestCase { func testJWTInit() { - guard let jwt = JWT(token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqZ3JpZmZpbiIsIm5hbWUiOiJKYW1lcyBHcmlmZmluIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.DXfNW7Gzvie7LIl5-HSG9clm3sjeglYG2uNmsPvcNerBQbzLI06vys4YqqCMtrWKEFij_y2hKGP9YFdHSRMdtyVcGEXmYP6H6E62uGhASmGFzEHeSa6B1X1-v8lRt_YpIGEXhkUnxfhdcQ90HJlNfajv0ndnRFk8YJxRkmr99OI") else { + guard let jwt = Jwt(token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqZ3JpZmZpbiIsIm5hbWUiOiJKYW1lcyBHcmlmZmluIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.DXfNW7Gzvie7LIl5-HSG9clm3sjeglYG2uNmsPvcNerBQbzLI06vys4YqqCMtrWKEFij_y2hKGP9YFdHSRMdtyVcGEXmYP6H6E62uGhASmGFzEHeSa6B1X1-v8lRt_YpIGEXhkUnxfhdcQ90HJlNfajv0ndnRFk8YJxRkmr99OI") else { XCTFail() return } @@ -22,14 +22,28 @@ class JotTests: XCTestCase { } func testJWTPayload() { - guard let jwt = JWT(token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqZ3JpZmZpbiIsIm5hbWUiOiJKYW1lcyBHcmlmZmluIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.DXfNW7Gzvie7LIl5-HSG9clm3sjeglYG2uNmsPvcNerBQbzLI06vys4YqqCMtrWKEFij_y2hKGP9YFdHSRMdtyVcGEXmYP6H6E62uGhASmGFzEHeSa6B1X1-v8lRt_YpIGEXhkUnxfhdcQ90HJlNfajv0ndnRFk8YJxRkmr99OI") else { + 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") + } + + func testJwtPayloadWithComplexObject() { + guard let jwt = Jwt(token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJqZ3JpZmZpbiIsIm5hbWUiOiJKYW1lcyBHcmlmZmluIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTY2MjM5MDIyLCJsaWMiOjIsInJvbGVzIjpbeyJ0eXBlIjoiQWRtaW4ifV19.W9xUEhfgQSZivmmcW_egcP3AR3QG7CTXo-1x-7NXgqdTxY9tDMcbVRvFuBj-qRcoh-Ugl-IHeQgSaUnxAfOwnHicWmRr5d44YO_MuuT7RYOPBImN2zg9CoYdrdIzbLkLo6m5muR5d8xs3lgRzhDneLCDKE4BfdDYqbMSkO4INWY") else { + XCTFail() + return + } + XCTAssertEqual(jwt.payload["exp"] as? Int, 1566239022) + + guard let roles = jwt.payload["roles"] as? [[String:String]] else { + XCTFail() + return + } + XCTAssertEqual(roles.first!["type"], "Admin") } }