public async Task Page_Handler_Async() { // Arrange var getResponse = await Client.GetAsync("http://localhost/HandlerTestPage"); var getResponseBody = await getResponse.Content.ReadAsStringAsync(); var formToken = AntiforgeryTestHelper.RetrieveAntiforgeryToken(getResponseBody, "/ModelHandlerTestPage"); var cookie = AntiforgeryTestHelper.RetrieveAntiforgeryCookie(getResponse); var postRequest = new HttpRequestMessage(HttpMethod.Post, "http://localhost/HandlerTestPage"); postRequest.Headers.Add("Cookie", cookie.Key + "=" + cookie.Value); postRequest.Headers.Add("RequestVerificationToken", formToken); // Act var response = await Client.SendAsync(postRequest); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var content = await response.Content.ReadAsStringAsync(); Assert.StartsWith("Method: OnPostAsync", content.Trim()); }
public async Task ReRegisteringAntiforgeryTokenInsideFormTagHelper_DoesNotAddDuplicateAntiforgeryTokenFields() { // Arrange var expectedMediaType = MediaTypeHeaderValue.Parse("text/html; charset=utf-8"); var outputFile = "compiler/resources/TagHelpersWebSite.Employee.DuplicateAntiforgeryTokenRegistration.html"; var expectedContent = await ResourceFile.ReadResourceAsync(_resourcesAssembly, outputFile, sourceFile : false); // Act var response = await Client.GetAsync("http://localhost/Employee/DuplicateAntiforgeryTokenRegistration"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedMediaType, response.Content.Headers.ContentType); responseContent = responseContent.Trim(); var forgeryToken = AntiforgeryTestHelper.RetrieveAntiforgeryToken( responseContent, "/Employee/DuplicateAntiforgeryTokenRegistration"); ResourceFile.UpdateOrVerify(_resourcesAssembly, outputFile, expectedContent, responseContent, forgeryToken); }
public async Task RoundTrippingFormFileInputWorks() { // Arrange var url = "/PropertyBinding/BindFormFile"; var response = await Client.GetAsync(url); await response.AssertStatusCodeAsync(HttpStatusCode.OK); var document = await response.GetHtmlDocumentAsync(); var property1 = document.RequiredQuerySelector("#property1").GetAttribute("name"); var file1 = document.RequiredQuerySelector("#file1").GetAttribute("name"); var file2 = document.RequiredQuerySelector("#file2").GetAttribute("name"); var file3 = document.RequiredQuerySelector("#file3").GetAttribute("name"); var antiforgeryToken = document.RetrieveAntiforgeryToken(); var cookie = AntiforgeryTestHelper.RetrieveAntiforgeryCookie(response); var content = new MultipartFormDataContent(); content.Add(new StringContent("property1-value"), property1); content.Add(new StringContent("test-value1"), file1, "test1.txt"); content.Add(new StringContent("test-value2"), file3, "test2.txt"); var request = new HttpRequestMessage(HttpMethod.Post, url) { Content = content, }; request.Headers.Add("Cookie", cookie.Key + "=" + cookie.Value); request.Headers.Add("RequestVerificationToken", antiforgeryToken); response = await Client.SendAsync(request); await response.AssertStatusCodeAsync(HttpStatusCode.OK); }
public async Task ValidationTagHelpers_GeneratesExpectedSpansAndDivs() { // Arrange var outputFile = "compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Customer.Index.html"; var expectedContent = await ResourceFile.ReadResourceAsync(_resourcesAssembly, outputFile, sourceFile : false); var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/Customer/HtmlGeneration_Customer"); var nameValueCollection = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Number", string.Empty), new KeyValuePair <string, string>("Name", string.Empty), new KeyValuePair <string, string>("Email", string.Empty), new KeyValuePair <string, string>("PhoneNumber", string.Empty), new KeyValuePair <string, string>("Password", string.Empty) }; request.Content = new FormUrlEncodedContent(nameValueCollection); // Act var response = await Client.SendAsync(request); var responseContent = await response.Content.ReadAsStringAsync(); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); responseContent = responseContent.Trim(); ResourceFile.UpdateOrVerify(_resourcesAssembly, outputFile, expectedContent, responseContent, token: AntiforgeryTestHelper.RetrieveAntiforgeryToken(responseContent, "Customer/HtmlGeneration_Customer")); }
public async Task HtmlGenerationWebSite_GenerateEncodedResults(string action, string antiforgeryPath) { // Arrange var expectedMediaType = MediaTypeHeaderValue.Parse("text/html; charset=utf-8"); var outputFile = "compiler/resources/HtmlGenerationWebSite.HtmlGeneration_Home." + action + ".Encoded.html"; var expectedContent = await ResourceFile.ReadResourceAsync(_resourcesAssembly, outputFile, sourceFile : false); // Act // The host is not important as everything runs in memory and tests are isolated from each other. var response = await EncodedClient.GetAsync("http://localhost/HtmlGeneration_Home/" + action); var responseContent = await response.Content.ReadAsStringAsync(); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(expectedMediaType, response.Content.Headers.ContentType); responseContent = responseContent.Trim(); if (antiforgeryPath == null) { ResourceFile.UpdateOrVerify(_resourcesAssembly, outputFile, expectedContent, responseContent); } else { ResourceFile.UpdateOrVerify(_resourcesAssembly, outputFile, expectedContent, responseContent, token: AntiforgeryTestHelper.RetrieveAntiforgeryToken(responseContent, antiforgeryPath)); } }