Ejemplo n.º 1
0
        public void TestFullConstructorWithValidValues()
        {
            // ARRANGE
            Guid paramId = Guid.NewGuid();
            const EAuditEvent paramAuditEvent      = EAuditEvent.OrganisationMaintenance;
            DateTime          paramTimeStamp       = DateTime.Now;
            const string      paramUsername        = "******";
            Guid paramCorrelationId                = Guid.NewGuid();
            IList <IAuditDetail> paramAuditDetails = new List <IAuditDetail>();

            // ACT
            IAuditHeaderWithAuditDetails auditHeaderWithAuditDetails = new AuditHeaderWithAuditDetails(
                id: paramId,
                auditEvent: paramAuditEvent,
                timeStamp: paramTimeStamp,
                username: paramUsername,
                correlationId: paramCorrelationId,
                auditDetails: paramAuditDetails);

            // ASSERT
            Assert.AreNotEqual(Guid.Empty, auditHeaderWithAuditDetails.Id);
            Assert.AreEqual(paramId, auditHeaderWithAuditDetails.Id);
            Assert.AreEqual(paramAuditEvent, auditHeaderWithAuditDetails.AuditEvent);
            Assert.AreEqual(paramTimeStamp, auditHeaderWithAuditDetails.TimeStamp);
            Assert.AreEqual(paramUsername, auditHeaderWithAuditDetails.Username);
            Assert.AreNotEqual(Guid.Empty, auditHeaderWithAuditDetails.CorrelationId);
            Assert.AreEqual(paramCorrelationId, auditHeaderWithAuditDetails.CorrelationId);
            Assert.AreSame(paramAuditDetails, auditHeaderWithAuditDetails.AuditDetails);
        }
