public virtual async Task UploadValidQualityIntoQualities_Returns_ValidList()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Qualities = new List <string>();

                var values = Enum.GetNames(typeof(Qualities));
                foreach (var value in values)
                {
                    uploadModel.Qualities.Add(value);
                }

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative),
                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(uploadResult.Qualities);
                for (var id = 0; id < values.Length; id++)
                {
                    Assert.AreEqual(values[id], uploadResult.Qualities[id].ToString("G"));
                }
            }
        }
Exemplo n.º 2
0
        public virtual async Task IncludeIdsInProfileIds_Returns_ModelWithUploadedProfileIds()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Profile     = new RawProfileViewModel();
                uploadModel.Profile.Ids = new List <string>
                {
                    Guid.NewGuid().ToString("D"),
                    Guid.NewGuid().ToString("D"),
                    Guid.NewGuid().ToString("D"),
                    Guid.NewGuid().ToString("D")
                };

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);

                for (var id = 0; id < uploadModel.Profile.Ids.Count; id++)
                {
                    Assert.AreEqual(uploadModel.Profile.Ids[id], httpResponse.Profile.Ids[id].ToString("D"));
                }
            }
        }
Exemplo n.º 3
0
        public virtual async Task UploadValidProfileAttachments_Returns_AttachmentsInfoWhoseInfoSameAsUploadedOnes()
        {
            var attachmentService = _testServer.Services.GetService <IAttachmentService>();

            var uploadModel = new RawUploadRequestViewModel();

            uploadModel.Profile        = new RawProfileViewModel();
            uploadModel.Profile.Photos = new List <HttpFileBase>();
            uploadModel.Profile.Photos.Add(await attachmentService.LoadSampleAttachmentAsync());
            uploadModel.Profile.Photos.Add(await attachmentService.LoadSampleAttachmentAsync());

            var httpClient          = _testServer.CreateClient();
            var httpResponseMessage = await httpClient
                                      .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

            var uploadResult = await httpResponseMessage
                               .Content.ReadAsAsync <UploadResponseViewModel>();

            Assert.NotNull(uploadResult);
            Assert.NotNull(uploadResult.Profile);
            Assert.NotNull(uploadResult.Profile.Photos);

            for (var id = 0; id < uploadModel.Profile.Photos.Count; id++)
            {
                Assert.AreEqual(uploadModel.Profile.Photos[id].FileName, uploadResult.Profile.Photos[id].FileName);
                Assert.AreEqual(uploadModel.Profile.Photos[id].ContentLength,
                                uploadResult.Profile.Photos[id].ContentLength);
                Assert.AreEqual(uploadModel.Profile.Photos[id].ContentType,
                                uploadResult.Profile.Photos[id].ContentType);
            }
        }
Exemplo n.º 4
0
        public virtual async Task UploadValidAttachments_Returns_AttachmentsInfoWhoseInfoSameAsUploadedOnes()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var attachmentService = lifeTimeScope.Resolve <IAttachmentService>();
                var sampleAttachment  = await attachmentService.LoadSampleAttachmentAsync();

                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Attachments = new List <HttpFile>();
                uploadModel.Attachments.Add(new HttpFile(sampleAttachment));

                var httpClient          = lifeTimeScope.Resolve <HttpClient>();
                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage
                                   .Content.ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(uploadResult);
                Assert.NotNull(uploadResult.Attachments);

                for (var id = 0; id < uploadModel.Attachments.Count; id++)
                {
                    Assert.AreEqual(uploadModel.Attachments[id].FileName, uploadResult.Attachments[id].FileName);
                    Assert.AreEqual(uploadModel.Attachments[id].ContentLength, uploadResult.Attachments[id].ContentLength);
                    Assert.AreEqual(uploadModel.Attachments[id].ContentType, uploadResult.Attachments[id].ContentType);
                }
            }
        }
        public virtual async Task UploadValidQualityToNonNullableQuality_Returns_ModelWithValidQuality()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.NonNullableQuality = nameof(Qualities.Best);

                var httpResponseMessage = await httpClient.PostAsync(new Uri("api/upload", UriKind.Relative),
                                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.AreEqual(Qualities.Best, uploadResult.NonNullableQuality);
            }
        }
        public virtual async Task NoUploadQualitiesIntoQualities_Returns_Null()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();

                var content             = uploadModel.ToMultipartFormDataContent();
                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), content);

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.IsNull(uploadResult.Qualities);
            }
        }
