Ejemplo n.º 1
0
        public async Task TestGetImageBucketCanRetrieveBucket()
        {
            // arrange
            var key = new ImageBucketKey
            {
                Store  = "some-store",
                Bucket = Guid.NewGuid().ToString("n")
            };

            _dataStore.EnsureImageBucket(
                new ImageBucket
            {
                StoreBucket = key,
                ImageList   = new List <string> {
                    "one-profile-picture", "other-profile-picture"
                }
            });

            // act
            var(imageBucket, outcomeAction, error) = await _imageBucketRepository.GetImageBucket(key);

            // assert
            Assert.NotNull(imageBucket);
            Assert.Equal(RepositoryOutcomeAction.OkNone, outcomeAction);
            Assert.Null(error);
            Assert.Equal(key.Store, imageBucket.StoreBucket.Store);
            Assert.Equal(key.Bucket, imageBucket.StoreBucket.Bucket);
            Assert.Collection(imageBucket.ImageList,
                              _ => Assert.Equal("one-profile-picture", _),
                              _ => Assert.Equal("other-profile-picture", _));
        }
Ejemplo n.º 2
0
        public async Task TestNewImageBucketCreatesResult()
        {
            // arrange
            var key = new ImageBucketKey
            {
                Store = "some-store"
            };
            var imageBucket = new ImageBucket
            {
                StoreBucket = key,
                ImageList   = new List <string> {
                    "profile-picture-1", "profile-picture-2"
                }
            };

            // act
            var(newImageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket(imageBucket);

            // assert
            Assert.NotNull(newImageBucket);
            Assert.Equal(RepositoryOutcomeAction.OkCreated, outcomeAction);
            Assert.Null(error);
            Assert.Equal(key.Store, newImageBucket.StoreBucket.Store);
            Assert.NotNull(newImageBucket.StoreBucket.Bucket);
            Assert.Collection(newImageBucket.ImageList,
                              _ => Assert.Equal("profile-picture-1", _),
                              _ => Assert.Equal("profile-picture-2", _));
            Assert.True(
                _dataStore
                .TestImageBucket(_ =>
                                 _.StoreBucket.Store == newImageBucket.StoreBucket.Store &&
                                 _.StoreBucket.Bucket == newImageBucket.StoreBucket.Bucket));
        }
Ejemplo n.º 3
0
        public async Task TestUpdateImageBucketReturnsNullOnNonExistantImageBucket()
        {
            // arrange
            var key = new ImageBucketKey
            {
                Store  = "non-existant-store",
                Bucket = Guid.NewGuid().ToString("n")
            };

            var imageBucketToUpdate =
                new ImageBucket
            {
                StoreBucket = key,
                ImageList   = new List <string> {
                    "profile-picture-5", "profile-picture-6"
                }
            };

            _dataStore.EnsureImageBucketDoesNotExist(key);

            // act
            var(updatedImageBucket, outcomeAction, error) = await _imageBucketRepository.UpdateImageBucket(imageBucketToUpdate);

            // assert
            Assert.Null(updatedImageBucket);
            Assert.Equal(RepositoryOutcomeAction.NotFoundNone, outcomeAction);
            Assert.Null(error);
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> UpdateImage(string store, string bucket, string name, RawContent rawContent, CancellationToken cancellationToken = default(CancellationToken))
        {
            await _imageStore.UploadImageAsync(store, bucket, name, rawContent.ContentType, rawContent.Content, cancellationToken);

            var imageBucketKey = new ImageBucketKey {
                Store = store, Bucket = bucket
            };

            var(imageBucket, outcomeAction, error) = await _imageBucketRepository.GetImageBucket(imageBucketKey, cancellationToken);

            if (outcomeAction == RepositoryOutcomeAction.OkNone)
            {
                imageBucket.ImageList.Add(name);
                (imageBucket, outcomeAction, error) = await _imageBucketRepository.UpdateImageBucket(imageBucket, CancellationToken.None);
            }
            else
            {
                (imageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket(new ImageBucket { StoreBucket = imageBucketKey, ImageList = new List <string> {
                                                                                                                        name
                                                                                                                    } }, CancellationToken.None);
            }

            if (outcomeAction.Outcome != RepositoryOutcome.Ok)
            {
                return(this.StatusCode(500, error));
            }

            return(this.NoContent());
        }
Ejemplo n.º 5
0
        public async Task TestUpdateImageBucketUpdatesExitentImageBucket()
        {
            // arrange
            var key = new ImageBucketKey
            {
                Store  = "some-store",
                Bucket = Guid.NewGuid().ToString("n")
            };

            var imageBucketToUpdate =
                new ImageBucket
            {
                StoreBucket = key,
                ImageList   = new List <string> {
                    "profile-picture-3", "profile-picture-5"
                }
            };

            _dataStore.EnsureImageBucket(
                new ImageBucket
            {
                StoreBucket = key,
                ImageList   = new List <string> {
                    "profile-picture-3", "profile-picture-4"
                }
            });

            // act
            var(updatedImageBucket, outcomeAction, error) = await _imageBucketRepository.UpdateImageBucket(imageBucketToUpdate);

            // assert
            Assert.NotNull(updatedImageBucket);
            Assert.Equal(RepositoryOutcomeAction.OkUpdated, outcomeAction);
            Assert.Null(error);
            Assert.Equal(key.Store, updatedImageBucket.StoreBucket.Store);
            Assert.Equal(key.Bucket, updatedImageBucket.StoreBucket.Bucket);
            Assert.Collection(updatedImageBucket.ImageList,
                              _ => Assert.Equal("profile-picture-3", _),
                              _ => Assert.Equal("profile-picture-5", _));
            Assert.True(
                _dataStore
                .TestImageBucket(_ =>
                                 _.StoreBucket.Store == updatedImageBucket.StoreBucket.Store &&
                                 _.StoreBucket.Bucket == updatedImageBucket.StoreBucket.Bucket));
        }
Ejemplo n.º 6
0
        public async Task TestGetImageBucketReturnsNullOnNonExistantImageBucket()
        {
            // arrange
            var key = new ImageBucketKey
            {
                Store  = "non-existant-store",
                Bucket = Guid.NewGuid().ToString("n")
            };

            _dataStore.EnsureImageBucketDoesNotExist(key);

            // act
            var(imageBucket, outcomeAction, error) = await _imageBucketRepository.GetImageBucket(key);

            // assert
            Assert.Null(imageBucket);
            Assert.Equal(RepositoryOutcomeAction.NotFoundNone, outcomeAction);
            Assert.Null(error);
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> TestImage(string store, string bucket, string name, CancellationToken cancellationToken = default(CancellationToken))
        {
            var imageBucketKey = new ImageBucketKey {
                Store = store, Bucket = bucket
            };

            var(imageBucket, outcomeAction, error) = await _imageBucketRepository.GetImageBucket(imageBucketKey);

            if (outcomeAction.Outcome != RepositoryOutcome.Ok)
            {
                return(this.FromRepositoryOutcome(outcomeAction, error, imageBucket));
            }
            ;

            return
                ((imageBucket.ImageList ?? new List <string>()).Contains(name)
                    ? (IActionResult)this.Ok()
                    : this.NotFound());
        }
Ejemplo n.º 8
0
 public void EnsureImageBucketDoesNotExist(ImageBucketKey imageBucketKey)
 {
     _mongoDatabase.ImageBuckets().DeleteOne(_ => _.StoreBucket.Store == imageBucketKey.Store && _.StoreBucket.Bucket == imageBucketKey.Bucket);
 }
Ejemplo n.º 9
0
        public async Task <(ImageBucket imageBucket, RepositoryOutcomeAction outcomeAction, object error)> GetImageBucket(ImageBucketKey imageBucketKey, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (imageBucketKey == null)
            {
                throw new ArgumentNullException(nameof(imageBucketKey));
            }
            var imageBucket = await(await _mongoDatabase.ImageBuckets().FindAsync(_ => _.StoreBucket.Store == imageBucketKey.Store && _.StoreBucket.Bucket == imageBucketKey.Bucket, cancellationToken: cancellationToken)).SingleOrDefaultAsync(cancellationToken);

            return(imageBucket, imageBucket != null ? RepositoryOutcomeAction.OkNone : RepositoryOutcomeAction.NotFoundNone, null);
        }