Example #1
0
        public async Task GetAccessToken_WithTokenResponse_ReturnsToken()
        {
            var account = new MsalAccount()
            {
                Name              = "Des",
                Username          = "******",
                AccountIdentifier = "123"
            };

            var token = new MsalToken();
            var msal  = new Mock <IMsal>();

            msal.Setup(x => x.AcquireTokenAsync(It.IsAny <string[]>()))
            .ReturnsAsync(token);
            msal.Setup(x => x.GetAccountAsync())
            .ReturnsAsync(account);

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            var scopes = new string[0];
            var result = await provider.GetAccessTokenAsync(scopes);

            msal.Verify(x => x.AcquireTokenAsync(scopes));
            Assert.Same(token, result);
        }
Example #2
0
        public async Task SignOut_CallsMsalSignOut()
        {
            var msal = new Mock <IMsal>();

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            await provider.SignOutAsync();

            msal.Verify(x => x.SignOutAsync());
        }
Example #3
0
        public async Task GetAuthenticationState_WithNullAccount_ReturnsNotAuthenticated()
        {
            var msal = new Mock <IMsal>();

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            var state = await provider.GetAuthenticationStateAsync();

            Assert.False(state.User.Identity.IsAuthenticated);
        }
Example #4
0
        public async Task SignIn_WithScopes_CallsMsalSignIn()
        {
            var msal = new Mock <IMsal>();

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            var scopes = new string[0];
            await provider.SignInAsync(scopes);

            msal.Verify(x => x.SignInAsync(scopes));
        }
Example #5
0
        public async Task SignIn_WithoutSuccess_DoesntRaiseAuthenticationChanged()
        {
            var msal = new Mock <IMsal>();

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            bool eventRaised = false;

            provider.AuthenticationStateChanged += s =>
            {
                eventRaised = true;
            };

            await provider.SignInAsync();

            Assert.False(eventRaised);
        }
Example #6
0
        public async Task GetAuthenticationState_WithAccount_ReturnsAuthenticated()
        {
            var account = new MsalAccount()
            {
                Name              = "Des",
                Username          = "******",
                AccountIdentifier = "123"
            };

            var msal = new Mock <IMsal>();

            msal.Setup(x => x.GetAccountAsync())
            .Returns(Task.FromResult(account));

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            var state = await provider.GetAuthenticationStateAsync();

            Assert.True(state.User.Identity.IsAuthenticated);
            Assert.Equal(account.Username, state.User.Identity.Name);
        }
Example #7
0
        public async Task SignIn_WithSuccess_RaisesAuthenticationChanged()
        {
            var account = new MsalAccount()
            {
                Name              = "Des",
                Username          = "******",
                AccountIdentifier = "123"
            };

            var msal = new Mock <IMsal>();

            msal.SetupSequence(x => x.GetAccountAsync())
            // first call returns null
            .Returns(Task.FromResult <MsalAccount>(null))
            // second and third calls returns account
            .Returns(Task.FromResult(account))
            .Returns(Task.FromResult(account));

            var provider = new MsalAuthenticationStateProvider(msal.Object);

            bool eventRaised = false;
            Task <AuthenticationState> stateAwaiter = null;

            provider.AuthenticationStateChanged += s =>
            {
                eventRaised  = true;
                stateAwaiter = s;
            };

            await provider.SignInAsync();

            Assert.True(eventRaised);
            Assert.NotNull(stateAwaiter);
            var state = await stateAwaiter;

            Assert.Equal(account.Username, state.User.Identity.Name);
        }