Exemple #1
0
        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>());
        }
Exemple #2
0
        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>());
        }
Exemple #3
0
        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);
        }