コード例 #1
0
        public async Task UserSigninProviderError()
        // provider error
        {
            var user   = new XboxLiveUser();
            var result = new TokenRequestResult(null);

            result.ResponseStatus = WebTokenRequestStatus.ProviderError;
            result.ResponseError  = new WebProviderError(mockErrorcode, mockErrorMessage);

            // ProviderError will convert to exception
            try
            {
                var silentResult = await user.SignInSilentlyAsync();
            }
            catch (XboxException ex)
            {
                Assert.AreEqual(ex.HResult, mockErrorcode);
                Assert.IsFalse(string.IsNullOrEmpty(ex.Message));
                Assert.IsFalse(user.IsSignedIn);

                return;
            }

            Assert.Fail("No exception was thrown.");
        }
コード例 #2
0
        private Mock <AccountProvider> CreateMockAccountProvider(TokenRequestResult silentResult, TokenRequestResult uiResult)
        {
            var provider = new Mock <AccountProvider>();

            if (silentResult != null)
            {
                provider
                .Setup(o => o.GetTokenSilentlyAsync(It.IsAny <WebTokenRequest>()))
                .ReturnsAsync(silentResult);
            }

            if (uiResult != null)
            {
                provider
                .Setup(o => o.RequestTokenAsync(It.IsAny <WebTokenRequest>()))
                .Callback(() =>
                {
                    // Make sure it is called on the UI thread with a coreWindow.
                    // Calling API can only be called on UI thread.
                    var resourceContext = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView();
                })
                .ReturnsAsync(uiResult);
            }

            return(provider);
        }
コード例 #3
0
        public async Task UserSigninUIUserCancel()
        {
            var user   = new XboxLiveUser();
            var result = new TokenRequestResult(null);

            result.ResponseStatus = WebTokenRequestStatus.UserCancel;

            var signinResult = await user.SignInAsync();

            Assert.AreEqual(signinResult.Status, SignInStatus.UserCancel);
            Assert.IsFalse(user.IsSignedIn);
        }
コード例 #4
0
        public async Task UserSigninSilentlyUserInteractionRequired()
        {
            var user   = new XboxLiveUser();
            var result = new TokenRequestResult(null);

            result.ResponseStatus = WebTokenRequestStatus.UserInteractionRequired;

            var signinResult = await user.SignInSilentlyAsync();

            Assert.AreEqual(signinResult.Status, SignInStatus.UserInteractionRequired);
            Assert.IsFalse(user.IsSignedIn);
        }
コード例 #5
0
        public async Task UserSigninUIUserCancel()
        {
            var user   = new XboxLiveUser();
            var result = new TokenRequestResult(null);

            result.ResponseStatus = WebTokenRequestStatus.UserCancel;
            user.Impl.Provider    = CreateMockAccountProvider(null, result).Object;

            var signinResult = await user.SignInAsync();

            Assert.AreEqual(signinResult.Status, SignInStatus.UserCancel);
            Assert.IsFalse(user.IsSignedIn);
        }
コード例 #6
0
        public async Task UserSignOut()
        // provider error
        {
            var user = new XboxLiveUser();

            Assert.IsFalse(user.IsSignedIn);

            AutoResetEvent signoutEvent = new AutoResetEvent(false);

            XboxLiveUser.SignOutCompleted += ((Object o, SignOutCompletedEventArgs args) =>
            {
                Assert.AreEqual(args.User, user);
                signoutEvent.Set();
            });

            var successResponse = CreateSuccessTokenResponse();
            var errorResponse   = new TokenRequestResult(null);

            errorResponse.ResponseStatus = WebTokenRequestStatus.UserInteractionRequired;

            var provider = new Mock <AccountProvider>();

            provider
            .SetupSequence(o => o.GetTokenSilentlyAsync(It.IsAny <WebTokenRequest>()))
            .ReturnsAsync(successResponse)
            .ReturnsAsync(errorResponse);

            user.Impl.Provider = provider.Object;

            var silentResult = await user.SignInSilentlyAsync();

            Assert.AreEqual(silentResult.Status, SignInStatus.Success);
            Assert.IsTrue(user.IsSignedIn);

            try
            {
                var token = await user.GetTokenAndSignatureAsync("GET", "", "");
            }
            catch (XboxException ex)
            {
                Assert.IsFalse(string.IsNullOrEmpty(ex.Message));
                Assert.IsFalse(user.IsSignedIn);

                Assert.IsTrue(signoutEvent.WaitOne(100), "wait signout event time out");

                return;
            }

            Assert.Fail("No exception was thrown.");
        }
コード例 #7
0
        private TokenRequestResult CreateSuccessTokenResponse()
        {
            var result = new TokenRequestResult(null);

            result.ResponseStatus = WebTokenRequestStatus.Success;
            result.Token          = mockToken;
            result.WebAccountId   = mockWebAccountId;
            result.Properties     = new Dictionary <string, string>();
            result.Properties.Add("XboxUserId", mockXuid);
            result.Properties.Add("Gamertag", mockGamerTag);
            result.Properties.Add("AgeGroup", mockAgeGroup);
            result.Properties.Add("Environment", mockEnvironment);
            result.Properties.Add("Sandbox", mockSandbox);
            result.Properties.Add("Signature", mockSignature);
            result.Properties.Add("Privileges", mockPrivileges);

            return(result);
        }