Пример #1
0
        public void SetUserDataUsingClaimsPrincipalFactorySetsUserDataFromFactory()
        {
            var userName     = $"John Smith";
            var userEmail    = $"*****@*****.**";
            var userIdentity = Guid.NewGuid().ToString();
            var principal    = new ClaimsPrincipal(
                new ClaimsIdentity(
                    new Claim[]
            {
                new Claim(ClaimTypes.Name, userName),
                new Claim(ClaimTypes.Email, userEmail),
                new Claim(ClaimTypes.NameIdentifier, userIdentity)
            },
                    "Mocked"));

            lock (Padlock)
            {
                var auditEvent = new AuditEvent();
                auditEvent.UserId.Should().BeNull();
                auditEvent.UserName.Should().BeNull();
                auditEvent.UserEmail.Should().BeNull();
                auditEvent.UserIdentity.Should().BeNull();

                AuditBehaviours.SetUserDataUsingClaimsPrincipalFactory(auditEvent, () => principal);

                auditEvent.UserId.Should().Be(userEmail);
                auditEvent.UserName.Should().Be(userName);
                auditEvent.UserEmail.Should().Be(userEmail);
                auditEvent.UserIdentity.Should().Be(userIdentity);
            }
        }
Пример #2
0
        public void SetUserDataUsingToFlowedUserSetsUserData()
        {
            var userId       = Guid.NewGuid().ToString();
            var userName     = $"JohnSmith_{userId}";
            var userEmail    = $"{userName}@email.com";
            var userIdentity = $"Fake|{userName}";

            var auditEvent = new AuditEvent();

            auditEvent.UserId.Should().BeNull();
            auditEvent.UserName.Should().BeNull();
            auditEvent.UserEmail.Should().BeNull();
            auditEvent.UserIdentity.Should().BeNull();

            lock (Padlock)
            {
                AuditContext.AddOrUpdatePersistentData("UserId", userId);
                AuditContext.AddOrUpdatePersistentData("UserName", userName);
                AuditContext.AddOrUpdatePersistentData("UserEmail", userEmail);
                AuditContext.AddOrUpdatePersistentData("UserIdentity", userIdentity);

                AuditBehaviours.SetUserDataToFlowedUser(auditEvent);

                auditEvent.UserId.Should().Be(userId);
                auditEvent.UserName.Should().Be(userName);
                auditEvent.UserEmail.Should().Be(userEmail);
            }
        }
Пример #3
0
        public void SetApplicationNameToLoggingApplicationNameSetsApplicationName()
        {
            var auditEvent = new AuditEvent();

            auditEvent.ApplicationName.Should().BeNull();

            AuditBehaviours.SetApplicationNameToLoggingApplicationName(auditEvent);

            auditEvent.ApplicationName.Should().Be(AuditContext.ApplicationName);
        }
Пример #4
0
        public void SetMachineNameToEnvironmentMachineNameSetsMachineName()
        {
            var auditEvent = new AuditEvent();

            auditEvent.MachineName.Should().BeNull();

            AuditBehaviours.SetMachineNameToEnvironmentMachineName(auditEvent);

            auditEvent.MachineName.Should().Be(Environment.MachineName);
        }
        /// <summary>
        /// Configures the Auditing framework to use the specified <see cref="ClaimsPrincipal"/> factory
        /// as the current Actor source each time auditing occurs.
        /// </summary>
        /// <param name="config">The <see cref="IAuditConfiguration" /> instance to configure.</param>
        /// <param name="factory">The factory.</param>
        /// <returns>The configured <see cref="IAuditConfiguration"/> instance.</returns>
        public static IAuditConfiguration UsingClaimsPrincipalFactory(this IAuditConfiguration config, Func <ClaimsPrincipal> factory)
        {
            Contract.Requires(config != null);
            Contract.Requires(factory != null);
            Guard.AgainstNullArgument(nameof(config), config);
            Guard.AgainstNullArgument(nameof(factory), factory);
            Contract.EndContractBlock();

            config.AddBehaviour(auditEvent => AuditBehaviours.SetUserDataUsingClaimsPrincipalFactory(auditEvent, factory));

            return(config);
        }
Пример #6
0
        public void SetCorrelationKeyToFlowedCorrelationKeyOrDefaultSetsCorrelationKeyWhenNoneAvailable()
        {
            lock (Padlock)
            {
                AuditContext.SetCorrelationKey(null);

                var auditEvent = new AuditEvent();
                auditEvent.CorrelationKey.Should().BeNull();

                AuditBehaviours.SetCorrelationKeyToFlowedCorrelationKeyOrDefault(auditEvent);

                auditEvent.CorrelationKey.Should().NotBeNullOrWhiteSpace();
            }
        }
Пример #7
0
        public void SetCorrelationKeyToFlowedCorrelationKeyOrDefaultSetsCorrelationKeyWhenAvailable()
        {
            lock (Padlock)
            {
                var expected = Guid.NewGuid().ToString();
                AuditContext.SetCorrelationKey(expected);

                var auditEvent = new AuditEvent();
                auditEvent.CorrelationKey.Should().BeNull();

                AuditBehaviours.SetCorrelationKeyToFlowedCorrelationKeyOrDefault(auditEvent);

                auditEvent.CorrelationKey.Should().Be(expected);
            }
        }