public async Task GetAspNetOnBehalfOfAsync_WithContext_SupportsNullUser()
        {
            var request = new Mock <HttpRequestBase>();
            var context = new Mock <HttpContextBase>();

            request.SetupGet(x => x.ServerVariables)
            .Returns(new NameValueCollection()
            {
                { "HTTP_X_FORWARDED_FOR", "1.2.3.4" }
            });
            context.Setup(x => x.Request)
            .Returns(request.Object);
            context.Setup(x => x.User)
            .Returns((IPrincipal)null);

            var actor = await AuditActor.GetAspNetOnBehalfOfAsync(context.Object);

            Assert.NotNull(actor);
            Assert.Null(actor.AuthenticationType);
            Assert.Equal("1.2.3.0", actor.MachineIP);
            Assert.Null(actor.MachineName);
            Assert.Null(actor.OnBehalfOf);
            Assert.InRange(actor.TimestampUtc, DateTime.UtcNow.AddMinutes(-1), DateTime.UtcNow.AddMinutes(1));
            Assert.Null(actor.UserName);
        }
        public async Task GetAspNetOnBehalfOfAsync_WithContext_ObfuscatesLastIpAddressOctet()
        {
            var request  = new Mock <HttpRequestBase>();
            var identity = new Mock <IIdentity>();
            var user     = new Mock <IPrincipal>();
            var context  = new Mock <HttpContextBase>();

            request.SetupGet(x => x.ServerVariables)
            .Returns(new NameValueCollection()
            {
                { "HTTP_X_FORWARDED_FOR", "1.2.3.4" }
            });
            identity.Setup(x => x.Name)
            .Returns("b");
            identity.Setup(x => x.AuthenticationType)
            .Returns("c");
            user.Setup(x => x.Identity)
            .Returns(identity.Object);
            context.Setup(x => x.Request)
            .Returns(request.Object);
            context.Setup(x => x.User)
            .Returns(user.Object);

            var actor = await AuditActor.GetAspNetOnBehalfOfAsync(context.Object);

            Assert.NotNull(actor);
            Assert.Equal("c", actor.AuthenticationType);
            Assert.Equal("1.2.3.0", actor.MachineIP);
            Assert.Null(actor.MachineName);
            Assert.Null(actor.OnBehalfOf);
            Assert.InRange(actor.TimestampUtc, DateTime.UtcNow.AddMinutes(-1), DateTime.UtcNow.AddMinutes(1));
            Assert.Equal("b", actor.UserName);
        }
예제 #3
0
        public async Task GetAspNetOnBehalfOfAsync_WithoutContext_ReturnsMachineActorNullHttpContext()
        {
            var actor = await AuditActor.GetAspNetOnBehalfOfAsync();

            var machineActor = await AuditActor.GetCurrentMachineActorAsync();

            Assert.Equal(machineActor.MachineName, actor.MachineName);
            Assert.Equal(machineActor.MachineIP, actor.MachineIP);
            Assert.Equal(machineActor.UserName, actor.UserName);
            Assert.Equal(machineActor.CredentialKey, actor.CredentialKey);
        }
        public async Task GetAspNetOnBehalfOfAsync_WithoutContext_ReturnsNullForNullHttpContext()
        {
            var actor = await AuditActor.GetAspNetOnBehalfOfAsync();

            Assert.Null(actor);
        }