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); }
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); }