public async Task Handle_HappyFlow() { // Arrange var note1 = await _wolkDbContext.CreateAndSaveNote(); var note2 = await _wolkDbContext.CreateAndSaveNote(); var file1 = await _wolkDbContext.CreateAndSaveAttachment(note1); var file2 = await _wolkDbContext.CreateAndSaveAttachment(note2); var file3 = await _wolkDbContext.CreateAndSaveAttachment(note1); var request = new GetAttachmentsQuery { NoteId = note1.Id }; // Act var result = (await _handler.Handle(request, CancellationToken.None)).ToArray(); // Assert Assert.AreEqual(2, result.Length); ShouldBeEqual(file1, result[0]); ShouldBeEqual(file3, result[1]); }
public async Task Handle_AttachmentNotFound_ShouldThrowNotFoundException() { // Arrange var attachment = await _wolkDbContext.CreateAndSaveAttachment(); var request = new CreateAttachmentAccessTokenCommand { AttachmentId = attachment.Id + 1 }; // Act / Assert await Assert.ThrowsExceptionAsync <NotFoundException>(() => _handler.Handle(request, CancellationToken.None)); }
public async Task GetAttachmentByAccessToken_HappyFlow() { // Arrange var attachment = await WolkDbContext.CreateAndSaveAttachment(); var accessToken = await WolkDbContext.CreateAndSaveAttachmentAccessToken(attachment); var token = accessToken.Token; var url = $"/api/note/1/attachments/{attachment.Id + 1}/accessTokens/{token}"; var request = new HttpRequestMessage(HttpMethod.Get, url); var jwt = await GetJwt(); request.AddJwtBearer(jwt); var path = Path.Combine(UploadsRootPath, attachment.InternalFilename); var uploadedFile = new byte[] { 3, 4, 1, 6, 12 }; EnsureFileExists(path, uploadedFile); // Act using var response = await HttpClient.SendAsync(request); // Assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var content = await response.Content.ReadAsByteArrayAsync(); Assert.IsTrue(uploadedFile.SequenceEqual(content)); }
public async Task GetAllAttachments_HappyFlow() { // Arrange var note1 = await WolkDbContext.CreateAndSaveNote(); var note2 = await WolkDbContext.CreateAndSaveNote(); var file1 = await WolkDbContext.CreateAndSaveAttachment(note1); var file2 = await WolkDbContext.CreateAndSaveAttachment(note2); var file3 = await WolkDbContext.CreateAndSaveAttachment(note1); var url = $"/api/note/{note1.Id}/attachments"; var request = new HttpRequestMessage(HttpMethod.Get, url); var token = await GetJwt(); request.AddJwtBearer(token); // Act using var response = await HttpClient.SendAsync(request); // Assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var content = await response.Content.ReadAsStringAsync(); var attachments = JsonConvert.DeserializeObject <AttachmentDto[]>(content); Assert.AreEqual(2, attachments.Length); ShouldBeEqual(file1, attachments[0]); ShouldBeEqual(file3, attachments[1]); }
public async Task GetAttachment_AttachmentNotFound_ShouldReturn404() { // Arrange var attachment = await WolkDbContext.CreateAndSaveAttachment(); var url = $"/api/note/1/attachments/{attachment.Id + 1}"; var request = new HttpRequestMessage(HttpMethod.Get, url); var token = await GetJwt(); request.AddJwtBearer(token); // Act using var response = await HttpClient.SendAsync(request); // Assert Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode); }
public async Task Handle_ById_AttachmentNotFound_ShouldThrowNotFoundException() { // Arrange var attachment = await _wolkDbContext.CreateAndSaveAttachment(); var request = new GetAttachmentQuery { AttachmentId = attachment.Id + 1 }; // Act var exception = await Assert.ThrowsExceptionAsync <NotFoundException>(() => _handler.Handle(request, CancellationToken.None)); // Assert Assert.IsTrue(exception.Message.Contains(nameof(Attachment))); }
public async Task CreateAttachmentAccessToken_HappyFlow() { // Arrange var attachment = await WolkDbContext.CreateAndSaveAttachment(); var model = new MutateAttachmentAccessTokenModel { ExpirationDateTime = new DateTimeOffset(2019, 12, 31, 23, 0, 0, TimeSpan.FromHours(2)) }; var url = $"/api/note/{attachment.NoteId}/attachments/{attachment.Id}/accessTokens"; var request = new HttpRequestMessage(HttpMethod.Post, url) { Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, MimeTypes.Json) }; var token = await GetJwt(); request.AddJwtBearer(token); // Act using var response = await HttpClient.SendAsync(request); // Assert Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); var content = await response.Content.ReadAsStringAsync(); var returnedToken = JsonConvert.DeserializeObject <AccessTokenResultDto>(content); Assert.AreEqual(model.ExpirationDateTime, returnedToken.ExpirationDateTime); Assert.IsTrue(Guid.TryParse(returnedToken.Token, out var _)); var addedToken = await WolkDbContext.AccessTokens.SingleAsync(); Assert.AreEqual(returnedToken.Token, addedToken.Token); Assert.AreEqual(returnedToken.ExpirationDateTime, addedToken.ExpirationDateTime); }
public async Task Delete_HappyFlow() { // Arrange var attachment = await WolkDbContext.CreateAndSaveAttachment(); var url = $"/api/note/1/attachments/{attachment.Id}"; var request = new HttpRequestMessage(HttpMethod.Delete, url); var token = await GetJwt(); request.AddJwtBearer(token); var expectedPath = Path.Combine(UploadsRootPath, attachment.InternalFilename); EnsureFileExists(expectedPath); // Act using var response = await HttpClient.SendAsync(request); // Assert Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode); Assert.IsFalse(await WolkDbContext.Attachments.AnyAsync()); Assert.AreEqual(0, MockFileService.Files.Count); }