Esempio n. 1
0
        public void Constructor_WithAffected_SetsProperties()
        {
            var user = new User()
            {
                Username                = "******",
                EmailAddress            = "b",
                UnconfirmedEmailAddress = "c",
                Roles = new List <Role>()
                {
                    new Role()
                    {
                        Name = "d"
                    }
                },
                Credentials = new List <Credential>()
                {
                    new Credential(type: CredentialTypes.Password.V3, value: "e"),
                    new Credential(type: "f", value: "g")
                }
            };

            var record = new UserAuditRecord(user, AuditedUserAction.Login, new Credential(type: "h", value: "i"));

            Assert.Equal("a", record.Username);
            Assert.Equal("b", record.EmailAddress);
            Assert.Equal("c", record.UnconfirmedEmailAddress);
            Assert.Equal(1, record.Roles.Length);
            Assert.Equal("d", record.Roles[0]);
            Assert.Equal(1, record.Credentials.Length);
            Assert.Equal(CredentialTypes.Password.V3, record.Credentials[0].Type);
            Assert.Null(record.Credentials[0].Value);
            Assert.Equal(1, record.AffectedCredential.Length);
            Assert.Equal("h", record.AffectedCredential[0].Type);
            Assert.Null(record.AffectedCredential[0].Value);
        }
        public void Constructor_WithRevocationSource_SetsProperties()
        {
            var user = new User("a");
            var testRevocationSource = "TestRevocationSource";
            var record = new UserAuditRecord(user, AuditedUserAction.RevokeCredential, new Credential(type: "b", value: "c"), testRevocationSource);

            Assert.Single(record.AffectedCredential);
            Assert.Equal(testRevocationSource, record.AffectedCredential[0].RevocationSource);
            Assert.Equal("b", record.AffectedCredential[0].Type);
            Assert.Equal("c", record.AffectedCredential[0].Value);
        }
Esempio n. 3
0
        public void GetPath_ReturnsLowerCasedUserName()
        {
            var user = new User()
            {
                Username    = "******",
                Roles       = new List <Role>(),
                Credentials = new List <Credential>()
            };

            var record     = new UserAuditRecord(user, AuditedUserAction.Login);
            var actualPath = record.GetPath();

            Assert.Equal("a", actualPath);
        }
Esempio n. 4
0
        public void Constructor_WithAffectedPolicies_SetsProperties()
        {
            // Arrange.
            var user = new User()
            {
                Username                = "******",
                EmailAddress            = "b",
                UnconfirmedEmailAddress = "c",
                Roles = new List <Role>()
                {
                    new Role()
                    {
                        Name = "d"
                    }
                },
                Credentials = new List <Credential>()
                {
                    new Credential(type: CredentialTypes.Password.V3, value: "e"),
                    new Credential(type: "f", value: "g")
                }
            };

            // Act.
            var record = new UserAuditRecord(user, AuditedUserAction.SubscribeToPolicies,
                                             new UserSecurityPolicy[] { new UserSecurityPolicy("A", "B", "C") });

            // Assert.

            Assert.Equal("a", record.Username);
            Assert.Equal("b", record.EmailAddress);
            Assert.Equal("c", record.UnconfirmedEmailAddress);
            Assert.Single(record.Roles);
            Assert.Equal("d", record.Roles[0]);
            Assert.Single(record.Credentials);
            Assert.Equal(CredentialTypes.Password.V3, record.Credentials[0].Type);
            Assert.Null(record.Credentials[0].Value);
            Assert.Empty(record.AffectedCredential);
            Assert.Single(record.AffectedPolicies);
            Assert.Equal("A", record.AffectedPolicies[0].Name);
            Assert.Equal("B", record.AffectedPolicies[0].Subscription);
            Assert.Equal("C", record.AffectedPolicies[0].Value);
        }
Esempio n. 5
0
        public async Task SaveAuditRecordAsync_UserAuditRecord()
        {
            var user = new User()
            {
                CreatedUtc  = DateTime.Now,
                Credentials = new List <Credential>()
                {
                    new Credential(
                        CredentialTypes.Password.V3,
                        value: "a",
                        expiration: new TimeSpan(days: 1, hours: 2, minutes: 3, seconds: 4))
                },
                EmailAddress = "b",
                Roles        = new List <Role>()
                {
                    new Role()
                    {
                        Key = 5, Name = "c"
                    }
                },
                UnconfirmedEmailAddress = "d",
                Username = "******"
            };
            var auditRecord = new UserAuditRecord(user, AuditedUserAction.Login, user.Credentials.First());
            var service     = new TestAuditingService(async(string auditData, string resourceType, string filePath, string action, DateTime timestamp) =>
            {
                Assert.Equal("User", resourceType);
                Assert.Equal("e", filePath);
                Assert.Equal("login", action);
                Assert.InRange(timestamp, DateTime.UtcNow.AddMinutes(-1), DateTime.UtcNow.AddMinutes(1));

                var jObject = JObject.Parse(auditData);

                var record = jObject["Record"];

                Assert.Equal("e", record["Username"].Value <string>());
                Assert.Equal("b", record["EmailAddress"].Value <string>());
                Assert.Equal("d", record["UnconfirmedEmailAddress"].Value <string>());
                Assert.Equal("c", record["Roles"].ToObject <IList <string> >().Single());

                var credentials = record["Credentials"];
                var credential  = credentials.AsEnumerable().Single();

                Assert.Equal(0, credential["Key"].Value <int>());
                Assert.Equal(CredentialTypes.Password.V3, credential["Type"].Value <string>());
                Assert.Equal(JTokenType.Null, credential["Value"].Type);
                Assert.Equal(JTokenType.Null, credential["Description"].Type);
                Assert.False(credential["Scopes"].ToObject <IList <object> >().Any());
                Assert.Equal(JTokenType.Null, credential["Identity"].Type);
                Assert.Equal(DateTime.MinValue, credential["Created"].Value <DateTime>());
                Assert.Equal(user.Credentials.First().Expires.Value, credential["Expires"].Value <DateTime>());
                Assert.Equal(JTokenType.Null, credential["LastUsed"].Type);

                var affectedCredential = record["AffectedCredential"].AsJEnumerable().Single();

                Assert.Equal(0, affectedCredential["Key"].Value <int>());
                Assert.Equal(CredentialTypes.Password.V3, affectedCredential["Type"].Value <string>());
                Assert.Equal(JTokenType.Null, affectedCredential["Value"].Type);
                Assert.Equal(JTokenType.Null, affectedCredential["Description"].Type);
                Assert.Empty(affectedCredential["Scopes"].AsJEnumerable());
                Assert.Equal(JTokenType.Null, affectedCredential["Identity"].Type);
                Assert.Equal(DateTime.MinValue, affectedCredential["Created"].Value <DateTime>());
                Assert.Equal(user.Credentials.First().Expires.Value, affectedCredential["Expires"].Value <DateTime>());
                Assert.Equal(JTokenType.Null, affectedCredential["LastUsed"].Type);

                Assert.Equal(JTokenType.Null, record["AffectedEmailAddress"].Type);
                Assert.Equal("Login", record["Action"].Value <string>());

                await VerifyActor(jObject);

                return(null);
            });

            await service.SaveAuditRecordAsync(auditRecord);
        }