public async Task ReadFormAsync_SimpleData_ReturnsParsedFormCollection() { // Arrange var formContent = Encoding.UTF8.GetBytes("foo=bar&baz=2"); var context = new DefaultHttpContext(); context.Request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; context.Request.Body = new MemoryStream(formContent); // Not cached yet var formFeature = context.GetFeature<IFormFeature>(); Assert.Null(formFeature); // Act var formCollection = await context.Request.ReadFormAsync(); // Assert Assert.Equal("bar", formCollection["foo"]); Assert.Equal("2", formCollection["baz"]); // Cached formFeature = context.GetFeature<IFormFeature>(); Assert.NotNull(formFeature); Assert.NotNull(formFeature.Form); Assert.Same(formFeature.Form, formCollection); }
public void SetItems_NewCollectionUsed() { var context = new DefaultHttpContext(new FeatureCollection()); Assert.Null(context.GetFeature <IItemsFeature>()); var items = new Dictionary <object, object>(); context.Items = items; Assert.NotNull(context.GetFeature <IItemsFeature>()); Assert.Same(items, context.Items); var item = new object(); items["foo"] = item; Assert.Same(item, context.Items["foo"]); }
public void GetItems_DefaultCollectionProvided() { var context = new DefaultHttpContext(new FeatureCollection()); Assert.Null(context.GetFeature <IItemsFeature>()); var items = context.Items; Assert.NotNull(context.GetFeature <IItemsFeature>()); Assert.NotNull(items); Assert.Same(items, context.Items); var item = new object(); context.Items["foo"] = item; Assert.Same(item, context.Items["foo"]); }
private static HttpRequest CreateRequest(IDictionary <string, string[]> headers) { var context = new DefaultHttpContext(); context.GetFeature <IHttpRequestFeature>().Headers = headers; return(context.Request); }
public Task ExpectedKeysAreAvailable() { var handler = new ClientHandler(env => { var context = new DefaultHttpContext((IFeatureCollection)env); // TODO: Assert.True(context.RequestAborted.CanBeCanceled); Assert.Equal("HTTP/1.1", context.Request.Protocol); Assert.Equal("GET", context.Request.Method); Assert.Equal("https", context.Request.Scheme); Assert.Equal("/A/Path", context.Request.PathBase.Value); Assert.Equal("/and/file.txt", context.Request.Path.Value); Assert.Equal("?and=query", context.Request.QueryString.Value); Assert.NotNull(context.Request.Body); Assert.NotNull(context.Request.Headers); Assert.NotNull(context.Response.Headers); Assert.NotNull(context.Response.Body); Assert.Equal(200, context.Response.StatusCode); Assert.Null(context.GetFeature<IHttpResponseFeature>().ReasonPhrase); Assert.Equal("example.com", context.Request.Host.Value); return Task.FromResult(0); }, new PathString("/A/Path/")); var httpClient = new HttpClient(handler); return httpClient.GetAsync("https://example.com/A/Path/and/file.txt?and=query"); }
public void SetItems_NewCollectionUsed() { var context = new DefaultHttpContext(new FeatureCollection()); Assert.Null(context.GetFeature<IItemsFeature>()); var items = new Dictionary<object, object>(); context.Items = items; Assert.NotNull(context.GetFeature<IItemsFeature>()); Assert.Same(items, context.Items); var item = new object(); items["foo"] = item; Assert.Same(item, context.Items["foo"]); }
public void GetItems_DefaultCollectionProvided() { var context = new DefaultHttpContext(new FeatureCollection()); Assert.Null(context.GetFeature<IItemsFeature>()); var items = context.Items; Assert.NotNull(context.GetFeature<IItemsFeature>()); Assert.NotNull(items); Assert.Same(items, context.Items); var item = new object(); context.Items["foo"] = item; Assert.Same(item, context.Items["foo"]); }
private static HttpRequest CreateRequest(IDictionary<string, string[]> headers) { var context = new DefaultHttpContext(); context.GetFeature<IHttpRequestFeature>().Headers = headers; return context.Request; }
public async Task ReadFormAsync_MultipartWithFieldAndFile_ReturnsParsedFormCollection() { var formContent = Encoding.UTF8.GetBytes(MultipartFormWithFieldAndFile); var context = new DefaultHttpContext(); context.Request.ContentType = MultipartContentType; context.Request.Body = new MemoryStream(formContent); // Not cached yet var formFeature = context.GetFeature<IFormFeature>(); Assert.Null(formFeature); var formCollection = await context.Request.ReadFormAsync(); Assert.NotNull(formCollection); // Cached formFeature = context.GetFeature<IFormFeature>(); Assert.NotNull(formFeature); Assert.NotNull(formFeature.Form); Assert.Same(formFeature.Form, formCollection); Assert.Same(formCollection, context.Request.Form); // Content Assert.Equal(1, formCollection.Count); Assert.Equal("Foo", formCollection["description"]); Assert.NotNull(formCollection.Files); Assert.Equal(1, formCollection.Files.Count); var file = formCollection.Files["myfile1"]; Assert.Equal("text/html", file.ContentType); Assert.Equal(@"form-data; name=""myfile1""; filename=""temp.html""", file.ContentDisposition); var body = file.OpenReadStream(); using (var reader = new StreamReader(body)) { var content = reader.ReadToEnd(); Assert.Equal(content, "<html><body>Hello World</body></html>"); } }
public async Task ReadForm_MultipartWithField_ReturnsParsedFormCollection() { var formContent = Encoding.UTF8.GetBytes(MultipartFormWithField); var context = new DefaultHttpContext(); context.Request.ContentType = MultipartContentType; context.Request.Body = new MemoryStream(formContent); // Not cached yet var formFeature = context.GetFeature<IFormFeature>(); Assert.Null(formFeature); var formCollection = context.Request.Form; Assert.NotNull(formCollection); // Cached formFeature = context.GetFeature<IFormFeature>(); Assert.NotNull(formFeature); Assert.NotNull(formFeature.Form); Assert.Same(formCollection, formFeature.Form); Assert.Same(formCollection, await context.Request.ReadFormAsync()); // Content Assert.Equal(1, formCollection.Count); Assert.Equal("Foo", formCollection["description"]); Assert.NotNull(formCollection.Files); Assert.Equal(0, formCollection.Files.Count); }