コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }