public void UseCogniStreamerAuthentication_NullAsOptions_ShouldThrowException() { var app = new AppBuilder(); CogniStreamerAuthenticationOptions options = null; Assert.That(() => app.UseCogniStreamerAuthentication(options), Throws.ArgumentNullException); }
public void UseCogniStreamerAuthentication_PassingIAppBuilder_ReturnsSameInstanceOfIAppBuilder() { var app = new AppBuilder(); var options = new CogniStreamerAuthenticationOptions(); Assert.That(app, Is.EqualTo(app)); }
public void CogniStreamerAuthenticationProvider_DefaultOnAuthenticatedImplementation_ShouldNotThrowException() { var options = new CogniStreamerAuthenticationOptions(); var context = new CogniStreamerAuthenticatedContext(this.owinContextMock.Object, options, this.user, string.Empty, string.Empty); Assert.That(() => this.providerUnderTest.Authenticated(context), Throws.Nothing); }
public void UseCogniStreamerAuthentication_PassingIAppBuilderAndOptions_ShouldRegisterMiddleware() { var appMock = new Mock <IAppBuilder>(); var app = appMock.Object; var options = new CogniStreamerAuthenticationOptions(); app.UseCogniStreamerAuthentication(options); appMock.Verify(x => x.Use(typeof(CogniStreamerAuthenticationMiddleware), app, options), Times.Once); }
public void SetUp() { this.options = new CogniStreamerAuthenticationOptions() { AuthenticationMode = AuthenticationMode.Active, PortalBaseUrl = new Uri("https://portalbase.com/"), ClientId = "id", ClientSecret = "secret", }; }
public void Constructor_NewInstance_ShouldSetProperties() { var options = new CogniStreamerAuthenticationOptions(); Assert.That(options.BackchannelTimeout, Is.EqualTo(TimeSpan.FromMinutes(1))); Assert.That(options.Caption, Is.EqualTo("CogniStreamer")); Assert.That(options.AuthenticationMode, Is.EqualTo(AuthenticationMode.Passive)); Assert.That(options.Scope, Contains.Item("login")); Assert.That(options.Scope, Contains.Item("profile")); }
public void CogniStreamerAuthenticationProvider_CallAuthenticated_ShouldInvokeOnAuthenticated() { var callbacksMock = new Mock <IProviderCallbacks>(); var options = new CogniStreamerAuthenticationOptions(); var context = new CogniStreamerAuthenticatedContext(this.owinContextMock.Object, options, this.user, string.Empty, string.Empty); this.providerUnderTest.OnAuthenticated = callbacksMock.Object.OnAuthenticated; this.providerUnderTest.Authenticated(context); callbacksMock.Verify(x => x.OnAuthenticated(context), Times.Once); }
public void CogniStreamerAuthenticationProvider_CallApplyRedirect_ShouldInvokeOnApplyRedirect() { var callbacksMock = new Mock <IProviderCallbacks>(); var options = new CogniStreamerAuthenticationOptions(); var properties = new AuthenticationProperties(); var context = new CogniStreamerApplyRedirectContext(this.owinContextMock.Object, options, properties, "https://www.test.org"); this.providerUnderTest.OnApplyRedirect = callbacksMock.Object.OnApplyRedirect; this.providerUnderTest.ApplyRedirect(context); callbacksMock.Verify(x => x.OnApplyRedirect(context), Times.Once); }
public void CogniStreamerApplyRedirectContext_PassArguments_ShouldAssignProperties() { var owinContext = new Mock <IOwinContext>().Object; var options = new CogniStreamerAuthenticationOptions(); var properties = new AuthenticationProperties(); var context = new CogniStreamerApplyRedirectContext(owinContext, options, properties, "https://someredirecturi.com/test"); Assert.That(context.OwinContext, Is.EqualTo(owinContext)); Assert.That(context.Options, Is.EqualTo(options)); Assert.That(context.Properties, Is.EqualTo(properties)); Assert.That(context.RedirectUri, Is.EqualTo("https://someredirecturi.com/test")); }
public void CogniStreamerAuthenticationProvider_DefaultOnApplyRedirectImplementation_ShouldRedirectResponse() { var options = new CogniStreamerAuthenticationOptions(); var properties = new AuthenticationProperties(); var context = new CogniStreamerApplyRedirectContext(this.owinContextMock.Object, options, properties, "https://www.test.org"); var responseMock = new Mock <IOwinResponse>(); this.owinContextMock.SetupGet(x => x.Response).Returns(responseMock.Object); Assert.That(() => this.providerUnderTest.ApplyRedirect(context), Throws.Nothing); responseMock.Verify(x => x.Redirect("https://www.test.org"), Times.Once); }
public void CogniStreamerAuthenticatedContext_PassArgumentsToConstructor_ShouldSetProperties() { var owinContext = new Mock <IOwinContext>().Object; var accessToken = Guid.NewGuid().ToString("N"); var user = JObject.Parse("{ a: 12345 }"); var options = new CogniStreamerAuthenticationOptions(); var context = new CogniStreamerAuthenticatedContext(owinContext, options, user, accessToken, "1400"); Assert.That(context.OwinContext, Is.EqualTo(owinContext)); Assert.That(context.Options, Is.EqualTo(options)); Assert.That(context.User["a"].Value <int>(), Is.EqualTo(12345)); Assert.That(context.AccessToken, Is.EqualTo(accessToken)); Assert.That(context.ExpiresIn, Is.EqualTo(TimeSpan.FromSeconds(1400))); }
private TestServer CreateTestServer(CogniStreamerAuthenticationOptions options) { return(TestServer.Create(app => { app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationMode = AuthenticationMode.Active, CookieSecure = CookieSecureOption.SameAsRequest, CookieHttpOnly = true, CookieName = "AUTH" }); options.SignInAsAuthenticationType = CookieAuthenticationDefaults.AuthenticationType; app.UseCogniStreamerAuthentication(options); app.Use(async(ctx, next) => { if (ctx.Request.Path.Equals(new PathString("/found"))) { ctx.Response.StatusCode = 200; } else if (ctx.Request.Path.Equals(new PathString("/private"))) { var identity = ctx.Authentication?.User?.Identity as ClaimsIdentity; if (identity != null && identity.IsAuthenticated) { ctx.Response.StatusCode = 200; ctx.Response.ContentType = "application/json"; using (var writer = new StreamWriter(ctx.Response.Body)) { var claims = identity.Claims.ToDictionary(c => c.Type, c => c.Value); writer.Write(JsonConvert.SerializeObject(claims)); } } else { ctx.Response.StatusCode = 401; } } else if (ctx.Request.Path.Equals(new PathString("/signout"))) { ctx.Authentication.SignOut(CogniStreamerAuthenticationDefaults.AuthenticationType); } else { await next(); } }); })); }
public void UseCogniStreamerAuthentication_PassingIAppBuilderAndSeparateOptions_ShouldRegisterMiddlewareWithCorrectOptions() { CogniStreamerAuthenticationOptions options = null; var baseUrl = new Uri("https://mybaseurl.com"); var clientId = Guid.NewGuid().ToString("N"); var clientSecret = Guid.NewGuid().ToString("N"); var appMock = new Mock <IAppBuilder>(); appMock .Setup(x => x.Use(typeof(CogniStreamerAuthenticationMiddleware), It.IsAny <IAppBuilder>(), It.IsAny <CogniStreamerAuthenticationOptions>())) .Callback <Object, Object[]>((type, args) => options = (CogniStreamerAuthenticationOptions)args[1]); var app = appMock.Object; app.UseCogniStreamerAuthentication(baseUrl, clientId, clientSecret); Assert.That(options, Is.Not.Null); Assert.That(options.PortalBaseUrl, Is.EqualTo(baseUrl)); Assert.That(options.ClientId, Is.EqualTo(clientId)); Assert.That(options.ClientSecret, Is.EqualTo(clientSecret)); }
public void CogniStreamerAuthenticatedContext_PassUserObjectToConstructor_ShouldSetProperties() { var owinContext = new Mock <IOwinContext>().Object; var user = JObject.Parse(@"{ id: 'dcec99ad-28e1-4194-a4e0-f22148963cc5', username: '******', firstName: 'Johnny', lastName: 'Cash', email: '*****@*****.**' }"); var options = new CogniStreamerAuthenticationOptions(); var context = new CogniStreamerAuthenticatedContext(owinContext, options, user, string.Empty, "3600"); Assert.That(context.Id, Is.EqualTo(new Guid("dcec99ad-28e1-4194-a4e0-f22148963cc5"))); Assert.That(context.Username, Is.EqualTo("cashj")); Assert.That(context.FirstName, Is.EqualTo("Johnny")); Assert.That(context.LastName, Is.EqualTo("Cash")); Assert.That(context.Email, Is.EqualTo("*****@*****.**")); }
public static IAppBuilder UseCogniStreamerAuthentication(this IAppBuilder app, CogniStreamerAuthenticationOptions options) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } app.Use <CogniStreamerAuthenticationMiddleware>(app, options); return(app); }