diff --git a/test/Orleans.Http.Test/HttpTests.cs b/test/Orleans.Http.Test/HttpTests.cs index 71bd78e..213e1c4 100644 --- a/test/Orleans.Http.Test/HttpTests.cs +++ b/test/Orleans.Http.Test/HttpTests.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Net; @@ -104,6 +105,20 @@ public async Task RouteTest() Assert.True(response.StatusCode == HttpStatusCode.BadRequest); } + [Fact] + public async Task FormsTest() + { + var payload = new TestPayload(); + payload.Number = 12340000; + payload.Text = "Test text"; + + var url = "/grains/test/00000000-0000-0000-0000-000000000000/FormTest"; + var dic = new Dictionary(); + dic["Test"] = "testing dic"; + var response = await this._http.PostAsync(url, new FormUrlEncodedContent(dic)); + Assert.True(response.StatusCode == HttpStatusCode.OK); + } + [Fact] public async Task PostTest() { diff --git a/test/Orleans.Http.Test/Startup.cs b/test/Orleans.Http.Test/Startup.cs index 02bb462..bb48844 100644 --- a/test/Orleans.Http.Test/Startup.cs +++ b/test/Orleans.Http.Test/Startup.cs @@ -41,7 +41,8 @@ public void ConfigureServices(IServiceCollection services) services .AddGrainRouter() .AddJsonMediaType() - .AddProtobufMediaType(); + .AddProtobufMediaType() + .AddFormsMediaType(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/test/Orleans.Http.Test/TestGrain.cs b/test/Orleans.Http.Test/TestGrain.cs index 8cdeb82..92a1a5b 100644 --- a/test/Orleans.Http.Test/TestGrain.cs +++ b/test/Orleans.Http.Test/TestGrain.cs @@ -79,6 +79,9 @@ public interface ITestGrain : IGrainWithGuidKey [HttpGet(pattern: "Get8")] Task Get8(); + + [HttpPost("{grainId}/FormTest")] + Task FormTest([FromBody]Dictionary payload); } [ProtoContract] @@ -186,6 +189,13 @@ public Task GetWithAuthAdmin() public Task Get7() => Task.CompletedTask; public Task Get8() => Task.CompletedTask; + + public Task FormTest(Dictionary payload) + { + if (payload != null && payload.Count == 1) return Task.CompletedTask; + + throw new ArgumentException(nameof(payload)); + } } public class RandomGuidRouteGrainProvider : IRouteGrainProvider