public async Task SignInAsync_WithRedirect_CallsSignInRedirect()
        {
            var js         = new Mock <IJSRuntime>();
            var navigation = new TestNavigationManager();

            IMsalConfig config = new TestConfig()
            {
                LoginMode = LoginModes.Redirect
            };

            var configurator = new Mock <IConfigProvider <IMsalConfig> >();

            configurator
            .Setup(x => x.GetConfigurationAsync())
            .Returns(Task.FromResult(config));

            var msal   = new Msal(js.Object, navigation, configurator.Object);
            var scopes = new string[0];
            await msal.SignInAsync(scopes);

            js.Verify(j => j.InvokeAsync <object>("azuread.signInRedirect",
                                                  It.Is <object[]>(objs => objs[0] == scopes)));

            Assert.True(msal.IsInitialized);
        }
        public async Task AcquireTokenAsync_WithPopup_CallsAcquireTokenPopup()
        {
            var token = new MsalToken();

            var js = new Mock <IJSRuntime>();

            js.Setup(j => j.InvokeAsync <MsalToken>(It.IsAny <string>(),
                                                    It.IsAny <object[]>()))
            .Returns(new ValueTask <MsalToken>(Task.FromResult(token)));

            var navigation = new TestNavigationManager();

            IMsalConfig config = new TestConfig()
            {
                LoginMode = LoginModes.Popup
            };

            var configurator = new Mock <IConfigProvider <IMsalConfig> >();

            configurator
            .Setup(x => x.GetConfigurationAsync())
            .Returns(Task.FromResult(config));

            var msal   = new Msal(js.Object, navigation, configurator.Object);
            var scopes = new string[0];
            var result = await msal.AcquireTokenAsync(scopes);

            js.Verify(j => j.InvokeAsync <object>("azuread.acquireTokenPopup",
                                                  It.Is <object[]>(objs => objs[0] == scopes)));

            Assert.Same(token, result);

            Assert.True(msal.IsInitialized);
        }
        public async Task GetAccountAsync_CallsGetAccount_ReturnsAccount()
        {
            var account = new MsalAccount();

            var js = new Mock <IJSRuntime>();

            js.Setup(j => j.InvokeAsync <MsalAccount>(It.IsAny <string>(),
                                                      It.IsAny <object[]>()))
            .Returns(new ValueTask <MsalAccount>(Task.FromResult(account)));

            var navigation = new TestNavigationManager();

            IMsalConfig config       = new TestConfig();
            var         configurator = new Mock <IConfigProvider <IMsalConfig> >();

            configurator
            .Setup(x => x.GetConfigurationAsync())
            .Returns(Task.FromResult(config));

            var msal = new Msal(js.Object, navigation, configurator.Object);

            var result = await msal.GetAccountAsync();

            js.Verify(j => j.InvokeAsync <object>("azuread.getAccount", It.IsAny <object[]>()));

            Assert.Same(account, result);
            Assert.True(msal.IsInitialized);
        }
示例#4
0
        public async Task AddAzureActiveDirectory_WithUri_FetchesConfigFromUri()
        {
            var services = new ServiceCollection();

            var jsRuntime = new Mock <IJSRuntime>();

            services.AddTransient(sp => jsRuntime.Object);

            var config = new TestConfig();
            var json   =
                @"{
  ""Authority"":  ""https://myauthority.com/"",
  ""ClientId"":  ""12345""
}";

            var httpResponse = new HttpResponseMessage()
            {
                Content = new StringContent(json)
            };

            var httpMessageHandler = new Mock <HttpMessageHandler>();

            httpMessageHandler
            .Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>())
            .Returns(Task.FromResult(httpResponse));

            services.AddTransient(sp => new HttpClient(httpMessageHandler.Object));

            var navigationManager = new TestNavigationManager();

            services.AddTransient <NavigationManager>(sp => navigationManager);

            services.AddAzureActiveDirectory(new Uri("config/config.json", UriKind.Relative));

            var provider     = services.BuildServiceProvider();
            var configurator = provider.GetService <IConfigProvider <IMsalConfig> >();

            var result = await configurator.GetConfigurationAsync();

            Assert.Equal(config.ClientId, result.ClientId);
            Assert.Equal(config.Authority, result.Authority);
            Assert.Equal(config.LoginMode, result.LoginMode);
        }
        public async Task SignOutAsync_CallsSignOut()
        {
            var js         = new Mock <IJSRuntime>();
            var navigation = new TestNavigationManager();

            IMsalConfig config       = new TestConfig();
            var         configurator = new Mock <IConfigProvider <IMsalConfig> >();

            configurator
            .Setup(x => x.GetConfigurationAsync())
            .Returns(Task.FromResult(config));

            var msal = new Msal(js.Object, navigation, configurator.Object);

            await msal.SignOutAsync();

            js.Verify(j => j.InvokeAsync <object>("azuread.signOut", It.IsAny <object[]>()));

            Assert.True(msal.IsInitialized);
        }