Пример #1
0
    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
        {
            { new StringContent("property1-value"), property1 },
            { new StringContent("test-value1"), file1, "test1.txt" },
            { 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);
    }
Пример #2
0
    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);
    }