Esempio n. 1
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
 void GetActualFile(UUnitTestContext testContext, DataModels.GetFileMetadata fileData)
 {
     PlayFabHttp.SimpleGetCall(fileData.DownloadUrl,
                               PlayFabUUnitUtils.SimpleApiActionWrapper <byte[]>(testContext, TestFileContent),
                               error =>
     {
         testContext.Fail(error);
     });
 }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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");
            }
        }
Esempio n. 8
0
        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");
            }
        }
Esempio n. 9
0
        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);
                }
            });
        }
Esempio n. 10
0
        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);
                }
            });
        }
Esempio n. 12
0
 /// <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.");
 }