public void AuditingACaseChangeForAnAttachmentCreatesAuditRequestCorrectly() { var newAttachment = new MockAttachment(); var request = AuditRequest .AsChangeTo(typeof(MockCase), "sysref123") .WithData(newAttachment, c => c.Id.ToString(CultureInfo.InvariantCulture)) .AsEvent("SaveAttachment") .WithDescription("Save Attachment"); request.OperationType.Should().Be(OperationType.Change); request.TargetType.Should().Be(typeof(MockCase).Name); request.TargetId.Should().Be("sysref123"); request.DataType.Should().Be(typeof(MockAttachment).FullName); request.DataId.Should().Be(newAttachment.Id.ToString(CultureInfo.InvariantCulture)); request.EventType.Should().Be("SaveAttachment"); request.Description.Should().Be("Save Attachment"); request.Timestamp.Should().BeCloseTo(DateTime.UtcNow); var auditEvent = request.AsAuditEvent(); Action act = () => auditEvent.EnsureValid(); act.Should().NotThrow(); }
public void AuditEventWithDataEncryptsAndDecryptsSuccessfully() { var mockCase = new MockCase(); var mockAttachment = new MockAttachment() { Filename = GetRandomFilename() }; var request = AuditRequest.AsChangeTo(mockCase, c => c.SysRef) .WithData(mockAttachment, a => a.Id.ToString(CultureInfo.InvariantCulture)) .AsEvent(nameof(this.AuditEventWithDataEncryptsAndDecryptsSuccessfully)); var auditEvent = new AuditEvent(request); var key = "IlgY+s8d2q+QVXNx3ULHaUmNmcjgKQGXZFvxysqF5mA="; var crypto = new MessageEncryption(); var encryptedMessage = crypto.EncryptMessageBody(auditEvent, key); var decryptedEvent = crypto.DecryptMessageBody <AuditEvent>(encryptedMessage, key); decryptedEvent.TargetType.Should().Be(typeof(MockCase).Name); decryptedEvent.TargetId.Should().Be(mockCase.SysRef); decryptedEvent.DataType.Should().Be(typeof(MockAttachment).FullName); decryptedEvent.DataId.Should().Be(mockAttachment.Id.ToString(CultureInfo.InvariantCulture)); Assert.IsFalse(object.ReferenceEquals(null, decryptedEvent.Data)); string dataAsJson = JsonConvert.SerializeObject(decryptedEvent.Data); string attachmentAsJson = JsonConvert.SerializeObject(mockAttachment); dataAsJson.Should().Be(attachmentAsJson); }
public void AuditEventWithNoDataEncryptsAndDecryptsSuccessfully() { var mockCase = new MockCase(); var mockAttachment = new MockAttachment() { Filename = GetRandomFilename() }; var request = AuditRequest.AsChangeTo(mockCase, c => c.SysRef) .WithNoData() .AsEvent(nameof(this.AuditEventWithNoDataEncryptsAndDecryptsSuccessfully)); var auditEvent = new AuditEvent(request); var key = "IlgY+s8d2q+QVXNx3ULHaUmNmcjgKQGXZFvxysqF5mA="; var crypto = new MessageEncryption(); var encryptedMessage = crypto.EncryptMessageBody(auditEvent, key); var decryptedEvent = crypto.DecryptMessageBody <AuditEvent>(encryptedMessage, key); decryptedEvent.TargetType.Should().Be(typeof(MockCase).Name); decryptedEvent.TargetId.Should().Be(mockCase.SysRef); decryptedEvent.DataType.Should().BeNull(); decryptedEvent.DataId.Should().BeNull(); Assert.IsTrue(object.ReferenceEquals(null, decryptedEvent.Data)); }
public void AuditEventConstructorBuildsAuditEventFromAuditRequestAsExpected() { var mockCase = new MockCase(); var mockAttachment = new MockAttachment(); var request = AuditRequest.AsChangeTo(mockCase, c => c.SysRef) .WithData(mockAttachment, a => a.Id.ToString(CultureInfo.InvariantCulture)) .AsEvent(nameof(this.AuditEventConstructorBuildsAuditEventFromAuditRequestAsExpected)) .WithDescription("Cool Stuff"); var auditEvent = new AuditEvent(request); auditEvent.OperationType.Should().Be(OperationType.Change); auditEvent.EventType.Should().Be(nameof(this.AuditEventConstructorBuildsAuditEventFromAuditRequestAsExpected)); auditEvent.TargetType.Should().Be(typeof(MockCase).Name); auditEvent.TargetId.Should().Be(mockCase.SysRef); auditEvent.DataType.Should().Be(typeof(MockAttachment).FullName); auditEvent.DataId.Should().Be(mockAttachment.Id.ToString(CultureInfo.InvariantCulture)); auditEvent.Description.Should().Be("Cool Stuff"); auditEvent.SessionId.Should().Be($"{typeof(MockCase).Name}: {mockCase.SysRef}"); auditEvent.Timestamp.Should().BeCloseTo(DateTime.UtcNow, 100); dynamic expectedData = mockAttachment; string serializedData = JsonConvert.SerializeObject(auditEvent.Data); string serializedExpectedData = JsonConvert.SerializeObject(expectedData); serializedData.Should().Be(serializedExpectedData); }