示例#1
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);
            }
        }
示例#2
0
        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);
        }
示例#3
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);
        }
示例#4
0
 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);
 }
示例#5
0
 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");
 }
示例#6
0
 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);
 }
示例#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");
            }
        }
示例#8
0
        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);
        }
示例#11
0
        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);
            }
        }
示例#13
0
        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);
        }
示例#14
0
 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);
         }
     }
                          );
 }
示例#15
0
        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);
        }