@@ -29,7 +29,8 @@ var PlayFabApiTests = {
29
29
} ,
30
30
testConstants : {
31
31
TEST_KEY : "testCounter" ,
32
- TEST_STAT_NAME : "str"
32
+ TEST_STAT_NAME : "str" ,
33
+ CHAR_TEST_TYPE : "Fighter"
33
34
} ,
34
35
35
36
ManualExecution : function ( ) {
@@ -60,7 +61,7 @@ var PlayFabApiTests = {
60
61
if ( count > 5 )
61
62
return ;
62
63
63
- if ( PlayFab . _internalSettings . sessionTicket == null ) {
64
+ if ( ! PlayFabClientSDK . IsClientLoggedIn ( ) ) {
64
65
// Wait for login
65
66
setTimeout ( function ( ) { PlayFabApiTests . PostLoginTests ( count + 1 ) ; } , 200 ) ;
66
67
} else {
@@ -200,55 +201,22 @@ var PlayFabApiTests = {
200
201
LoginOrRegister : function ( assert ) {
201
202
var loginRequest = {
202
203
// Currently, you need to look up the correct format for this object in the API-docs:
203
- // https://api.playfab.com/Documentation/Client/method/LoginWithEmailAddress
204
+ // https://api.playfab.com/Documentation/Client/method/LoginWithCustomID
204
205
TitleId : PlayFab . settings . titleId ,
205
- Email : PlayFabApiTests . titleData . userEmail ,
206
- Password : PlayFabApiTests . titleData . userPassword
207
- } ;
208
- var registerRequest = {
209
- // Currently, you need to look up the correct format for this object in the API-docs:
210
- // https://api.playfab.com/Documentation/Client/method/RegisterPlayFabUser
211
- TitleId : PlayFab . settings . titleId ,
212
- Username : PlayFabApiTests . titleData . userName ,
213
- Email : PlayFabApiTests . titleData . userEmail ,
214
- Password : PlayFabApiTests . titleData . userPassword
206
+ CustomId : PlayFab . _internalSettings . buildIdentifier ,
207
+ CreateAccount : true
215
208
} ;
216
209
217
- // We don't know at this point how many async calls we'll make
218
- var loginDone = null ;
219
- var registerDone = null ;
220
-
221
- var mandatoryLoginCallback = function ( result , error ) {
222
- // Login MUST succeed at some point during this test
210
+ var loginDone = assert . async ( ) ;
211
+ var loginCallback = function ( result , error ) {
223
212
PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing Valid login result" ) ;
224
- assert . ok ( PlayFab . _internalSettings . sessionTicket != null , "Testing Login credentials cache" ) ;
225
- PlayFabApiTests . testData . playFabId = result . data . PlayFabId ; // Save the PlayFabId, it will be used in other tests
213
+ assert . ok ( PlayFabClientSDK . IsClientLoggedIn ( ) , "Testing Login credentials cache" ) ;
214
+ if ( result != null )
215
+ PlayFabApiTests . testData . playFabId = result . data . PlayFabId ; // Save the PlayFabId, it will be used in other tests
226
216
loginDone ( ) ;
227
217
} ;
228
- var registerCallback = function ( result , error ) {
229
- // Second login MUST succeed
230
- PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing Registration result" ) ;
231
-
232
- // Log in again, this time with the newly registered account
233
- loginDone = assert . async ( ) ;
234
- PlayFabClientSDK . LoginWithEmailAddress ( loginRequest , PlayFabApiTests . CallbackWrapper ( "mandatoryLoginCallback" , mandatoryLoginCallback , assert ) ) ;
235
- registerDone ( ) ;
236
- } ;
237
- var optionalLoginCallback = function ( result , error ) {
238
- // First login falls back upon registration if login failed
239
- if ( result == null ) {
240
- // Register the character and try again
241
- registerDone = assert . async ( ) ;
242
- PlayFabClientSDK . RegisterPlayFabUser ( registerRequest , PlayFabApiTests . CallbackWrapper ( "registerCallback" , registerCallback , assert ) ) ;
243
- loginDone ( ) ;
244
- }
245
- else {
246
- // Confirm the successful login
247
- mandatoryLoginCallback ( result , error ) ;
248
- }
249
- } ;
250
- loginDone = assert . async ( ) ;
251
- PlayFabClientSDK . LoginWithEmailAddress ( loginRequest , PlayFabApiTests . CallbackWrapper ( "optionalLoginCallback" , optionalLoginCallback , assert ) ) ;
218
+
219
+ PlayFabClientSDK . LoginWithCustomID ( loginRequest , PlayFabApiTests . CallbackWrapper ( "loginCallback" , loginCallback , assert ) ) ;
252
220
} ,
253
221
254
222
/// <summary>
@@ -263,25 +231,25 @@ var PlayFabApiTests = {
263
231
var count = - 1 ;
264
232
var finishAdvertId = function ( ) {
265
233
count += 1 ;
266
- if ( count > 10 )
267
- assert . ok ( false , "The advertisingId was not submitted properly" ) ;
268
- else if ( PlayFab . settings . advertisingIdType === PlayFab . settings . AD_TYPE_ANDROID_ID + "_Successful" )
269
- loginDone ( ) ;
270
- else
234
+ if ( count <= 10 && PlayFab . settings . advertisingIdType !== PlayFab . settings . AD_TYPE_ANDROID_ID + "_Successful" ) {
271
235
setTimeout ( PlayFabApiTests . SimpleCallbackWrapper ( "finishAdvertId" , finishAdvertId , assert ) , 200 ) ;
236
+ } else {
237
+ assert . ok ( PlayFab . settings . advertisingIdType === PlayFab . settings . AD_TYPE_ANDROID_ID + "_Successful" , "Testing whether advertisingId submitted properly" ) ;
238
+ loginDone ( ) ;
239
+ }
272
240
} ;
273
241
var advertLoginCallback = function ( result , error ) {
274
242
PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing Advert-Login result" ) ;
275
243
setTimeout ( PlayFabApiTests . SimpleCallbackWrapper ( "finishAdvertId" , finishAdvertId , assert ) , 200 ) ;
276
244
} ;
277
245
var loginRequest = {
278
246
// Currently, you need to look up the correct format for this object in the API-docs:
279
- // https://api.playfab.com/Documentation/Client/method/LoginWithEmailAddress
247
+ // https://api.playfab.com/Documentation/Client/method/LoginWithCustomID
280
248
TitleId : PlayFab . settings . titleId ,
281
- Email : PlayFabApiTests . titleData . userEmail ,
282
- Password : PlayFabApiTests . titleData . userPassword
249
+ CustomId : PlayFab . _internalSettings . buildIdentifier ,
250
+ CreateAccount : true
283
251
} ;
284
- PlayFabClientSDK . LoginWithEmailAddress ( loginRequest , PlayFabApiTests . CallbackWrapper ( "advertLoginCallback" , advertLoginCallback , assert ) ) ;
252
+ PlayFabClientSDK . LoginWithCustomID ( loginRequest , PlayFabApiTests . CallbackWrapper ( "advertLoginCallback" , advertLoginCallback , assert ) ) ;
285
253
} ,
286
254
287
255
/// <summary>
@@ -323,9 +291,9 @@ var PlayFabApiTests = {
323
291
var getDataCallback1 = function ( result , error ) {
324
292
PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing GetUserData result" ) ;
325
293
assert . ok ( result . data . Data != null , "Testing GetUserData Data" ) ;
326
- assert . ok ( result . data . Data . hasOwnProperty ( PlayFabApiTests . testConstants . TEST_KEY ) , "Testing GetUserData DataKey" ) ;
327
294
328
- PlayFabApiTests . testData . testNumber = parseInt ( result . data . Data [ PlayFabApiTests . testConstants . TEST_KEY ] . Value , 10 ) ;
295
+ var hasData = result . data . Data . hasOwnProperty ( PlayFabApiTests . testConstants . TEST_KEY ) ;
296
+ PlayFabApiTests . testData . testNumber = ! hasData ? 1 : parseInt ( result . data . Data [ PlayFabApiTests . testConstants . TEST_KEY ] . Value , 10 ) ;
329
297
PlayFabApiTests . testData . testNumber = ( PlayFabApiTests . testData . testNumber + 1 ) % 100 ; // This test is about the expected value changing - but not testing more complicated issues like bounds
330
298
331
299
var updateDataRequest = {
@@ -375,9 +343,9 @@ var PlayFabApiTests = {
375
343
var getStatsCallback1 = function ( result , error ) {
376
344
PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing GetUserStats result" ) ;
377
345
assert . ok ( result . data . UserStatistics != null , "Testing GetUserData Stats" ) ;
378
- assert . ok ( result . data . UserStatistics . hasOwnProperty ( PlayFabApiTests . testConstants . TEST_STAT_NAME ) , "Testing GetUserData Stat-value" ) ;
379
346
380
- PlayFabApiTests . testData . testNumber = result . data . UserStatistics [ PlayFabApiTests . testConstants . TEST_STAT_NAME ] ;
347
+ var hasData = result . data . UserStatistics . hasOwnProperty ( PlayFabApiTests . testConstants . TEST_STAT_NAME ) ;
348
+ PlayFabApiTests . testData . testNumber = ! hasData ? 1 : result . data . UserStatistics [ PlayFabApiTests . testConstants . TEST_STAT_NAME ] ;
381
349
PlayFabApiTests . testData . testNumber = ( PlayFabApiTests . testData . testNumber + 1 ) % 100 ; // This test is about the expected value changing - but not testing more complicated issues like bounds
382
350
383
351
var updateStatsRequest = {
@@ -406,8 +374,8 @@ var PlayFabApiTests = {
406
374
// https://api.playfab.com/Documentation/Server/method/GrantCharacterToUser
407
375
TitleId : PlayFabApiTests . titleData . titleId ,
408
376
PlayFabId : PlayFabApiTests . testData . playFabId ,
409
- CharacterName : PlayFabApiTests . titleData . CHAR_NAME ,
410
- CharacterType : PlayFabApiTests . titleData . CHAR_TEST_TYPE
377
+ CharacterName : PlayFabApiTests . titleData . characterName ,
378
+ CharacterType : PlayFabApiTests . testConstants . CHAR_TEST_TYPE
411
379
} ;
412
380
413
381
// We don't know at this point how many async calls we'll make
@@ -431,12 +399,12 @@ var PlayFabApiTests = {
431
399
432
400
// Get chars again, this time with the newly granted character
433
401
getDone = assert . async ( ) ;
434
- PlayFabClientSDK . GetAllUsersCharacters ( getCharsRequest , PlayFabApiTests . CallbackWrapper ( "mandatoryGetCharsCallback" , mandatoryGetCharsCallback , assert ) ) ;
402
+ PlayFabClientSDK . GetAllUsersCharacters ( grantCharRequest , PlayFabApiTests . CallbackWrapper ( "mandatoryGetCharsCallback" , mandatoryGetCharsCallback , assert ) ) ;
435
403
grantDone ( ) ;
436
404
} ;
437
405
var optionalGetCharsCallback = function ( result , error ) {
438
406
// First get chars falls back upon grant-char if target character not present
439
- if ( result == null ) {
407
+ if ( result . data . Characters . length === 0 ) {
440
408
// Register the character and try again
441
409
grantDone = assert . async ( ) ;
442
410
PlayFabServerSDK . GrantCharacterToUser ( grantCharRequest , PlayFabApiTests . CallbackWrapper ( "grantCharCallback" , grantCharCallback , assert ) ) ;
@@ -520,45 +488,25 @@ var PlayFabApiTests = {
520
488
/// Test that CloudScript can be properly set up and invoked
521
489
/// </summary>
522
490
CloudScript : function ( assert ) {
523
- var urlDone = null ;
524
- var hwDone = null ;
491
+ var hwDone = assert . async ( ) ;
525
492
526
- if ( PlayFab . _internalSettings . logicServerUrl == null ) {
527
- var getCloudUrlRequest = { } ;
528
-
529
- var getCloudScriptUrlCallback = function ( result , error ) {
530
- PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing GetCloudUrl result" ) ;
531
-
532
- if ( PlayFab . _internalSettings . logicServerUrl != null )
533
- PlayFabApiTests . CloudScript ( assert ) ; // Recursively call this test to get the case below
534
- else
535
- assert . ok ( false , "GetCloudScriptUrl did not retrieve the logicServerUrl" ) ;
536
-
537
- urlDone ( ) ;
538
- } ;
539
-
540
- urlDone = assert . async ( ) ;
541
- PlayFabClientSDK . GetCloudScriptUrl ( getCloudUrlRequest , PlayFabApiTests . CallbackWrapper ( "getCloudScriptUrlCallback" , getCloudScriptUrlCallback , assert ) ) ;
542
- } else {
543
- var helloWorldRequest = {
544
- // Currently, you need to look up the correct format for this object in the API-docs:
545
- // https://api.playfab.com/Documentation/Client/method/RunCloudScript
546
- ActionId : "helloWorld"
547
- } ;
548
-
549
- var helloWorldCallback = function ( result , error ) {
550
- PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing HelloWorld result" ) ;
551
- if ( result != null ) {
552
- assert . ok ( result . data . Results != null , "Testing HelloWorld result" ) ;
553
- assert . ok ( result . data . Results . messageValue != null , "Testing HelloWorld result message" ) ;
554
- assert . equal ( result . data . Results . messageValue , "Hello " + PlayFabApiTests . testData . playFabId + "!" , "HelloWorld cloudscript result: " + result . data . Results . messageValue ) ;
555
- }
556
- hwDone ( ) ;
557
- } ;
558
-
559
- hwDone = assert . async ( ) ;
560
- PlayFabClientSDK . RunCloudScript ( helloWorldRequest , PlayFabApiTests . CallbackWrapper ( "helloWorldCallback" , helloWorldCallback , assert ) ) ;
561
- }
493
+ var helloWorldRequest = {
494
+ // Currently, you need to look up the correct format for this object in the API-docs:
495
+ // https://api.playfab.com/Documentation/Client/method/ExecuteCloudScript
496
+ FunctionName : "helloWorld"
497
+ } ;
498
+
499
+ var helloWorldCallback = function ( result , error ) {
500
+ PlayFabApiTests . VerifyNullError ( result , error , assert , "Testing HelloWorld result" ) ;
501
+ if ( result != null ) {
502
+ assert . ok ( result . data . FunctionResult != null , "Testing HelloWorld result" ) ;
503
+ assert . ok ( result . data . FunctionResult . messageValue != null , "Testing HelloWorld result message" ) ;
504
+ assert . equal ( result . data . FunctionResult . messageValue , "Hello " + PlayFabApiTests . testData . playFabId + "!" , "HelloWorld cloudscript result: " + result . data . FunctionResult . messageValue ) ;
505
+ }
506
+ hwDone ( ) ;
507
+ } ;
508
+
509
+ PlayFabClientSDK . ExecuteCloudScript ( helloWorldRequest , PlayFabApiTests . CallbackWrapper ( "helloWorldCallback" , helloWorldCallback , assert ) ) ;
562
510
} ,
563
511
564
512
/// <summary>
@@ -587,4 +535,59 @@ var PlayFabApiTests = {
587
535
} ,
588
536
} ;
589
537
538
+ // The test report that will ultimately be relayed back to Cloud Script when the suite finishes
539
+ var PfTestReport = [ {
540
+ name : PlayFab . _internalSettings . buildIdentifier ,
541
+ tests : 0 ,
542
+ failures : 0 ,
543
+ errors : 0 ,
544
+ skipped : 0 ,
545
+ time : 0.0 ,
546
+ timestamp : "" ,
547
+ testResults : [ ]
548
+ } ] ;
549
+
550
+ QUnit . begin ( function ( details ) {
551
+ PfTestReport [ 0 ] . timestamp = ( new Date ( ) ) . toISOString ( ) ;
552
+ } ) ;
553
+
554
+ QUnit . testDone ( function ( details ) {
555
+ PfTestReport [ 0 ] . tests += 1 ;
556
+ var isFail = details . failed > 0 || details . passed !== details . total ;
557
+ if ( isFail ) {
558
+ PfTestReport [ 0 ] . failures += 1 ;
559
+ PfTestReport [ 0 ] . testResults . push ( {
560
+ classname : PlayFab . _internalSettings . buildIdentifier ,
561
+ name : details . name ,
562
+ time : details . runtime / 1000.0 ,
563
+ message : "Test failure message" , // TODO: Can we get the real test message here?
564
+ failureText : "FAILED"
565
+ } ) ;
566
+ } else {
567
+ PfTestReport [ 0 ] . testResults . push ( {
568
+ classname : PlayFab . _internalSettings . buildIdentifier ,
569
+ name : details . name ,
570
+ time : details . runtime / 1000.0
571
+ } ) ;
572
+ }
573
+ } ) ;
574
+
575
+ // Register for all the QUnit hooks so we can track all the tests that are complete
576
+ QUnit . done ( function ( details ) {
577
+ PfTestReport [ 0 ] . time = details . runtime / 1000.0 ;
578
+
579
+ var saveResultsRequest = {
580
+ // Currently, you need to look up the correct format for this object in the API-docs:
581
+ // https://api.playfab.com/Documentation/Client/method/ExecuteCloudScript
582
+ FunctionName : "SaveTestData" ,
583
+ FunctionParameter : { customId : PlayFab . _internalSettings . buildIdentifier , testReport : PfTestReport }
584
+ } ;
585
+ if ( PlayFabClientSDK . IsClientLoggedIn ( ) ) {
586
+ PlayFabClientSDK . ExecuteCloudScript ( saveResultsRequest , null ) ;
587
+ console . log ( PlayFabApiTests . testData . playFabId , ", Test report saved to CloudScript: " , PlayFab . _internalSettings . buildIdentifier , "\n" , JSON . stringify ( PfTestReport , null , 4 ) ) ;
588
+ } else {
589
+ console . log ( PlayFabApiTests . testData . playFabId , ", Failed to save test report to CloudScript: " , PlayFab . _internalSettings . buildIdentifier , "\n" , JSON . stringify ( PfTestReport , null , 4 ) ) ;
590
+ }
591
+ } ) ;
592
+
590
593
PlayFabApiTests . ManualExecution ( ) ;
0 commit comments