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", _)); }
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)); }
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); }
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()); }
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)); }
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); }
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()); }
public void EnsureImageBucketDoesNotExist(ImageBucketKey imageBucketKey) { _mongoDatabase.ImageBuckets().DeleteOne(_ => _.StoreBucket.Store == imageBucketKey.Store && _.StoreBucket.Bucket == imageBucketKey.Bucket); }
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); }