Пример #1
0
        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]);
        }
Пример #2
0
        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));
        }
Пример #4
0
        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]);
        }
Пример #5
0
        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);
        }
Пример #8
0
        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);
        }