File: mime.rs

package info (click to toggle)
rust-http-types 2.12.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,020 kB
  • sloc: makefile: 2
file content (56 lines) | stat: -rw-r--r-- 1,802 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#[cfg(features = "fs")]
mod tests {
    use async_std::fs;
    use async_std::io;
    use http_types::{mime, Body, Response};

    #[async_std::test]
    async fn guess_plain_text_mime() -> io::Result<()> {
        let body = Body::from_file("tests/fixtures/index.html").await?;
        let mut res = Response::new(200);
        res.set_body(body);
        assert_eq!(res.content_type(), Some(mime::HTML));
        Ok(())
    }

    #[async_std::test]
    async fn guess_binary_mime() -> http_types::Result<()> {
        let body = Body::from_file("tests/fixtures/nori.png").await?;
        let mut res = Response::new(200);
        res.set_body(body);
        assert_eq!(res.content_type(), Some(mime::PNG));

        // Assert the file is correctly reset after we've peeked the bytes
        let left = fs::read("tests/fixtures/nori.png").await?;
        let right = res.body_bytes().await?;
        assert_eq!(left, right);
        Ok(())
    }

    #[async_std::test]
    async fn guess_mime_fallback() -> io::Result<()> {
        let body = Body::from_file("tests/fixtures/unknown.custom").await?;
        let mut res = Response::new(200);
        res.set_body(body);
        assert_eq!(res.content_type(), Some(mime::BYTE_STREAM));
        Ok(())
    }

    #[async_std::test]
    async fn parse_empty_files() -> http_types::Result<()> {
        let body = Body::from_file("tests/fixtures/empty.custom").await?;
        let mut res = Response::new(200);
        res.set_body(body);
        assert_eq!(res.content_type(), Some(mime::BYTE_STREAM));
        Ok(())
    }

    // #[test]
    // fn match_mime_types() {
    //     let req = Request::get("https://example.com");
    //     match req.content_type() {
    //         Some(mime::JSON) => {}
    //         _ => {}
    //     }
    // }
}