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 @@
-
-
+
+
@@ -298,29 +298,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -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")
}
}