public void ResolvedServiceReadRequestMissingFormat() { ServiceCollection services = new ServiceCollection(); services .WithService("Test", "/") .WithEndpoint("{action}") .Post<Payload>((Payload p) => { }); ResolvedService service = new ServiceResolver(services).Find(MethodType.Post, "foo"); using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("{\"date\":\"2012-09-22T18:46:00Z\",\"number\":42,\"text\":\"Hello, world!\"}"))) { using (RequestMessage request = new RequestMessage<Payload>(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { ReadRequestResult result = service.ReadRequest(request, (int)stream.Length, null, "application/json", stream); Assert.IsNotNull(result); Assert.IsFalse(result.Success); Assert.IsNull(result.Exception); Assert.AreEqual(StatusCode.UnsupportedMediaType, result.StatusCode); Assert.IsNull(result.RequestObject); } } }
public void ResolvedServiceReadRequestInvalidJson() { ServiceCollection services = new ServiceCollection(); services .WithHostFormat(new JsonFormat()) .WithService("Test", "/") .WithEndpoint("{action}") .Post<Payload>((Payload p) => { }); ResolvedService service = new ServiceResolver(services).Find(MethodType.Post, "foo"); using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("this is not JSON"))) { using (RequestMessage request = new RequestMessage<Payload>(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { ReadRequestResult result = service.ReadRequest(request, (int)stream.Length, null, "application/json", stream); Assert.IsNotNull(result); Assert.IsFalse(result.Success); Assert.IsNotNull(result.Exception); Assert.AreEqual(StatusCode.BadRequest, result.StatusCode); Assert.IsNull(result.RequestObject); } } }
public void ResolvedServiceReadRequestMissingEncoding() { ServiceCollection services = new ServiceCollection(); services .WithHostFormat(new JsonFormat()) .WithService("Test", "/") .WithEndpoint("{action}") .Post<Payload>((Payload p) => { }); byte[] encodedPayload; using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("{\"date\":\"2012-09-22T18:46:00Z\",\"number\":42,\"text\":\"Hello, world!\"}"))) { using (MemoryStream outputStream = new MemoryStream()) { using (GZipStream compressionStream = new GZipStream(outputStream, CompressionMode.Compress)) { stream.CopyTo(compressionStream); } encodedPayload = outputStream.ToArray(); } } ResolvedService service = new ServiceResolver(services).Find(MethodType.Post, "foo"); using (RequestMessage request = new RequestMessage<Payload>(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { request.InputStream.Write(encodedPayload, 0, encodedPayload.Length); request.InputStream.Position = 0; request.SetEncodingFilter(EncodingType.Parse("gzip"), new GzipDeflateEncoding()); ReadRequestResult result = service.ReadRequest(request, encodedPayload.Length, "gzip", "application/json", request.InputStream); Assert.IsNotNull(result); Assert.IsFalse(result.Success); Assert.IsNull(result.Exception); Assert.AreEqual(StatusCode.UnsupportedMediaType, result.StatusCode); Assert.IsNull(result.RequestObject); } }
public void ResolvedServiceReadRequest() { ServiceCollection services = new ServiceCollection(); services .WithHostFormat(new JsonFormat()) .WithService("Test", "/") .WithEndpoint("{action}") .Get(() => { }) .Post<Payload>((Payload p) => { }); ResolvedService service = new ServiceResolver(services).Find(MethodType.Get, "foo"); ReadRequestResult result; using (RequestMessage request = new RequestMessage(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { result = service.ReadRequest(request, 0, null, null, null); Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.IsNull(result.Exception); Assert.AreEqual(StatusCode.None, result.StatusCode); Assert.IsNull(result.RequestObject); } using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("{\"date\":\"2012-09-22T18:46:00Z\",\"number\":42,\"text\":\"Hello, world!\"}"))) { using (RequestMessage request = new RequestMessage<Payload>(service.Name, service.RouteValues, new Uri("http://example.com/foo"))) { service = new ServiceResolver(services).Find(MethodType.Post, "foo"); result = service.ReadRequest(request, (int)stream.Length, null, "application/json", stream); Assert.IsNotNull(result); Assert.IsTrue(result.Success); Assert.IsNull(result.Exception); Assert.AreEqual(StatusCode.None, result.StatusCode); Assert.IsNotNull(result.RequestObject); Payload payload = result.RequestObject as Payload; Assert.IsNotNull(payload); Assert.AreEqual(new DateTime(2012, 9, 22, 18, 46, 0, DateTimeKind.Utc), payload.Date); Assert.AreEqual(42L, payload.Number); Assert.AreEqual("Hello, world!", payload.Text); } } }