public async Task Returns_expected_response(TestVariant variant) { // Arrange var expectedString = "this is a string value"; var expectedNumber = 32; var client = new SelfContainedWebApplicationFactoryWithWebHost <Dummy> ( configureServices: services => { services.AddViewModelComposition(options => { options.AssemblyScanner.Disable(); options.EnableWriteSupport(); variant.CompositionOptions?.Invoke(options); }); services.AddRouting(); variant.ConfigureServices?.Invoke(services); }, configure: app => { app.UseRouting(); app.UseEndpoints(builder => builder.MapCompositionHandlers()); variant.Configure?.Invoke(app); } ).CreateClient(); variant.ConfigureHttpClient?.Invoke(client); dynamic model = new ExpandoObject(); model.AString = expectedString; model.ANumber = expectedNumber; var json = (string)JsonConvert.SerializeObject(model); var stringContent = new StringContent(json, Encoding.UTF8, MediaTypeNames.Application.Json); stringContent.Headers.ContentLength = json.Length; // Act var response = await client.PostAsync("/sample/1", stringContent); // Assert Assert.True(response.IsSuccessStatusCode); var responseString = await response.Content.ReadAsStringAsync(); var responseObj = JObject.Parse(responseString); Assert.Equal(expectedString, responseObj?.SelectToken("AString")?.Value <string>()); Assert.Equal(expectedNumber, responseObj?.SelectToken("ANumber")?.Value <int>()); Assert.Equal($"ANumber: {expectedNumber}.", responseObj?.SelectToken("AValue")?.Value <string>()); }
public async Task Returns_expected_response() { var expectedString = "this is a string value"; var expectedNumber = 32; // Arrange var client = new SelfContainedWebApplicationFactoryWithWebHost <Get_with_2_handlers> ( configureServices: services => { services.AddViewModelComposition(options => { options.AssemblyScanner.Disable(); options.RegisterCompositionHandler <TestStringHandler>(); options.RegisterCompositionHandler <TestIntegerHandler>(); options.EnableCompositionOverControllers(); options.EnableWriteSupport(); }); services.AddRouting(); services.AddControllers() .AddNewtonsoftJson(); }, configure: app => { app.UseRouting(); app.UseEndpoints(builder => { builder.MapControllers(); builder.MapCompositionHandlers(); }); } ).CreateClient(); dynamic model = new ExpandoObject(); model.AString = expectedString; model.ANumber = expectedNumber; var json = (string)JsonConvert.SerializeObject(model); var stringContent = new StringContent(json, Encoding.UTF8, MediaTypeNames.Application.Json); stringContent.Headers.ContentLength = json.Length; // Act var response = await client.PostAsync("/api/CompositionOverControllerPost/1", stringContent); // Assert Assert.True(response.IsSuccessStatusCode); var responseString = await response.Content.ReadAsStringAsync(); var responseObj = JObject.Parse(responseString); Assert.Equal(expectedString, responseObj?.SelectToken("AString")?.Value <string>()); Assert.Equal(expectedNumber, responseObj?.SelectToken("ANumber")?.Value <int>()); }
public async Task If_attributes_are_of_different_types_handler_should_be_invoked_for_all_routes() { // Arrange var client = new SelfContainedWebApplicationFactoryWithWebHost <Dummy> ( configureServices: services => { services.AddViewModelComposition(options => { options.AssemblyScanner.Disable(); options.RegisterCompositionHandler <MultipleAttributesOfDifferentTypesHandler>(); }); services.AddControllers(); services.AddRouting(); }, configure: app => { app.UseRouting(); app.UseEndpoints(builder => { builder.MapCompositionHandlers(); builder.MapControllers(); }); } ).CreateClient(); var json = "{}"; var stringContent = new StringContent(json, Encoding.UTF8, MediaTypeNames.Application.Json); stringContent.Headers.ContentLength = json.Length; // Act var postResponse = await client.PostAsync("/multiple/attributes", stringContent); var getResponse = await client.GetAsync("/multiple/attributes/2"); // Assert //Assert.True(composedResponse.IsSuccessStatusCode); }