public void ConfigureServices(IServiceCollection services) { //services.AddRazorPages(); services.AddRouting(); services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; }) .AddCookie(options => { options.LoginPath = "/signin"; options.LogoutPath = "/signout"; }) .AddTwitch(options => { options.ClientId = SecretReader.GetValue("client_id"); options.ClientSecret = SecretReader.GetValue("client_secret"); options.CallbackPath = "/processlogin"; }); services.AddDbContext <AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).UseLazyLoadingProxies()); services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Latest); }
public async Task FetchesAnUncachedSecret() { var actual = await Target.GetSecretObjectAsync(SecretNameA); Assert.Same(SecretA.Object, actual); SecretReader.Verify(x => x.GetSecretObjectAsync(SecretNameA), Times.Once); }
public async Task DoesNothingWithEmptyCache() { await Target.RefreshAsync(CancellationToken.None); SecretReader.Verify(x => x.GetSecretAsync(It.IsAny <string>()), Times.Never); SecretReader.Verify(x => x.GetSecretObjectAsync(It.IsAny <string>()), Times.Never); }
public async Task FetchesAnUncachedSecret() { var actual = await Target.GetSecretAsync(SecretNameA); Assert.Same(SecretA.Object.Value, actual); SecretReader.Verify(x => x.GetSecretAsync(It.IsAny <string>()), Times.Never); SecretReader.Verify(x => x.GetSecretObjectAsync(SecretNameA), Times.Once); }
public async Task CachesLatestValue() { await Target.GetSecretAsync(SecretNameA); SecretReader.Setup(x => x.GetSecretObjectAsync(SecretNameA)).ReturnsAsync(() => SecretB.Object); await Target.RefreshAsync(CancellationToken.None); var secretObject = await Target.GetSecretObjectAsync(SecretNameA); Assert.Same(SecretB.Object, secretObject); }
public async Task DoesNotSwitchThreadIfAlreadyCached() { await Target.GetSecretObjectAsync(SecretNameA); SecretReader.Invocations.Clear(); var threadId = Thread.CurrentThread.ManagedThreadId; await Target.GetSecretObjectAsync(SecretNameA); Assert.Equal(threadId, Thread.CurrentThread.ManagedThreadId); SecretReader.Verify(x => x.GetSecretAsync(It.IsAny <string>()), Times.Never); SecretReader.Verify(x => x.GetSecretObjectAsync(It.IsAny <string>()), Times.Never); }
public async Task RefreshesAllNames() { await Target.GetSecretAsync(SecretNameA); await Target.GetSecretAsync(SecretNameB); SecretReader.Invocations.Clear(); await Target.RefreshAsync(CancellationToken.None); SecretReader.Verify(x => x.GetSecretAsync(It.IsAny <string>()), Times.Never); SecretReader.Verify(x => x.GetSecretObjectAsync(SecretNameA), Times.Once); SecretReader.Verify(x => x.GetSecretObjectAsync(SecretNameB), Times.Once); }
public async Task RespectsTheToken() { await Target.GetSecretAsync(SecretNameA); SecretReader.Invocations.Clear(); var cts = new CancellationTokenSource(); var token = cts.Token; cts.Cancel(); await Target.RefreshAsync(token); SecretReader.Verify(x => x.GetSecretAsync(It.IsAny <string>()), Times.Never); SecretReader.Verify(x => x.GetSecretObjectAsync(It.IsAny <string>()), Times.Never); }