Example #1
0
        /// <summary>
        /// Initializes a new instance of the CodeDesignPlus.EFCore.Test.Middleware.IdentityServiceTest
        /// </summary>
        public IdentityServiceTest()
        {
            this.authenticateUser = new AuthenticateUser <string>();

            this.claimsIdentity = new ClaimsOption()
            {
                Email  = "email",
                IdUser = "******",
                Role   = "role",
                User   = "******"
            };

            this.options = MEO.Options.Create(new EFCoreOption()
            {
                ClaimsIdentity = this.claimsIdentity
            });
        }
        /// <summary>
        /// Create the HttpContextAccessor mock
        /// </summary>
        /// <param name="context">Parameter Out - The HttpContext for the current request.</param>
        /// <param name="claimsIdentity"> Claims available to obtain user information</param>
        /// <returns>Returns an object of type HttpContextAccesor</returns>
        private IHttpContextAccessor GetHttpContextAccesor(out HttpContext context, ClaimsOption claimsIdentity)
        {
            context = new DefaultHttpContext
            {
                User = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
                {
                    new Claim(claimsIdentity.User, "TestUser"),
                    new Claim(claimsIdentity.Role, "admin"),
                    new Claim(claimsIdentity.IdUser, "1"),
                    new Claim(claimsIdentity.Email, "*****@*****.**"),
                }, "user-mock"))
            };

            var mockHttpContextAccessor = new Mock <IHttpContextAccessor>();

            mockHttpContextAccessor.Setup(x => x.HttpContext).Returns(context);

            return(mockHttpContextAccessor.Object);
        }
        public async Task InvokeAsync_UserAuthenticated_IAuthenticateUser()
        {
            // Arrange
            var authenticateUser = new AuthenticateUser <int>();

            var claimsIdentity = new ClaimsOption()
            {
                Email  = "email",
                IdUser = "******",
                Role   = "role",
                User   = "******"
            };

            var options = MEO.Options.Create(new EFCoreOption()
            {
                ClaimsIdentity = claimsIdentity
            });

            var httpContextAccessor = this.GetHttpContextAccesor(out HttpContext context, claimsIdentity);

            var identityService = new IdentityService <int>(options, httpContextAccessor, authenticateUser);

            var requestDelegate = Mock.Of <RequestDelegate>();

            var middleware = new IdentityServiceMiddleware <int>(requestDelegate);

            // Act
            await middleware.InvokeAsync(context, identityService);

            // Assert
            Assert.True(authenticateUser.IsAuthenticated);
            Assert.False(authenticateUser.IsApplication);
            Assert.Equal("TestUser", authenticateUser.Name);
            Assert.Equal("*****@*****.**", authenticateUser.Email);
            Assert.Equal(1, authenticateUser.IdUser);
        }