Ejemplo n.º 2
0
        public void TestShortConstructorWithValidValues()
        {
            // ARRANGE
            const EAuditEvent paramAuditEvent = EAuditEvent.OrganisationMaintenance;
            const string      paramUsername   = "******";
            Guid paramCorrelationId           = Guid.NewGuid();

            // ACT
            IAuditHeaderWithAuditDetails auditHeaderWithAuditDetails = new AuditHeaderWithAuditDetails(
                auditEvent: paramAuditEvent,
                username: paramUsername,
                correlationId: paramCorrelationId);

            // ASSERT
            double seconds = (DateTime.Now - auditHeaderWithAuditDetails.TimeStamp).TotalSeconds;

            Assert.AreNotEqual(Guid.Empty, auditHeaderWithAuditDetails.Id);
            Assert.AreEqual(paramAuditEvent, auditHeaderWithAuditDetails.AuditEvent);
            Assert.IsTrue(seconds >= 0 && seconds <= 5);
            Assert.AreEqual(paramUsername, auditHeaderWithAuditDetails.Username);
            Assert.AreNotEqual(Guid.Empty, auditHeaderWithAuditDetails.CorrelationId);
            Assert.AreEqual(paramCorrelationId, auditHeaderWithAuditDetails.CorrelationId);
            Assert.IsNotNull(auditHeaderWithAuditDetails.AuditDetails);
            Assert.AreEqual(0, auditHeaderWithAuditDetails.AuditDetails.Count);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AuditHeaderWithAuditDetails"/> class.
        /// </summary>
        /// <param name="auditEvent">Audit Event.</param>
        /// <param name="username">Username.</param>
        /// <param name="correlationId">Correlation Id.</param>
        public AuditHeaderWithAuditDetails(
            EAuditEvent auditEvent,
            string username,
            Guid correlationId)
            : base(auditEvent, username, correlationId)
        {
            this.AuditDetails = new List <IAuditDetail>();

            Validate(this);
        }
Ejemplo n.º 4
0
 /// <inheritdoc />
 public Task CreateOrganisationAsync(
     IWho who,
     EAuditEvent auditEvent,
     IOrganisation organisation)
 {
     return(OrganisationHelper.CreateOrganisationAsync(
                logger: this.logger,
                data: this.data,
                who: who,
                auditEvent: auditEvent,
                organisation: organisation));
 }
Ejemplo n.º 5
0
        public void TestEmptyUsernameThrowsException()
        {
            // ARRANGE
            const EAuditEvent paramAuditEvent = EAuditEvent.OrganisationMaintenance;
            Guid paramCorrelationId           = Guid.NewGuid();

            // ACT
            _ = new AuditHeader(
                auditEvent: paramAuditEvent,
                username: string.Empty,
                correlationId: paramCorrelationId);
        }
Ejemplo n.º 6
0
        /// <inheritdoc />
        public Task CreateAsync(
            IWho who,
            EAuditEvent auditEvent,
            IOrganisation organisation)
        {
            if (who == null)
            {
                throw new ArgumentNullException(nameof(who));
            }

            if (organisation == null)
            {
                throw new ArgumentNullException(nameof(organisation));
            }

            return(CreateOrganisationInternalAsync());

            async Task CreateOrganisationInternalAsync()
            {
                this.logger.LogTrace(
                    "ENTRY {Method}(who, organisation) {@Who} {@Organisation}",
                    nameof(this.CreateAsync),
                    who,
                    organisation);

                try
                {
                    IAuditHeaderWithAuditDetails auditHeader = await this.data.BeginTransactionAsync(
                        who, auditEvent)
                                                               .ConfigureAwait(false);

                    await this.data.Organisation.CreateAsync(
                        who : who,
                        auditHeader : auditHeader,
                        organisation : organisation)
                    .ConfigureAwait(false);

                    await this.data.CommitTransactionAsync(who, auditHeader)
                    .ConfigureAwait(false);
                }
                catch (Exception)
                {
                    this.data.RollbackTransaction(who);
                    throw;
                }

                this.logger.LogTrace(
                    "EXIT {Method}(who) {@Who}",
                    nameof(this.CreateAsync),
                    who);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="AuditHeaderWithAuditDetails"/> class.
        /// </summary>
        /// <param name="id">Audit Header Id.</param>
        /// <param name="auditEvent">Audit Event.</param>
        /// <param name="timeStamp">Time Stamp.</param>
        /// <param name="auditDetails">Audit Details.</param>
        /// <param name="username">Username.</param>
        /// <param name="correlationId">Correlation Id.</param>
        public AuditHeaderWithAuditDetails(
            Guid id,
            EAuditEvent auditEvent,
            DateTime timeStamp,
            IList <IAuditDetail> auditDetails,
            string username,
            Guid correlationId)
            : base(id, auditEvent, timeStamp, username, correlationId)
        {
            this.AuditDetails = auditDetails;

            Validate(this);
        }
Ejemplo n.º 8
0
        public void TestLongUsernameThrowsException()
        {
            // ARRANGE
            const EAuditEvent paramAuditEvent = EAuditEvent.OrganisationMaintenance;
            string            paramUsername   = new string('x', 500);
            Guid paramCorrelationId           = Guid.NewGuid();

            // ACT
            _ = new AuditHeader(
                auditEvent: paramAuditEvent,
                username: paramUsername,
                correlationId: paramCorrelationId);
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AuditHeaderDto"/> class.
 /// </summary>
 /// <param name="id">Audit Header Id.</param>
 /// <param name="auditEvent">Audit Event.</param>
 /// <param name="timeStamp">Time Stamp.</param>
 /// <param name="auditDetails">Audit Details.</param>
 /// <param name="username">Username.</param>
 /// <param name="correlationId">Correlation Id.</param>
 public AuditHeaderDto(
     Guid id,
     EAuditEvent auditEvent,
     DateTime timeStamp,
     string username,
     Guid correlationId,
     IList <AuditDetailDto> auditDetails)
 {
     this.Id            = id;
     this.AuditEvent    = auditEvent;
     this.TimeStamp     = timeStamp;
     this.Username      = username;
     this.CorrelationId = correlationId;
     this.AuditDetails  = auditDetails;
 }
Ejemplo n.º 10
0
        public void TestEmptyAuditHeaderIdThrowsException()
        {
            // ARRANGE
            const EAuditEvent paramAuditEvent = EAuditEvent.OrganisationMaintenance;
            DateTime          paramTimeStamp  = DateTime.Now;
            const string      paramUsername   = "******";
            Guid paramCorrelationId           = Guid.NewGuid();

            // ACT
            _ = new AuditHeader(
                id: Guid.Empty,
                auditEvent: paramAuditEvent,
                timeStamp: paramTimeStamp,
                username: paramUsername,
                correlationId: paramCorrelationId);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AuditHeader"/> class.
        /// </summary>
        /// <param name="auditEvent">Audit Event.</param>
        /// <param name="username">Username.</param>
        /// <param name="correlationId">Correlation Id.</param>
        public AuditHeader(
            EAuditEvent auditEvent,
            string username,
            Guid correlationId)
        {
            this.Id            = Guid.NewGuid();
            this.AuditEvent    = auditEvent;
            this.TimeStamp     = DateTime.Now;
            this.Username      = username;
            this.CorrelationId = correlationId;

            if (this.GetType() == typeof(AuditHeader))
            {
                Validate(this);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AuditHeader"/> class.
        /// </summary>
        /// <param name="id">Audit Header Id.</param>
        /// <param name="auditEvent">Audit Event.</param>
        /// <param name="timeStamp">Time Stamp.</param>
        /// <param name="username">Username.</param>
        /// <param name="correlationId">Correlation Id.</param>
        public AuditHeader(
            Guid id,
            EAuditEvent auditEvent,
            DateTime timeStamp,
            string username,
            Guid correlationId)
        {
            this.Id            = id;
            this.AuditEvent    = auditEvent;
            this.TimeStamp     = timeStamp;
            this.Username      = username;
            this.CorrelationId = correlationId;

            if (this.GetType() == typeof(AuditHeader))
            {
                Validate(this);
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Creates the organisation asynchronous.
        /// </summary>
        /// <param name="logger">Logger.</param>
        /// <param name="data">Data Layer.</param>
        /// <param name="who">Who details.</param>
        /// <param name="auditEvent">Audit event.</param>
        /// <param name="organisation">Organisation to create.</param>
        /// <returns>NOTHING.</returns>
        internal static async Task CreateOrganisationAsync(
            ILogger <VirtualBridgeService> logger,
            IVirtualBridgeData data,
            IWho who,
            EAuditEvent auditEvent,
            IOrganisation organisation)
        {
            logger.LogTrace(
                "ENTRY {Method}(who, organisation) {@who} {@organisation}",
                nameof(CreateOrganisationAsync),
                who,
                organisation);

            try
            {
                IAuditHeaderWithAuditDetails auditHeader =
                    await data.BeginTransactionAsync(who, auditEvent)
                    .ConfigureAwait(false);

                await data.Organisation.CreateAsync(
                    who : who,
                    auditHeader : auditHeader,
                    organisation : organisation)
                .ConfigureAwait(false);

                await data.CommitTransactionAsync(who, auditHeader)
                .ConfigureAwait(false);
            }
            catch (Exception)
            {
                data.RollbackTransaction(who);
                throw;
            }

            logger.LogTrace(
                "EXIT {Method}(who) {@who}",
                nameof(CreateOrganisationAsync),
                who);
        }
Ejemplo n.º 14
0
        public void Test_Basic_Constructor()
        {
            // ARRANGE
            Guid paramId = Guid.NewGuid();
            const EAuditEvent paramAuditEvent        = EAuditEvent.OrganisationMaintenance;
            DateTime          paramTimeStamp         = DateTime.Now;
            const string      paramUsername          = "******";
            Guid paramCorrelationId                  = Guid.NewGuid();
            IList <AuditDetailDto> paramAuditDetails = new List <AuditDetailDto>
            {
                new AuditDetailDto(
                    id: Guid.NewGuid(),
                    auditHeaderId: paramId,
                    tableName: "TableName",
                    columnName: "ColumnName",
                    recordId: Guid.NewGuid(),
                    oldValue: "old value",
                    newValue: "new value",
                    databaseAction: EDatabaseAction.Update)
            };

            // ACT
            AuditHeaderDto auditHeaderDto = new AuditHeaderDto(
                id: paramId,
                auditEvent: paramAuditEvent,
                timeStamp: paramTimeStamp,
                username: paramUsername,
                correlationId: paramCorrelationId,
                auditDetails: paramAuditDetails);

            // ASSERT
            Assert.AreEqual(paramId, auditHeaderDto.Id);
            Assert.AreEqual(paramAuditEvent, auditHeaderDto.AuditEvent);
            Assert.AreEqual(paramTimeStamp, auditHeaderDto.TimeStamp);
            Assert.AreEqual(paramUsername, auditHeaderDto.Username);
            Assert.AreEqual(paramCorrelationId, auditHeaderDto.CorrelationId);
            Assert.AreSame(paramAuditDetails, auditHeaderDto.AuditDetails);
        }
Ejemplo n.º 15
0
        /// <inheritdoc />
        public Task <IAuditHeaderWithAuditDetails> BeginTransactionAsync(
            IWho who,
            EAuditEvent auditEvent)
        {
            if (who == null)
            {
                throw new ArgumentNullException(nameof(who));
            }

            return(BeginTransactionInternalAsync());

            async Task <IAuditHeaderWithAuditDetails> BeginTransactionInternalAsync()
            {
                this.logger.LogTrace(
                    "ENTRY {Method}(who, auditEvent) {@Who} {@AuditEvent}",
                    nameof(this.BeginTransactionAsync),
                    who,
                    auditEvent);

                await this.context.Database.BeginTransactionAsync()
                .ConfigureAwait(false);

                AuditHeaderWithAuditDetails auditHeader = new AuditHeaderWithAuditDetails(
                    auditEvent: auditEvent,
                    username: "******",
                    correlationId: who.CorrelationId);

                this.logger.LogTrace(
                    "EXIT {Method}(who, auditHeader) {@Who} {@AuditHeader}",
                    nameof(this.BeginTransactionAsync),
                    who,
                    auditHeader);

                return(auditHeader);
            }
        }