public void GetImageAsByteArray_WhenCannotReadNewImageFromCacheAndCanReadFromWebCam_ReturnImageFromWebCam(int userId, int cacheUpdaterUserId)
        {
            // Arrange
            const string userUtc = "some_UTC_value";

            _dateTimeProvider.DateTimeNow.Returns(new DateTime(2019, 05, 01, 15, 30, 30, 100));
            (int waitTimeMilliSec, string reason)valueTuple = (0, "");
            _imageFromCacheService.WaitBeforeGettingNextImage(Arg.Any <int>(), Arg.Any <DateTime>()).Returns(valueTuple);

            _imageFromCacheService.GetNewImageAsByteArray(Arg.Any <int>(), Arg.Any <DateTime>()).Returns((byte[])null);

            _cacheUpdater.Update(userId: cacheUpdaterUserId, lastUpdate: DateTime.MinValue);

            var imageFromWebCam = new Bitmap(1, 1);

            byte[] imageArrayFromWebCam = ImageHelper.ConvertImageToByteArray(imageFromWebCam);
            _imageFromWebCamService.GetImage(Arg.Any <string>()).Returns(imageFromWebCam);

            IImageProviderService imageProviderService = CreateValidImageProviderService();


            // Act
            bool canReadImageFromWebCam = imageProviderService.CanReadImageFromWebCam(userId, _dateTimeProvider.DateTimeNow);

            byte[] imageAsByteArray = imageProviderService.GetImageAsByteArray(userId, userUtc);

            // Assert
            Assert.That(canReadImageFromWebCam, Is.True);
            Assert.That(imageAsByteArray, Is.Not.Null);

            Assert.That(imageAsByteArray.Length, Is.EqualTo(imageArrayFromWebCam.Length));

            Assert.That(_cacheUpdater.LastUpdate, Is.EqualTo(_dateTimeProvider.DateTimeNow));
            Assert.That(_cacheUpdater.UserId, Is.EqualTo(userId));
        }
Esempio n. 2
0
        public HttpResponseMessage GetImage(string id)
        {
            byte[] imageByteArray = _imageProviderService.GetImageAsByteArray(UserId, id);

            if (imageByteArray == null)
            {
                return(null);
            }

            ImageFileWriter.SaveImageSnapshot(imageByteArray, DateTimeProviderInstance, _snapshotImagePath, Logger, UserId, UserIp);
            HttpResponseMessage response = CreateImageResponseMessage(imageByteArray);

            return(response);
        }