Example #1
0
        public void UseCogniStreamerAuthentication_NullAsOptions_ShouldThrowException()
        {
            var app = new AppBuilder();
            CogniStreamerAuthenticationOptions options = null;

            Assert.That(() => app.UseCogniStreamerAuthentication(options), Throws.ArgumentNullException);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
 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);
        }
Example #11
0
        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)));
        }
Example #12
0
 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();
             }
         });
     }));
 }
Example #13
0
        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));
        }
Example #14
0
        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("*****@*****.**"));
        }
Example #15
0
        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);
        }