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