Example #1
0
        /// <summary>
        /// Adds the manifest snapshot to a service session.
        /// </summary>
        /// <param name="sessionId">The session identifier.</param>
        /// <param name="manifest">The manifest.</param>
        /// <returns>
        /// Returns the added <see cref="T:NAME.Registry.Domain.ManifestSnapshot" />.
        /// </returns>
        /// <exception cref="NAME.Registry.Exceptions.EntityNotFoundException">Happens when the entity is not found.</exception>
        /// <exception cref="RepositoryEntityOperationFailedException">ServiceSession</exception>
        public ManifestSnapshotDTO AddManifestSnapshot(Guid sessionId, string manifest)
        {
            Guard.NotNull(sessionId, nameof(sessionId));
            Guard.NotNull(manifest, nameof(manifest));

            ServiceSession session = this.sessionRepository.GetById(sessionId);

            if (session == null)
            {
                this.logger.LogWarning($"Received a {nameof(this.AddManifestSnapshot)} request for a nonexistent Session.");
                throw new EntityNotFoundException();
            }

            this.logger.LogInformation($"Adding the manifest with to the session {session.Id}.");

            var now      = DateTime.UtcNow;
            var snapshot = new ManifestSnapshot()
            {
                Manifest = manifest, DateAndTime = now
            };

            session.LastPing = now;

            session.ManifestSnapshots.Add(snapshot);

            if (!this.sessionRepository.Update(session))
            {
                throw new RepositoryEntityOperationFailedException(session, $"Failed to update the {nameof(ServiceSession)}.");
            }

            return(this.mapper.Map <ManifestSnapshot, ManifestSnapshotDTO>(snapshot));
        }
Example #2
0
        public void GetSessionExistingId()
        {
            var loggerMock      = new Mock <ILogger <ServiceSessionManager> >();
            var sessionRepoMock = new Mock <IServiceSessionRepository>(MockBehavior.Strict);
            var mapperMock      = new Mock <IMapper>(MockBehavior.Strict);
            var sessionManager  = new ServiceSessionManager(loggerMock.Object, sessionRepoMock.Object, mapperMock.Object);

            var manifest         = "test_manifest";
            var dateAndTime      = DateTime.UtcNow;
            var manifestSnapshot = new ManifestSnapshot
            {
                Manifest    = manifest,
                DateAndTime = dateAndTime
            };

            var sessionId = Guid.NewGuid();

            var serviceSession = new ServiceSession()
            {
                Id = sessionId,
                ManifestSnapshots = new List <ManifestSnapshot>
                {
                    manifestSnapshot
                }
            };

            sessionRepoMock
            .Setup(r => r.GetById(sessionId))
            .Returns(serviceSession)
            .Verifiable();

            mapperMock
            .Setup(m => m.Map <ServiceSession, ServiceSessionDTO>(It.Is <ServiceSession>(s => s == serviceSession)))
            .Returns(new ServiceSessionDTO
            {
                Id = sessionId.ToString()
            }).Verifiable();

            mapperMock
            .Setup(m => m.Map <ManifestSnapshot, ManifestSnapshotDTO>(It.Is <ManifestSnapshot>(s => s == manifestSnapshot)))
            .Returns(new ManifestSnapshotDTO
            {
                Manifest    = manifest,
                DateAndTime = dateAndTime
            }).Verifiable();


            var result = sessionManager.GetById(sessionId);

            Assert.Equal(serviceSession.Id.ToString(), result.Id);
            Assert.Equal(manifestSnapshot.Manifest, result.LastManifestSnapshot.Manifest);
            Assert.Equal(manifestSnapshot.DateAndTime, result.LastManifestSnapshot.DateAndTime);
            sessionRepoMock.Verify();
            mapperMock.Verify();
        }