Exemplo n.º 7
0
        public virtual async Task NotIncludeAttachmentIdIntoNullableGuidField_Returns_ModelWithValidGuid()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.Null(httpResponse.AttachmentId);
            }
        }
        public virtual async Task UploadOutOfRangeQualityToNullableQuality_Returns_ModelWithNullQuality()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.NullableQuality = "10000";

                var httpResponseMessage = await httpClient.PostAsync(new Uri("api/upload", UriKind.Relative),
                                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.IsNull(uploadResult.NullableQuality);
            }
        }
        public virtual async Task NoUploadQualitiesIntoQualities_Returns_Null()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative),
                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.IsNull(uploadResult.Qualities);
            }
        }
        public virtual async Task NotIncludeIdsInIds_Returns_ModelWithNullIds()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.Null(httpResponse.Ids);
            }
        }
        public virtual async Task LeaveIdFieldBlank_Returns_ModelWithEmptyGuid()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.AreEqual(Guid.Empty.ToString("D"), httpResponse.Id.ToString("D"));
            }
        }
        public virtual async Task UploadValidIntQualityToNonNullableQuality_Returns_ModelWithValidQuality()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.NonNullableQuality = $"{(int) Qualities.Best}";

                var httpResponseMessage = await httpClient.PostAsync(new Uri("api/upload", UriKind.Relative),
                                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.AreEqual(Qualities.Best, uploadResult.NonNullableQuality);
            }
        }
Exemplo n.º 13
0
        public virtual async Task UploadEmptyGuidString_Returns_ModelWithEmptyGuid()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Id = "";

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.AreEqual(Guid.Empty.ToString("D"), httpResponse.Id.ToString("D"));
            }
        }
        public virtual async Task UploadEmptyAttachmentIdIntoNullableGuidField_Returns_ModelWithNullAttachmentId()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.AttachmentId = "";

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.Null(httpResponse.AttachmentId);
            }
        }
        public virtual async Task UploadOutOfRangeQualityToProfileNullableQuality_Returns_ModelWithNullProfileQuality()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Profile = new RawProfileViewModel();
                uploadModel.Profile.NullableQuality = "10000";

                var httpResponseMessage = await httpClient.PostAsync(new Uri("api/upload", UriKind.Relative),
                                                                     uploadModel.ToMultipartFormDataContent());

                var uploadResult = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.IsNull(uploadResult.NullableQuality);
            }
        }
Exemplo n.º 16
0
        public virtual async Task UploadValidGuidIdIntoNullableGuidField_Returns_ModelWithValidGuid()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var httpClient  = _testServer.CreateClient();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Profile            = new RawProfileViewModel();
                uploadModel.Profile.NullableId = Guid.NewGuid().ToString("D");
                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse?.Profile?.NullableId);
                Assert.AreEqual(uploadModel.Profile.NullableId,
                                httpResponse.Profile.NullableId.Value.ToString("D"));
            }
        }
Exemplo n.º 17
0
        public virtual async Task UploadValidProfileNonNullableGuidString_Returns_ModelWithValidProfileGuid()
        {
            using (var lifeTimeScope = _container.BeginLifetimeScope())
            {
                var httpClient  = lifeTimeScope.Resolve <HttpClient>();
                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Profile = new RawProfileViewModel();
                uploadModel.Profile.NonNullableId = Guid.NewGuid().ToString("D");

                var httpResponseMessage = await httpClient
                                          .PostAsync(new Uri("api/upload", UriKind.Relative),
                                                     uploadModel.ToMultipartFormDataContent());

                var httpResponse = await httpResponseMessage.Content
                                   .ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(httpResponse);
                Assert.AreEqual(uploadModel.Profile.NonNullableId,
                                httpResponse.Profile.NonNullableId.ToString("D"));
            }
        }
Exemplo n.º 18
0
        public virtual async Task UploadValidNestedAttachment_Returns_AttachmentInfoWhoseInfoSameAsUploadedOne()
        {
            var attachmentService = _testServer.Services.GetService <IAttachmentService>();
            var attachment        = await attachmentService.LoadSampleAttachmentAsync();

            var uploadModel = new RawUploadRequestViewModel();

            uploadModel.Profile       = new RawProfileViewModel();
            uploadModel.Profile.Photo = attachment;

            var httpClient          = _testServer.CreateClient();
            var httpResponseMessage = await httpClient
                                      .PostAsync(new Uri("api/upload", UriKind.Relative), uploadModel.ToMultipartFormDataContent());

            var uploadResult = await httpResponseMessage
                               .Content.ReadAsAsync <UploadResponseViewModel>();

            Assert.NotNull(uploadResult);
            Assert.AreEqual(uploadModel.Profile.Photo.FileName, uploadResult.Profile.Photo.FileName);
            Assert.AreEqual(uploadModel.Profile.Photo.ContentLength, uploadResult.Profile.Photo.ContentLength);
            Assert.AreEqual(uploadModel.Profile.Photo.ContentType, uploadResult.Profile.Photo.ContentType);
        }
