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); }
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); }
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); }
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); }