public async Task ServiceMiddleWare_PerformGetAndPostRequests() { var loggerMock = new Mock <ILoggerFactory>(); var coll = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5); int version = 1; var service = new TestService(); var headers = new Dictionary <string, string> { { "ServiceVersion", version.ToString() }, { "Content-Type", "application/json" }, }; var middleware = new ServiceMiddleware(null, loggerMock.Object); // Add three persons var contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST", "{ person: { Name: 'Piet', Gender: 0, Age: 33 } }"); await middleware.Invoke(contextMock.Object, coll[version]); contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST", "{ person: { Name: 'Jannie', Gender: 1, Age: 13 } }"); await middleware.Invoke(contextMock.Object, coll[version]); contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST", "{ person: { Name: 'Jan', Gender: 0, Age: 35 } }"); await middleware.Invoke(contextMock.Object, coll[version]); // Find all persons starting with 'ja' contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons", "?name=ja", "GET", ""); await middleware.Invoke(contextMock.Object, coll[version]); // Read the result string json = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray()); var result = JToken.Parse(json) as JArray; Assert.Equal(2, result.Count); Assert.All(result, it => Assert.StartsWith("ja", it["name"].Value <string>(), StringComparison.InvariantCultureIgnoreCase)); // Find all persons starting with 'ja' asynchronously contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons2", "?name=ja", "GET", ""); await middleware.Invoke(contextMock.Object, coll[version]); // Read the result json = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray()); result = JToken.Parse(json) as JArray; Assert.Equal(2, result.Count); Assert.All(result, it => Assert.StartsWith("ja", it["name"].Value <string>(), StringComparison.InvariantCultureIgnoreCase)); }
public async Task ServiceMiddleWare_ShouldRaiseDescriptiveError() { var loggerMock = new Mock <ILogger>(); var loggerFactoryMock = new Mock <ILoggerFactory>(); loggerFactoryMock.Setup(x => x.CreateLogger(It.IsAny <string>())).Returns(loggerMock.Object); var coll = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5); int version = 1; var service = new TestService(); var headers = new Dictionary <string, string> { { "ServiceVersion", version.ToString() }, { "Content-Type", "application/json" }, }; var middleware = new ServiceMiddleware(null, loggerFactoryMock.Object); // Missing required property Name var contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST", "{ person: { Gender: 0, Age: 33 } }"); await middleware.Invoke(contextMock.Object, coll[version]); string message = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray()); Assert.StartsWith("Missing required property", message); Assert.Equal(400, contextMock.Object.Response.StatusCode); }
public async Task ServiceMiddleWare_CanHandleEmptyQuery() { var loggerMock = new Mock <ILoggerFactory>(); var coll = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5); int version = 1; var service = new TestService(); var headers = new Dictionary <string, string> { { "ServiceVersion", version.ToString() }, { "Content-Type", "application/json" }, }; var middleware = new ServiceMiddleware(null, loggerMock.Object); // Get request with an empty query var contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons", "", "GET", ""); await middleware.Invoke(contextMock.Object, coll[version]); string json = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray()); Assert.Equal("[]", json); }