Exemplo n.º 19
0
        public async Task UploadValidAttachment_Returns_AttachmentInfoWhoseInfoSameAsUploadedOne()
        {
            using (var lifeTimeScope = _testServer.Services.CreateScope())
            {
                var attachmentService = lifeTimeScope.ServiceProvider.GetService <IAttachmentService>();

                var uploadModel = new RawUploadRequestViewModel();
                uploadModel.Attachment = await attachmentService.LoadSampleAttachmentAsync();

                var httpClient           = _testServer.CreateClient();
                var multipartFormContent = uploadModel.ToMultipartFormDataContent();
                var httpResponseMessage  = await httpClient
                                           .PostAsync(new Uri("api/upload", UriKind.Relative), multipartFormContent);

                var uploadResult = await httpResponseMessage
                                   .Content.ReadAsAsync <UploadResponseViewModel>();

                Assert.NotNull(uploadResult);
                Assert.AreEqual(uploadModel.Attachment.FileName, uploadResult.Attachment.FileName);
                Assert.AreEqual(uploadModel.Attachment.ContentLength, uploadResult.Attachment.ContentLength);
                Assert.AreEqual(uploadModel.Attachment.ContentType, uploadResult.Attachment.ContentType);
            }
        }
Exemplo n.º 20
0
        public static MultipartFormDataContent ToMultipartFormDataContent(this RawUploadRequestViewModel model)
        {
            var multipartFormDataContent = new MultipartFormDataContent($"-www-www-{DateTime.Now:yy-MM-dd}-www-www-");

            if (!string.IsNullOrEmpty(model.Id))
            {
                multipartFormDataContent.Add(new StringContent(model.Id, Encoding.UTF8), nameof(model.Id));
            }

            if (!string.IsNullOrEmpty(model.AttachmentId))
            {
                multipartFormDataContent.Add(new StringContent(model.AttachmentId, Encoding.UTF8),
                                             nameof(model.AttachmentId));
            }

            if (model.Attachment != null)
            {
#if NETFRAMEWORK
                multipartFormDataContent.Add(model.Attachment
                                             .ToByteArrayContent(nameof(model.Attachment)));
#elif NETSTANDARD
                var content = new ByteArrayContent(model.Attachment.ToBytes());
                content.Headers.ContentType = MediaTypeHeaderValue.Parse(model.Attachment.ContentType);
                multipartFormDataContent.Add(content,
                                             nameof(model.Attachment), model.Attachment.FileName);
#endif
            }

            if (model.Attachments != null && model.Attachments.Count > 0)
            {
                for (var attachmentId = 0; attachmentId < model.Attachments.Count; attachmentId++)
                {
#if NETFRAMEWORK
                    multipartFormDataContent.Add(model.Attachments[attachmentId]
                                                 .ToByteArrayContent($"{nameof(model.Attachments)}[{attachmentId}]"));
#elif NETSTANDARD
                    var attachment = model.Attachments[attachmentId];
                    var content    = new ByteArrayContent(attachment.ToBytes());
                    content.Headers.ContentType = MediaTypeHeaderValue.Parse(attachment.ContentType);
                    multipartFormDataContent.Add(content,
                                                 $"{nameof(model.Attachments)}[{attachmentId}]", attachment.FileName);
#endif
                }
            }

            var nonNullableQuality = string.IsNullOrEmpty(model.NonNullableQuality) ? "" : model.NonNullableQuality;
            multipartFormDataContent.Add(new StringContent(nonNullableQuality, Encoding.UTF8),
                                         nameof(model.NonNullableQuality));

            var nullableQualityContent = string.IsNullOrEmpty(model.NullableQuality) ? "" : model.NullableQuality;
            multipartFormDataContent.Add(new StringContent(nullableQualityContent, Encoding.UTF8),
                                         nameof(model.NullableQuality));

            if (model.Ids != null)
            {
                for (var id = 0; id < model.Ids.Count; id++)
                {
                    multipartFormDataContent.Add(new StringContent(model.Ids[id], Encoding.UTF8),
                                                 $"{nameof(model.Ids)}[{id}]");
                }
            }

            if (model.Qualities != null && model.Qualities.Count > 0)
            {
                for (var id = 0; id < model.Qualities.Count; id++)
                {
                    multipartFormDataContent
                    .Add(new StringContent(model.Qualities[id], Encoding.UTF8), $"{nameof(model.Qualities)}[{id}]");
                }
            }

            model.Profile?.ExtendHttpContent(multipartFormDataContent, $"{nameof(model.Profile)}.");

            return(multipartFormDataContent);
        }