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); }
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 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); } }
void GetActualFile(UUnitTestContext testContext, DataModels.GetFileMetadata fileData) { PlayFabHttp.SimpleGetCall(fileData.DownloadUrl, PlayFabUUnitUtils.SimpleApiActionWrapper <byte[]>(testContext, TestFileContent), error => { testContext.Fail(error); }); }
public void ParallelRequests(UUnitTestContext testContext) { var tasks = Enumerable.Range(0, 10) .Select(_ => clientApi.GetUserDataAsync(new GetUserDataRequest(), _, testTitleData.extraHeaders)) .Select(ThrowIfApiError); Task.WhenAll(tasks).ContinueWith(whenAll => { if (!whenAll.IsCanceled && !whenAll.IsFaulted) { testContext.EndTest(UUnitFinishState.PASSED, null); } else { testContext.Fail("Parallel Requests failed " + whenAll.Exception.Flatten().Message); } }); }
public void PfPush_JsonSerialization(UUnitTestContext testContext) { var tempJavaPkgObj = new AndroidJavaObject("com.playfab.unityplugin.GCM.PlayFabNotificationPackage"); var javaPkgClass = new AndroidJavaClass("com.playfab.unityplugin.GCM.PlayFabNotificationPackage"); var expectedPkgs = new[] { new PlayFabNotificationPackage("test message0", "test title1", 10), new PlayFabNotificationPackage("test message1", "test title2", 11), new PlayFabNotificationPackage("test message2", "test title3", 12), }; expectedPkgs[0].SetScheduleTime(DateTime.Now + TimeSpan.FromSeconds(10), ScheduleTypes.ScheduledLocal); expectedPkgs[1].SetScheduleTime(DateTime.UtcNow + TimeSpan.FromSeconds(10), ScheduleTypes.ScheduledUtc); expectedPkgs[2].SetScheduleTime(null, ScheduleTypes.None); for (var i = 0; i < expectedPkgs.Length; i++) { var expectedPkg = expectedPkgs[i]; expectedPkg.ToJava(ref tempJavaPkgObj); var firstJson = tempJavaPkgObj.Call <string>("toJson"); var javaPkgObj = javaPkgClass.CallStatic <AndroidJavaObject>("fromJson", firstJson); var secondJson = javaPkgObj.Call <string>("toJson"); testContext.StringEquals(firstJson, secondJson); PlayFabNotificationPackage actualPkg = null;; try { actualPkg = JsonWrapper.DeserializeObject <PlayFabNotificationPackage>(secondJson); } catch (Exception) { testContext.Fail("JSON PARSE FAILURE:\n1stJson: " + firstJson + "\n2ndJson:" + secondJson); } testContext.NotNull(actualPkg); testContext.StringEquals(expectedPkg.Message, actualPkg.Message, "Message mismatch " + i + ", " + expectedPkg.Message + ", " + actualPkg.Message + "\nExJson: " + secondJson + "\nAcJson:" + secondJson); testContext.StringEquals(expectedPkg.Title, actualPkg.Title, "Title mismatch " + i + ", " + expectedPkg.Title + ", " + actualPkg.Title + ", " + secondJson + ", " + secondJson); testContext.IntEquals(expectedPkg.Id, actualPkg.Id, "Id mismatch " + i + ", " + expectedPkg.Id + ", " + actualPkg.Id + ", " + secondJson + ", " + secondJson); testContext.ObjEquals(expectedPkg.ScheduleType, actualPkg.ScheduleType, "ScheduleType mismatch " + i + ", " + expectedPkg.ScheduleType + ", " + actualPkg.ScheduleType + ", " + secondJson + ", " + secondJson); testContext.DateTimeEquals(expectedPkg.ScheduleDate, actualPkg.ScheduleDate, TimeSpan.FromSeconds(1), "ScheduleDate mismatch " + i + ", " + expectedPkg.ScheduleDate + ", " + actualPkg.ScheduleDate + ", " + secondJson + ", " + secondJson); } testContext.EndTest(UUnitFinishState.PASSED, null); }
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"); } }
public void MultipleInstanceWithDifferentSettings(UUnitTestContext testContext) { PlayFabApiSettings settings = new PlayFabApiSettings(); settings.ProductionEnvironmentUrl = "https://test1.playfabapi.com"; settings.TitleId = "test1"; PlayFabApiSettings settings2 = new PlayFabApiSettings(); settings2.ProductionEnvironmentUrl = "https://test2.playfabapi.com"; settings2.TitleId = "test2"; PlayFabAuthenticationContext context = new PlayFabAuthenticationContext(); context.DeveloperSecretKey = "key1"; PlayFabAuthenticationContext context2 = new PlayFabAuthenticationContext(); context2.DeveloperSecretKey = "key2"; try { PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(settings, context); PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(settings2, context2); testContext.StringEquals("test1", serverInstance1.GetSettings().TitleId, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.StringEquals("https://test1.playfabapi.com", serverInstance1.GetSettings().ProductionEnvironmentUrl, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.StringEquals("key1", serverInstance1.GetAuthenticationContext().DeveloperSecretKey, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.StringEquals("test2", serverInstance2.GetSettings().TitleId, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.StringEquals("https://test2.playfabapi.com", serverInstance2.GetSettings().ProductionEnvironmentUrl, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.StringEquals("key2", serverInstance2.GetAuthenticationContext().DeveloperSecretKey, "MultipleInstanceWithDifferentSettings can not be completed"); testContext.EndTest(UUnitFinishState.PASSED, null); } catch (Exception) { testContext.Fail("Multi Intance Server api can not be created"); } }
public void AsyncApiCallWithMultipleUser(UUnitTestContext testContext) { if (authenticationContext1?.ClientSessionTicket == null || authenticationContext2?.ClientSessionTicket == null || authenticationContext3?.ClientSessionTicket == null) { testContext.Skip("To run this test MultipleLoginWithStaticMethods test should be passed and store authenticationContext values"); } var task1 = clientApi.GetUserDataAsync(new GetUserDataRequest() { AuthenticationContext = authenticationContext1 }, null, testTitleData.extraHeaders); var task2 = clientApi.GetUserDataAsync(new GetUserDataRequest() { AuthenticationContext = authenticationContext2 }, null, testTitleData.extraHeaders); var task3 = clientApi.GetUserDataAsync(new GetUserDataRequest() { AuthenticationContext = authenticationContext3 }, null, testTitleData.extraHeaders); var tasks = new List <Task>() { task1, task2, task3 }; Task.WhenAll(tasks).ContinueWith(whenAll => { if (!whenAll.IsCanceled && !whenAll.IsFaulted) { testContext.EndTest(UUnitFinishState.PASSED, null); } else { testContext.Fail("Async failed " + whenAll.Exception.Flatten().Message); } }); }
public void CreateMultipleServerInstance(UUnitTestContext testContext) { PlayFabApiSettings settings = new PlayFabApiSettings(); settings.TitleId = PlayFabSettings.TitleId; PlayFabAuthenticationContext context = new PlayFabAuthenticationContext(); context.DeveloperSecretKey = testTitleData.developerSecretKey; try { PlayFabServerInstanceAPI serverInstanceWithoutAnyParameter = new PlayFabServerInstanceAPI(); PlayFabServerInstanceAPI serverInstanceWithSettings = new PlayFabServerInstanceAPI(settings); PlayFabServerInstanceAPI serverInstanceWithContext = new PlayFabServerInstanceAPI(context); PlayFabServerInstanceAPI serverInstanceWithSameParameter = new PlayFabServerInstanceAPI(context); PlayFabServerInstanceAPI serverInstanceWithSettingsAndContext = new PlayFabServerInstanceAPI(settings, context); testContext.EndTest(UUnitFinishState.PASSED, null); } catch (Exception) { testContext.Fail("Multi Intance Server api can not be created"); } }
public void ParallelRequest(UUnitTestContext testContext) { List <Task> tasks = new List <Task>(); PlayFabApiSettings settings1 = new PlayFabApiSettings(); settings1.TitleId = testTitleData.titleId; settings1.DeveloperSecretKey = testTitleData.developerSecretKey; PlayFabApiSettings settings2 = new PlayFabApiSettings(); settings2.TitleId = testTitleData.titleId; settings2.DeveloperSecretKey = "GETERROR"; PlayFabApiSettings settings3 = new PlayFabApiSettings(); settings3.TitleId = testTitleData.titleId; settings3.DeveloperSecretKey = testTitleData.developerSecretKey; PlayFabApiSettings settings4 = new PlayFabApiSettings(); settings4.TitleId = testTitleData.titleId; settings4.DeveloperSecretKey = "TESTKEYERROR"; PlayFabApiSettings settings5 = new PlayFabApiSettings(); settings5.TitleId = testTitleData.titleId; settings5.DeveloperSecretKey = "123421"; PlayFabServerInstanceAPI serverInstance1 = new PlayFabServerInstanceAPI(settings1); tasks.Add(serverInstance1.GetAllSegmentsAsync(new GetAllSegmentsRequest())); PlayFabServerInstanceAPI serverInstance2 = new PlayFabServerInstanceAPI(settings2); tasks.Add(serverInstance2.GetAllSegmentsAsync(new GetAllSegmentsRequest())); PlayFabServerInstanceAPI serverInstance3 = new PlayFabServerInstanceAPI(settings3); tasks.Add(serverInstance3.GetAllSegmentsAsync(new GetAllSegmentsRequest())); PlayFabServerInstanceAPI serverInstance4 = new PlayFabServerInstanceAPI(settings4); tasks.Add(serverInstance4.GetAllSegmentsAsync(new GetAllSegmentsRequest())); PlayFabServerInstanceAPI serverInstance5 = new PlayFabServerInstanceAPI(settings5); tasks.Add(serverInstance5.GetAllSegmentsAsync(new GetAllSegmentsRequest())); Task.WhenAll(tasks).ContinueWith(whenAll => { if (!whenAll.IsCanceled && !whenAll.IsFaulted) { testContext.EndTest(UUnitFinishState.PASSED, null); } else { testContext.Fail("Parallel Requests failed " + whenAll.Exception.Flatten().Message); } }); }
/// <summary> /// During testing, this will be called every tick that a test is asynchronous. /// This is run every unity tick until testContext.EndTest() is called, or until the test times out. /// This is considered part of the active test. A failure or exception in this method will be considered a failure for the active test. /// </summary> public virtual void Tick(UUnitTestContext testContext) { testContext.Fail(GetType().Name + "." + testContext.Name + ": Async TestCase does not implement Tick(). To fix this error, implement \"" + GetType().Name + ".Tick()\" in your async test, or call testContext.EndTest() in your syncronous test."); }