public void CheckWithAuthContextAndWithoutAuthContext(UUnitTestContext testContext) { PlayFabSettings.DeveloperSecretKey = testTitleData.developerSecretKey; //IT will use static developer key - Should has no error PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(); var result = serverInstance1.GetAllSegmentsAsync(new GetAllSegmentsRequest()).Result; PlayFabAuthenticationContext context = new PlayFabAuthenticationContext(); context.DeveloperSecretKey = "WRONGKEYTOFAIL"; //IT will use context developer key - Should has error because of wrong key PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(context); var result2 = serverInstance2.GetAllSegmentsAsync(new GetAllSegmentsRequest()).Result; try { testContext.NotNull(result.Result, "Server Instance1 result is null"); testContext.IsNull(result.Error, "Server Instance1 result got error message : " + result.Error?.ErrorMessage ?? string.Empty); testContext.IsNull(result2.Result, "Server Instance2 result is not null"); testContext.NotNull(result2.Error, "Server Instance2 got no error message"); testContext.IntEquals(401, result2.Error.HttpCode, "Server Instance2 got wrong error"); testContext.EndTest(UUnitFinishState.PASSED, null); } catch (Exception ex) { testContext.Fail("CheckWithAuthContextAndWithoutAuthContext failed : " + ex.Message); } }
public void MultiplePlayerApiCall(UUnitTestContext testContext) { if (authenticationContext1?.ClientSessionTicket == null || authenticationContext2?.ClientSessionTicket == null) { testContext.Skip("To run this test MultipleLoginWithStaticMethods test should be passed and store authenticationContext values"); } var getPlayerProfileRequest = new GetPlayerProfileRequest() { AuthenticationContext = authenticationContext1, PlayFabId = authenticationContext1.PlayFabId }; var getPlayerProfileRequest2 = new GetPlayerProfileRequest() { AuthenticationContext = authenticationContext2, PlayFabId = authenticationContext2.PlayFabId }; var getPlayerProfileTask = clientApi.GetPlayerProfileAsync(getPlayerProfileRequest, null, testTitleData.extraHeaders).Result; var getPlayerProfileTask2 = clientApi.GetPlayerProfileAsync(getPlayerProfileRequest2, null, testTitleData.extraHeaders).Result; testContext.NotNull(getPlayerProfileTask.Result, "GetPlayerProfile Failed for getPlayerProfileRequest"); testContext.NotNull(getPlayerProfileTask2.Result, "GetPlayerProfile Failed for getPlayerProfileRequest2"); testContext.IsNull(getPlayerProfileTask.Error, "GetPlayerProfile error occured for getPlayerProfileRequest: " + getPlayerProfileTask.Error?.ErrorMessage ?? string.Empty); testContext.IsNull(getPlayerProfileTask2.Error, "GetPlayerProfile error occured for getPlayerProfileRequest2: " + getPlayerProfileTask2.Error?.ErrorMessage ?? string.Empty); testContext.EndTest(UUnitFinishState.PASSED, null); }
public void MultipleLoginWithStaticMethods(UUnitTestContext testContext) { // If the setup failed to log in a user, we need to create one. var loginRequest1 = new LoginWithCustomIDRequest { TitleId = PlayFabSettings.staticSettings.TitleId, CustomId = "test_SDK1", CreateAccount = true, }; var loginRequest2 = new LoginWithCustomIDRequest { TitleId = PlayFabSettings.staticSettings.TitleId, CustomId = "test_SDK2", CreateAccount = true, }; var loginRequest3 = new LoginWithCustomIDRequest { TitleId = PlayFabSettings.staticSettings.TitleId, CustomId = "test_SDK3", CreateAccount = true, }; var loginTask1 = clientApi.LoginWithCustomIDAsync(loginRequest1, null, testTitleData.extraHeaders).Result; var loginTask2 = clientApi.LoginWithCustomIDAsync(loginRequest2, null, testTitleData.extraHeaders).Result; var loginTask3 = clientApi.LoginWithCustomIDAsync(loginRequest3, null, testTitleData.extraHeaders).Result; testContext.NotNull(loginTask1.Result, "Login Result is null for loginRequest1"); testContext.NotNull(loginTask2.Result, "Login Result is null for loginRequest2"); testContext.NotNull(loginTask3.Result, "Login Result is null for loginRequest3"); testContext.IsNull(loginTask1.Error, "Login error occured for loginRequest1: " + loginTask1.Error?.ErrorMessage ?? string.Empty); testContext.IsNull(loginTask2.Error, "Login error occured for loginRequest2: " + loginTask2.Error?.ErrorMessage ?? string.Empty); testContext.IsNull(loginTask3.Error, "Login error occured for loginRequest3: " + loginTask3.Error?.ErrorMessage ?? string.Empty); testContext.NotNull(loginTask1.Result.AuthenticationContext, "AuthenticationContext is not set for loginRequest1,"); testContext.NotNull(loginTask2.Result.AuthenticationContext, "AuthenticationContext is not set for loginRequest2"); testContext.NotNull(loginTask3.Result.AuthenticationContext, "AuthenticationContext is not set for loginRequest3"); if (string.Equals(loginTask1.Result.AuthenticationContext.ClientSessionTicket, loginTask2.Result.AuthenticationContext.ClientSessionTicket)) { testContext.Fail("Multiple Login Failed AuthenticationContexts are same for task1 and task2: " + loginTask1.Result.AuthenticationContext.ClientSessionTicket); } if (string.Equals(loginTask2.Result.AuthenticationContext.ClientSessionTicket, loginTask3.Result.AuthenticationContext.ClientSessionTicket)) { testContext.Fail("Multiple Login Failed AuthenticationContexts are same for task2 and task3: " + loginTask2.Result.AuthenticationContext.ClientSessionTicket); } if (string.Equals(loginTask1.Result.AuthenticationContext.ClientSessionTicket, loginTask3.Result.AuthenticationContext.ClientSessionTicket)) { testContext.Fail("Multiple Login Failed AuthenticationContexts are same for task1 and task3: " + loginTask1.Result.AuthenticationContext.ClientSessionTicket); } authenticationContext1 = loginTask1.Result.AuthenticationContext; authenticationContext2 = loginTask2.Result.AuthenticationContext; authenticationContext3 = loginTask3.Result.AuthenticationContext; testContext.EndTest(UUnitFinishState.PASSED, null); }
private void InvalidLoginContinued(PlayFabResult <LoginResult> loginResult, UUnitTestContext testContext, string failMessage) { testContext.NotNull(loginResult, failMessage); testContext.IsNull(loginResult.Result, failMessage); testContext.NotNull(loginResult.Error, failMessage); testContext.True(loginResult.Error.ErrorMessage.Contains("password"), loginResult.Error.ErrorMessage + ", for: " + testTitleData.userEmail + ", on: " + PlayFabSettings.staticSettings.TitleId); }
private void CloudScriptErrorContinued(PlayFabResult <ClientModels.ExecuteCloudScriptResult> cloudResult, UUnitTestContext testContext, string failMessage) { // Get the JavascriptException result testContext.IsNull(cloudResult.Result.FunctionResult); testContext.NotNull(cloudResult.Result.Error); testContext.StringEquals(cloudResult.Result.Error.Error, "JavascriptException"); }
private void InvalidLoginContinued(PlayFabResult <LoginResult> loginResult, UUnitTestContext testContext, string failMessage) { testContext.NotNull(loginResult, failMessage); testContext.IsNull(loginResult.Result, failMessage); testContext.NotNull(loginResult.Error, failMessage); testContext.True(loginResult.Error.ErrorMessage.Contains("password"), loginResult.Error.ErrorMessage); }
public void ApiInstanceLogin(UUnitTestContext testContext) { PlayFabApiSettings settings = new PlayFabApiSettings(); settings.TitleId = PlayFabSettings.TitleId; PlayFabAuthenticationContext context = new PlayFabAuthenticationContext(); context.DeveloperSecretKey = testTitleData.developerSecretKey; var loginRequest1 = new LoginWithServerCustomIdRequest() { CreateAccount = true, ServerCustomId = "test_Instance1", AuthenticationContext = context }; var loginRequest2 = new LoginWithServerCustomIdRequest() { CreateAccount = true, ServerCustomId = "test_Instance2", AuthenticationContext = context }; try { PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(settings, context); PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(settings, context); var result1 = serverInstance1.LoginWithServerCustomIdAsync(loginRequest1, null, testTitleData.extraHeaders).Result; var result2 = serverInstance2.LoginWithServerCustomIdAsync(loginRequest2, null, testTitleData.extraHeaders).Result; testContext.NotNull(result1.Result, "serverInstace1 login failed"); testContext.NotNull(result2.Result, "serverInstance2 login failed"); testContext.IsNull(result1.Error, "serverInstance1 got error: " + result1.Error?.ErrorMessage ?? string.Empty); testContext.IsNull(result2.Error, "serverInstance2 got error: " + result2.Error?.ErrorMessage ?? string.Empty); testContext.EndTest(UUnitFinishState.PASSED, null); } catch (Exception) { testContext.Fail("Multi Intance Server api can not be created"); } }
private void InvalidRegistrationContinued(PlayFabResult <RegisterPlayFabUserResult> registerResult, UUnitTestContext testContext, string failMessage) { testContext.NotNull(registerResult, failMessage); testContext.IsNull(registerResult.Result, failMessage); testContext.NotNull(registerResult.Error, failMessage); var expectedEmailMsg = "email address is not valid."; var expectedPasswordMsg = "password must be between"; var fullReport = registerResult.Error.GenerateErrorReport(); testContext.True(fullReport.ToLower().Contains(expectedEmailMsg), "Expected an error about bad email address: " + fullReport); testContext.True(fullReport.ToLower().Contains(expectedPasswordMsg), "Expected an error about bad password: " + fullReport); }
public void ApiInstanceLogin(UUnitTestContext testContext) { var loginRequest1 = new LoginWithServerCustomIdRequest() { CreateAccount = true, ServerCustomId = "test_Instance1", AuthenticationContext = instanceContext }; var loginRequest2 = new LoginWithServerCustomIdRequest() { CreateAccount = true, ServerCustomId = "test_Instance2", AuthenticationContext = instanceContext }; PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(instanceSettings, instanceContext); PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(instanceSettings, instanceContext); PlayFabResult <ServerLoginResult> result1, result2; try { result1 = serverInstance1.LoginWithServerCustomIdAsync(loginRequest1, null, testTitleData.extraHeaders).Result; result2 = serverInstance2.LoginWithServerCustomIdAsync(loginRequest2, null, testTitleData.extraHeaders).Result; } catch (AggregateException e) { throw e.InnerException; } testContext.IsNull(result1?.Error, result1?.Error?.GenerateErrorReport()); testContext.IsNull(result2?.Error, result2?.Error?.GenerateErrorReport()); testContext.NotNull(result1.Result); testContext.NotNull(result2.Result); testContext.EndTest(UUnitFinishState.PASSED, null); }
public void CheckWithAuthContextAndWithoutAuthContext(UUnitTestContext testContext) { PlayFabSettings.staticSettings.TitleId = testTitleData.titleId; PlayFabSettings.staticSettings.DeveloperSecretKey = testTitleData.developerSecretKey; //IT will use static developer key - Should has no error PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(); //IT will use context developer key - Should has error because of wrong key PlayFabApiSettings settings2 = new PlayFabApiSettings(); settings2.TitleId = testTitleData.titleId; settings2.DeveloperSecretKey = "WRONGKEYTOFAIL"; PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(settings2); PlayFabResult <GetAllSegmentsResult> result1, result2; try { result1 = serverInstance1.GetAllSegmentsAsync(new GetAllSegmentsRequest()).Result; result2 = serverInstance2.GetAllSegmentsAsync(new GetAllSegmentsRequest()).Result; } catch (AggregateException e) { throw e.InnerException; } testContext.IsNull(result1.Error, result1?.Error?.GenerateErrorReport()); testContext.NotNull(result1.Result, "Server Instance1 result is null"); testContext.NotNull(result2.Error, result2?.Error?.GenerateErrorReport()); testContext.IsNull(result2.Result, result2?.Error?.GenerateErrorReport()); testContext.IntEquals(401, result2.Error.HttpCode, "Server Instance2 got wrong error"); testContext.EndTest(UUnitFinishState.PASSED, null); }
public void Test200Response(UUnitTestContext testContext) { mockHttpPlugin.AssignResponse(HttpStatusCode.OK, "{\"data\": {\"RSAPublicKey\": \"Test Result\"} }", null); // GetTitlePublicKey has no auth, and trivial input/output so it's pretty ideal for a fake API call var task = PlayFabClientAPI.GetTitlePublicKeyAsync(null); task.Wait(); testContext.IsNull(task.Result.Error); testContext.NotNull(task.Result.Result); testContext.StringEquals("Test Result", task.Result.Result.RSAPublicKey); testContext.EndTest(UUnitFinishState.PASSED, null); }
public async void TestForNotFoundWithImportantInfo(UUnitTestContext testContext) { var eReq = new AuthenticationModels.GetEntityTokenRequest(); eReq.Entity = new AuthenticationModels.EntityKey(); eReq.Entity.Type = "title"; eReq.Entity.Id = testTitleData.titleId; var multiApiSettings = new PlayFabApiSettings(); multiApiSettings.TitleId = testTitleData.titleId; multiApiSettings.DeveloperSecretKey = testTitleData.developerSecretKey; var authApi = new PlayFabAuthenticationInstanceAPI(multiApiSettings); var tokenTask = await authApi.GetEntityTokenAsync(eReq); testContext.IsNull(tokenTask.Error, "Failed to retrieve the Title Entity Token, check your playFabSettings.staticPlayer: " + PlayFabSettings.staticPlayer.EntityType); if (aliasId == "") { testContext.Fail("aliasId was blank, we will not get the expected failed NotFound response this test is asking for. Make sure testTitleData.json has a valid aliasId listed (check playfab multiplayer dashboard for your own valid aliasId)"); } MultiplayerModels.UpdateBuildAliasRequest updateBuildAliasRequest = new MultiplayerModels.UpdateBuildAliasRequest() { AliasId = aliasId, AliasName = "aliasName", AuthenticationContext = new PlayFab.PlayFabAuthenticationContext() { EntityToken = tokenTask.Result.EntityToken }, }; var multiplayerApi = new PlayFabMultiplayerInstanceAPI(multiApiSettings, updateBuildAliasRequest.AuthenticationContext); PlayFab.PlayFabResult <MultiplayerModels.BuildAliasDetailsResponse> res = await multiplayerApi.UpdateBuildAliasAsync(updateBuildAliasRequest); string response = PlayFab.PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).SerializeObject(res); if (response.Contains("MultiplayerServerNotFound") && res.Error.HttpCode == 404) { testContext.EndTest(UUnitFinishState.PASSED, null); } else { testContext.Fail("We called the Mutliplayer API expecting to not find anything, but we didn't detect this to be the error. Details: " + res.Error.GenerateErrorReport() + " and http code: " + res.Error.HttpCode); } }
public void NullableJson(UUnitTestContext testContext) { var testObj = new NullableTestClass(); var actualJson = JsonWrapper.SerializeObject(testObj, PlayFabUtil.ApiSerializerStrategy); var actualObj = JsonWrapper.DeserializeObject <NullableTestClass>(actualJson); testContext.IsNull(actualObj.IntField, "Nullable integer field does not serialize properly: " + testObj.IntField + ", from " + actualJson); testContext.IsNull(actualObj.IntProperty, "Nullable integer property does not serialize properly: " + testObj.IntProperty + ", from " + actualJson); testContext.IsNull(actualObj.TimeField, "Nullable struct field does not serialize properly: " + testObj.TimeField + ", from " + actualJson); testContext.IsNull(actualObj.TimeProperty, "Nullable struct property does not serialize properly: " + testObj.TimeProperty + ", from " + actualJson); testContext.IsNull(actualObj.EnumField, "Nullable enum field does not serialize properly: " + testObj.EnumField + ", from " + actualJson); testContext.IsNull(actualObj.EnumProperty, "Nullable enum property does not serialize properly: " + testObj.EnumProperty + ", from " + actualJson); testContext.EndTest(UUnitFinishState.PASSED, null); }
private static void ContinueWithContext <T>(Task <PlayFabResult <T> > srcTask, UUnitTestContext testContext, Action <PlayFabResult <T>, UUnitTestContext, string> continueAction, bool expectSuccess, string failMessage, bool endTest) where T : PlayFabResultCommon { srcTask.ContinueWith(task => { var failed = true; try { if (expectSuccess) { testContext.NotNull(task.Result, failMessage); testContext.IsNull(task.Result.Error, PlayFabUtil.GetErrorReport(task.Result.Error)); testContext.NotNull(task.Result.Result, failMessage); } if (continueAction != null) { continueAction.Invoke(task.Result, testContext, failMessage); } failed = false; } catch (UUnitSkipException uu) { // Silence the assert and ensure the test is marked as complete - The exception is just to halt the test process testContext.EndTest(UUnitFinishState.SKIPPED, uu.Message); } catch (UUnitException uu) { // Silence the assert and ensure the test is marked as complete - The exception is just to halt the test process testContext.EndTest(UUnitFinishState.FAILED, uu.Message + "\n" + uu.StackTrace); } catch (Exception e) { // Report this exception as an unhandled failure in the test testContext.EndTest(UUnitFinishState.FAILED, e.ToString()); } if (!failed && endTest) { testContext.EndTest(UUnitFinishState.PASSED, null); } } ); }
public void Test404Response(UUnitTestContext testContext) { var expectedError = new PlayFabError { HttpCode = (int)HttpStatusCode.NotFound, HttpStatus = "NotFound", Error = PlayFabErrorCode.ServiceUnavailable, ErrorMessage = "Test error result", }; mockHttpPlugin.AssignResponse(HttpStatusCode.NotFound, null, expectedError); // GetTitlePublicKey has no auth, and trivial input/output so it's pretty ideal for a fake API call var task = PlayFabClientAPI.GetTitlePublicKeyAsync(null); task.Wait(); testContext.IsNull(task.Result.Result); testContext.NotNull(task.Result.Error); testContext.IntEquals(expectedError.HttpCode, task.Result.Error.HttpCode); testContext.EndTest(UUnitFinishState.PASSED, null); }