public void LeaderBoard() { var clientRequest = new ClientModels.GetLeaderboardRequest(); clientRequest.MaxResultsCount = 3; clientRequest.StatisticName = TEST_STAT_NAME; var clientTask = PlayFabClientAPI.GetLeaderboardAsync(clientRequest); clientTask.Wait(); UUnitAssert.Null(clientTask.Result.Error, "Failed to get client leaderboard"); UUnitAssert.NotNull(clientTask.Result.Result, "Failed to get client leaderboard"); UUnitAssert.NotNull(clientTask.Result.Result.Leaderboard, "Failed to get client leaderboard"); UUnitAssert.True(clientTask.Result.Result.Leaderboard.Count > 0, "Leaderboard does not contain enough entries."); var serverRequest = new ServerModels.GetLeaderboardRequest(); serverRequest.MaxResultsCount = 3; serverRequest.StatisticName = TEST_STAT_NAME; var serverTask = PlayFabServerAPI.GetLeaderboardAsync(serverRequest); clientTask.Wait(); UUnitAssert.Null(serverTask.Result.Error, "Failed to get server leaderboard"); UUnitAssert.NotNull(serverTask.Result.Result, "Failed to get server leaderboard"); UUnitAssert.NotNull(serverTask.Result.Result.Leaderboard, "Failed to get server leaderboard"); UUnitAssert.True(serverTask.Result.Result.Leaderboard.Count > 0, "Leaderboard does not contain enough entries."); }
public void UserCharacter() { var request = new ServerModels.ListUsersCharactersRequest(); request.PlayFabId = playFabId; // Received from client upon login var getCharsTask = PlayFabServerAPI.GetAllUsersCharactersAsync(request); getCharsTask.Wait(); UUnitAssert.Null(getCharsTask.Result.Error, "Failed to GetChars"); UUnitAssert.NotNull(getCharsTask.Result.Result, "Failed to GetChars"); UUnitAssert.NotNull(getCharsTask.Result.Result.Characters, "Failed to GetChars"); ServerModels.CharacterResult targetCharacter = null; foreach (var eachCharacter in getCharsTask.Result.Result.Characters) { if (eachCharacter.CharacterName == CHAR_NAME) { targetCharacter = eachCharacter; } } if (targetCharacter == null) { // Create the targetCharacter since it doesn't exist var grantRequest = new ServerModels.GrantCharacterToUserRequest(); grantRequest.PlayFabId = playFabId; grantRequest.CharacterName = CHAR_NAME; grantRequest.CharacterType = CHAR_TEST_TYPE; var grantTask = PlayFabServerAPI.GrantCharacterToUserAsync(grantRequest); grantTask.Wait(); UUnitAssert.Null(grantTask.Result.Error, "Grant character failed"); UUnitAssert.NotNull(grantTask.Result.Result, "Grant character failed"); UUnitAssert.NotNull(grantTask.Result.Result.CharacterId, "Grant character failed"); // Attempt to get characters again getCharsTask = PlayFabServerAPI.GetAllUsersCharactersAsync(request); getCharsTask.Wait(); UUnitAssert.Null(getCharsTask.Result.Error, "Failed to GetChars"); UUnitAssert.NotNull(getCharsTask.Result.Result, "Failed to GetChars"); UUnitAssert.NotNull(getCharsTask.Result.Result.Characters, "Failed to GetChars"); foreach (var eachCharacter in getCharsTask.Result.Result.Characters) { if (eachCharacter.CharacterName == CHAR_NAME) { targetCharacter = eachCharacter; } } } // Save the requested character UUnitAssert.NotNull(targetCharacter, "The test character did not exist, and was not successfully created"); characterId = targetCharacter.CharacterId; }
public void AccountInfo() { ClientModels.GetAccountInfoRequest request = new ClientModels.GetAccountInfoRequest(); request.PlayFabId = playFabId; var task = PlayFabClientAPI.GetAccountInfoAsync(request); task.Wait(); UUnitAssert.Null(task.Result.Error, "Failed to get accountInfo"); UUnitAssert.NotNull(task.Result.Result, "Failed to get accountInfo"); UUnitAssert.NotNull(task.Result.Result.AccountInfo, "Failed to get accountInfo"); UUnitAssert.NotNull(task.Result.Result.AccountInfo.TitleInfo, "Failed to get accountInfo"); UUnitAssert.NotNull(task.Result.Result.AccountInfo.TitleInfo.Origination, "Failed to get Origination Enum"); UUnitAssert.True(Enum.IsDefined(typeof(ClientModels.UserOrigination), task.Result.Result.AccountInfo.TitleInfo.Origination.Value), "Origination Enum not valid"); }
public void UserDataApi() { string TEST_KEY = "testCounter"; ClientModels.UserDataRecord testCounter; int testCounterValueExpected, testCounterValueActual; var getRequest = new ClientModels.GetUserDataRequest(); var getDataTask1 = PlayFabClientAPI.GetUserDataAsync(getRequest); getDataTask1.Wait(); UUnitAssert.Null(getDataTask1.Result.Error, "UserData should have been retrieved from Api call"); UUnitAssert.NotNull(getDataTask1.Result.Result, "UserData should have been retrieved from Api call"); UUnitAssert.NotNull(getDataTask1.Result.Result.Data, "UserData should have been retrieved from Api call"); if (!getDataTask1.Result.Result.Data.TryGetValue(TEST_KEY, out testCounter)) { testCounter = new ClientModels.UserDataRecord(); testCounter.Value = "0"; } int.TryParse(testCounter.Value, out testCounterValueExpected); testCounterValueExpected = (testCounterValueExpected + 1) % 100; // This test is about the expected value changing - but not testing more complicated issues like bounds var updateRequest = new ClientModels.UpdateUserDataRequest(); updateRequest.Data = new Dictionary <string, string>(); updateRequest.Data[TEST_KEY] = testCounterValueExpected.ToString(); var updateTask = PlayFabClientAPI.UpdateUserDataAsync(updateRequest); updateTask.Wait(); // The update doesn't return anything interesting except versionID. It's better to just re-call GetUserData again below to verify the update UUnitAssert.Null(updateTask.Result.Error, "UpdateUserData call failed"); UUnitAssert.NotNull(updateTask.Result.Result, "UpdateUserData call failed"); getRequest = new ClientModels.GetUserDataRequest(); var getDataTask2 = PlayFabClientAPI.GetUserDataAsync(getRequest); getDataTask2.Wait(); UUnitAssert.Null(getDataTask2.Result.Error, "UserData should have been retrieved from Api call"); UUnitAssert.NotNull(getDataTask2.Result.Result, "UserData should have been retrieved from Api call"); UUnitAssert.NotNull(getDataTask2.Result.Result.Data, "UserData should have been retrieved from Api call"); getDataTask2.Result.Result.Data.TryGetValue(TEST_KEY, out testCounter); UUnitAssert.NotNull(testCounter, "The updated UserData was not found in the Api results"); int.TryParse(testCounter.Value, out testCounterValueActual); UUnitAssert.Equals(testCounterValueExpected, testCounterValueActual); var timeUpdated = testCounter.LastUpdated; var testMin = DateTime.UtcNow - TimeSpan.FromMinutes(5); var testMax = testMin + TimeSpan.FromMinutes(10); UUnitAssert.True(testMin <= timeUpdated && timeUpdated <= testMax); }
public void UserStatisticsApi() { int testStatExpected, testStatActual; var getRequest = new ClientModels.GetUserStatisticsRequest(); var getStatTask1 = PlayFabClientAPI.GetUserStatisticsAsync(getRequest); getStatTask1.Wait(); UUnitAssert.Null(getStatTask1.Result.Error, "UserStatistics should have been retrieved from Api call"); UUnitAssert.NotNull(getStatTask1.Result.Result, "UserStatistics should have been retrieved from Api call"); UUnitAssert.NotNull(getStatTask1.Result.Result.UserStatistics, "UserStatistics should have been retrieved from Api call"); if (!getStatTask1.Result.Result.UserStatistics.TryGetValue(TEST_STAT_NAME, out testStatExpected)) { testStatExpected = TEST_STAT_BASE; } testStatExpected = ((testStatExpected + 1) % TEST_STAT_BASE) + TEST_STAT_BASE; // This test is about the expected value changing (incrementing through from TEST_STAT_BASE to TEST_STAT_BASE * 2 - 1) var updateRequest = new ClientModels.UpdateUserStatisticsRequest(); updateRequest.UserStatistics = new Dictionary <string, int>(); updateRequest.UserStatistics[TEST_STAT_NAME] = testStatExpected; var updateTask = PlayFabClientAPI.UpdateUserStatisticsAsync(updateRequest); updateTask.Wait(); // The update doesn't return anything, so can't test anything other than failure // Test update result - no data returned, so error or no error, based on Title settings if (!TITLE_CAN_UPDATE_SETTINGS) { UUnitAssert.Null(updateTask.Result.Result, "UpdateStatistics should have failed"); UUnitAssert.NotNull(updateTask.Result.Error, "UpdateStatistics should have failed"); return; // The rest of this tests changing settings - Which we verified we cannot do } else // if (CAN_UPDATE_SETTINGS) { UUnitAssert.Null(updateTask.Result.Error, "UpdateStatistics call failed"); UUnitAssert.NotNull(updateTask.Result.Result, "UpdateStatistics call failed"); } getRequest = new ClientModels.GetUserStatisticsRequest(); var getStatTask2 = PlayFabClientAPI.GetUserStatisticsAsync(getRequest); getStatTask2.Wait(); UUnitAssert.Null(getStatTask2.Result.Error, "UserStatistics should have been retrieved from Api call"); UUnitAssert.NotNull(getStatTask2.Result.Result, "UserStatistics should have been retrieved from Api call"); UUnitAssert.NotNull(getStatTask2.Result.Result.UserStatistics, "UserStatistics should have been retrieved from Api call"); getStatTask2.Result.Result.UserStatistics.TryGetValue(TEST_STAT_NAME, out testStatActual); UUnitAssert.Equals(testStatExpected, testStatActual); }
public void InvalidLogin() { // If the setup failed to log in a user, we need to create one. var request = new ClientModels.LoginWithEmailAddressRequest(); request.TitleId = PlayFabSettings.TitleId; request.Email = USER_EMAIL; request.Password = USER_PASSWORD + "INVALID"; var task = PlayFabClientAPI.LoginWithEmailAddressAsync(request); task.Wait(); UUnitAssert.NotNull(task.Result); UUnitAssert.Null(task.Result.Result); UUnitAssert.NotNull(task.Result.Error); UUnitAssert.True(task.Result.Error.ErrorMessage.Contains("password")); }
public void LoginOrRegister() { if (!PlayFabClientAPI.IsClientLoggedIn()) // If we haven't already logged in... { var loginRequest = new ClientModels.LoginWithEmailAddressRequest(); loginRequest.Email = USER_EMAIL; loginRequest.Password = USER_PASSWORD; loginRequest.TitleId = PlayFabSettings.TitleId; var loginTask = PlayFabClientAPI.LoginWithEmailAddressAsync(loginRequest); loginTask.Wait(); if (loginTask.Result != null && loginTask.Result.Result != null) // If successful, track playFabId { playFabId = loginTask.Result.Result.PlayFabId; // Needed for subsequent tests } } if (PlayFabClientAPI.IsClientLoggedIn()) { return; // Success, already logged in } // If the setup failed to log in a user, we need to create one. var registerRequest = new ClientModels.RegisterPlayFabUserRequest(); registerRequest.TitleId = PlayFabSettings.TitleId; registerRequest.Username = USER_NAME; registerRequest.Email = USER_EMAIL; registerRequest.Password = USER_PASSWORD; var registerTask = PlayFabClientAPI.RegisterPlayFabUserAsync(registerRequest); registerTask.Wait(); UUnitAssert.NotNull(registerTask.Result); UUnitAssert.Null(registerTask.Result.Error); UUnitAssert.NotNull(registerTask.Result.Result); playFabId = registerTask.Result.Result.PlayFabId; // Needed for subsequent tests UUnitAssert.True(PlayFabClientAPI.IsClientLoggedIn(), "User login failed"); }
public void CloudScript() { if (string.IsNullOrEmpty(PlayFabSettings.GetLogicURL())) { var getUrlTask = PlayFabClientAPI.GetCloudScriptUrlAsync(new ClientModels.GetCloudScriptUrlRequest()); getUrlTask.Wait(); UUnitAssert.Null(getUrlTask.Result.Error, "Failed to get LogicServerURL"); UUnitAssert.NotNull(getUrlTask.Result.Result, "Failed to get LogicServerURL"); UUnitAssert.False(string.IsNullOrEmpty(getUrlTask.Result.Result.Url), "Failed to get LogicServerURL"); UUnitAssert.False(string.IsNullOrEmpty(PlayFabSettings.GetLogicURL()), "Failed to get LogicServerURL"); } var request = new ClientModels.RunCloudScriptRequest(); request.ActionId = "helloWorld"; var cloudTask = PlayFabClientAPI.RunCloudScriptAsync(request); cloudTask.Wait(); UUnitAssert.Null(cloudTask.Result.Error, "Failed to Execute CloudScript"); UUnitAssert.NotNull(cloudTask.Result.Result, "Failed to Execute CloudScript"); UUnitAssert.False(string.IsNullOrEmpty(cloudTask.Result.Result.ResultsEncoded), "Failed to Execute CloudScript"); // Get the helloWorld return message JObject jobj = cloudTask.Result.Result.Results as JObject; UUnitAssert.NotNull(jobj); JToken jtok; jobj.TryGetValue("messageValue", out jtok); UUnitAssert.NotNull(jtok); JValue jval = jtok as JValue; UUnitAssert.NotNull(jval); string actualMessage = jval.Value as string; UUnitAssert.Equals("Hello " + playFabId + "!", actualMessage); }