@@ -28,34 +28,33 @@ class SignInWithGameCenterTests: RPCBaseTests {
2828 private let kReturnSecureTokenKey = " returnSecureToken "
2929 private let kExpectedAPIURL =
3030 " https://www.googleapis.com/identitytoolkit/v3/relyingparty/signInWithGameCenter?key=APIKey "
31+ let kIDToken = " IDTOKEN "
32+ let kPlayerIDKey = " playerId "
33+ let kPlayerID = " PLAYERID "
34+ let kTeamPlayerIDKey = " teamPlayerId "
35+ let kTeamPlayerID = " TEAMPLAYERID "
36+ let kGamePlayerIDKey = " gamePlayerId "
37+ let kGamePlayerID = " GAMEPLAYERID "
38+ let kApproximateExpirationDate = " 3600 "
39+ let kPublicKeyURLKey = " publicKeyUrl "
40+ let kPublicKeyURL = " PUBLICKEYURL "
41+ let kSignatureKey = " signature "
42+ let kSignature = " AAAABBBBCCCC "
43+ let kSaltKey = " salt "
44+ let kSalt = " AAAA "
45+ let kTimestampKey = " timestamp "
46+ let kTimestamp = UInt64 ( 12_345_678 )
47+ let kAccessTokenKey = " idToken "
48+ let kAccessToken = " ACCESSTOKEN "
3149
3250 /** @fn testSignInWithGameCenterRequestAnonymous
3351 @brief Tests the encoding of a sign up new user request when user is signed in anonymously.
3452 */
3553 func testRequestResponseEncoding( ) throws {
36- let kIDToken = " IDTOKEN "
3754 let kRefreshToken = " PUBLICKEYURL "
3855 let kLocalID = " LOCALID "
39- let kPlayerIDKey = " playerId "
40- let kPlayerID = " PLAYERID "
41- let kTeamPlayerIDKey = " teamPlayerId "
42- let kTeamPlayerID = " TEAMPLAYERID "
43- let kGamePlayerIDKey = " gamePlayerId "
44- let kGamePlayerID = " GAMEPLAYERID "
45- let kApproximateExpirationDate = " 3600 "
4656 let kDisplayNameKey = " displayName "
4757 let kDisplayName = " DISPLAYNAME "
48- let kPublicKeyURLKey = " publicKeyUrl "
49- let kPublicKeyURL = " PUBLICKEYURL "
50- let kSignatureKey = " signature "
51- let kSignature = " AAAABBBBCCCC "
52- let kSaltKey = " salt "
53- let kSalt = " AAAA "
54- let kTimestampKey = " timestamp "
55- let kTimestamp = UInt64 ( 12_345_678 )
56- let kAccessTokenKey = " idToken "
57- let kAccessToken = " ACCESSTOKEN "
58-
5958 var callbackInvoked = false
6059 var rpcResponse : SignInWithGameCenterResponse ?
6160 var rpcError : NSError ?
@@ -119,4 +118,45 @@ class SignInWithGameCenterTests: RPCBaseTests {
119118 XCTAssertEqual ( rpcResponse? . displayName, kDisplayName)
120119 XCTAssertTrue ( try XCTUnwrap ( rpcResponse? . isNewUser) )
121120 }
121+
122+ #if !os(watchOS)
123+ /** @fn testGameCenterAuthCredentialCoding
124+ @brief Tests successful archiving and unarchiving of @c GameCenterAuthCredential.
125+ */
126+ func testGameCenterAuthCredentialCoding( ) throws {
127+ let credential = try makeGameCenterCredential ( )
128+ XCTAssertTrue ( GameCenterAuthCredential . supportsSecureCoding)
129+ let data = try NSKeyedArchiver . archivedData (
130+ withRootObject: credential,
131+ requiringSecureCoding: true
132+ )
133+ let unarchivedCredential = try XCTUnwrap ( NSKeyedUnarchiver . unarchivedObject (
134+ ofClasses: [ NSURL . self, GameCenterAuthCredential . self] , from: data
135+ ) as? GameCenterAuthCredential )
136+ XCTAssertEqual ( unarchivedCredential. playerID, kPlayerID)
137+ XCTAssertEqual ( unarchivedCredential. teamPlayerID, kTeamPlayerID)
138+ XCTAssertEqual ( unarchivedCredential. gamePlayerID, kGamePlayerID)
139+ XCTAssertEqual ( unarchivedCredential. publicKeyURL, URL ( string: kPublicKeyURL) )
140+ XCTAssertEqual ( String ( data: try XCTUnwrap ( unarchivedCredential. signature) ,
141+ encoding: . utf8) , kSignature)
142+ XCTAssertEqual ( String ( data: try XCTUnwrap ( unarchivedCredential. salt) , encoding: . utf8) , kSalt)
143+ XCTAssertEqual ( unarchivedCredential. timestamp, kTimestamp)
144+ XCTAssertEqual ( unarchivedCredential. displayName, kDisplayName)
145+ }
146+
147+ private func makeGameCenterCredential( ) throws -> GameCenterAuthCredential {
148+ let signature = try XCTUnwrap ( kSignature. data ( using: . utf8) )
149+ let salt = try XCTUnwrap ( kSalt. data ( using: . utf8) )
150+ return GameCenterAuthCredential ( withPlayerID: kPlayerID,
151+ teamPlayerID: kTeamPlayerID,
152+ gamePlayerID: kGamePlayerID,
153+ publicKeyURL: try XCTUnwrap (
154+ URL ( string: kPublicKeyURL)
155+ ) ,
156+ signature: signature,
157+ salt: salt,
158+ timestamp: kTimestamp,
159+ displayName: kDisplayName)
160+ }
161+ #endif
122162}
0 commit comments