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")); } } }
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")); } } }
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); } }
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); } }
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); } }
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); } }
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")); } }
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")); } }
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); }
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); } }
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); }