Struct noir::HttpFormData [] [src]

pub struct HttpFormData {
    // some fields omitted
}

An abstraction over HTTP form data.

Created by the form!{...} macro:

form! {
    "field" => "value",
    "array[]" => vec![1, 2, 3, 4, 5],
    "fs_file" => (
        "Cargo.toml",
        Mime(TopLevel::Text, SubLevel::Ext("toml".to_string()), vec![]),
        File::open("Cargo.toml").unwrap()
    ),
    "vec_file" => (
        "data.bin",
        Mime(TopLevel::Application, SubLevel::OctetStream, vec![]),
        vec![1, 2, 3, 4, 5, 6, 7, 8]
    ),
    "str_file" => (
        "readme.txt",
        Mime(TopLevel::Text, SubLevel::Plain, vec![]),
        "Hello World"
    ),
    "json_file" => (
        "data.json",
        Mime(TopLevel::Application, SubLevel::Json, vec![]),
        object! {
            "key" => "value"
        }
    )
};

Test Failure Examples

From test_provided_response_dump_form ()

Response Failure: POST request to "http://localhost:4000/response/forward" returned 1 error(s)   1) Request Failure: POST response provided for "https://example.com/forward" returned 1 error(s)   1.1) Request headers dump:   Content-Length: 857 Content-Type: application/form-data; boundary=boundary12345 Host: example.com   Request form dump with 5 fields:   1) Field "field" dump:   "someValue\n"   2) Array "array[]" (5 items) dump:   "1", "2", "3", "4", "5\n"   3) File "vec_file" ("file.bin", application/octet-stream) raw body dump of 8 bytes:   [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]   4) File "str_file" ("readme.md", text/plain) body dump:   "Hello World"   5) File "fs_file" ("form_test.md", text/plain) body dump:   "Form Test Data File\n"

From test_provided_response_with_expected_body_form_mismatch ()

Response Failure: POST request to "http://localhost:4000/response/forward" returned 1 error(s)   1) Request Failure: POST response provided for "https://example.com/forward" returned 1 error(s)   1.1) Request body form data does not match:   - form.array[]: Array with 4 item(s) does not match expected length of 5   - form.array[][3]: ArrayItem value does not match, expected:   "5\n"   but got:   "4"   difference:   "5\n 4"   - form.field: Field value does not match, expected:   "different someValue\n"   but got:   "someValue\n"   difference:   "different someValue\n"   - form.mismatchedType: Field value does not match, expected:   "array"   but got:   "plain"   difference:   "array plain"   - form.str_file: MIME type (text/html) does not match expected value (text/plain)   - form.vec_file: Filename ("other.bin") does not match expected value ("file.bin")   - form: Is missing 1 plain field(s) (missingField)

From test_with_form_body_error_broken_headers ()

Response Failure: POST request to "http://localhost:4000/response/forward" returned 1 error(s)   1) Request Failure: POST response provided for "https://example.com/forward" returned 1 error(s)   1.1) Request form body could not be parsed:   Invalid byte in header name of multi part field.

From test_with_form_body_error_missing_disposition_header ()

Response Failure: POST request to "http://localhost:4000/response/forward" returned 1 error(s)   1) Request Failure: POST response provided for "https://example.com/forward" returned 1 error(s)   1.1) Request form body could not be parsed:   Content-Disposition header is missing from multi part field.

From test_with_form_body_error_too_many_headers ()

Response Failure: POST request to "http://localhost:4000/response/forward" returned 1 error(s)   1) Request Failure: POST response provided for "https://example.com/forward" returned 1 error(s)   1.1) Request form body could not be parsed:   Unexpected headers in multi part field.