ohkami_lib 0.24.9

internal library for Ohkami - A performant, declarative, and runtime-flexible web framework for Rust
Documentation
#![cfg(test)]

use crate::serde_cookie;
use ::serde::{Deserialize, Serialize};
use std::borrow::Cow;

#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct Age(u8);

#[derive(Serialize, Deserialize, PartialEq, Debug)]
enum Gender {
    #[serde(rename = "male")]
    Male,
    #[serde(rename = "female")]
    Felmale,
    #[serde(rename = "other")]
    Other,
}

#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct UserInfo<'s> {
    name: Cow<'s, str>,
    age: Option<Age>,
    gender: Option<Gender>,
}

#[test]
fn simple_ascii_cookies() {
    assert_eq!(
        serde_cookie::from_str::<UserInfo>("name=ohkami; age=4").unwrap(),
        UserInfo {
            name: Cow::Borrowed("ohkami"),
            age: Some(Age(4)),
            gender: None,
        }
    );

    assert_eq!(
        serde_cookie::from_str::<UserInfo>("age=4; name=ohkami; gender=other").unwrap(),
        UserInfo {
            name: Cow::Borrowed("ohkami"),
            age: Some(Age(4)),
            gender: Some(Gender::Other),
        }
    );
}

#[test]
fn simple_ascii_cookies_with_double_quoted_values() {
    assert_eq!(
        serde_cookie::from_str::<UserInfo>(r#"name="ohkami"; age=4"#).unwrap(),
        UserInfo {
            name: Cow::Borrowed("ohkami"),
            age: Some(Age(4)),
            gender: None,
        }
    );

    assert_eq!(
        serde_cookie::from_str::<UserInfo>(r#"age=4; name="ohkami"; gender="other""#).unwrap(),
        UserInfo {
            name: Cow::Borrowed("ohkami"),
            age: Some(Age(4)),
            gender: Some(Gender::Other),
        }
    );
}

#[test]
fn nonascii_encoded_cookies() {
    assert_eq!(
        serde_cookie::from_str::<UserInfo>("name=%E7%8B%BC; age=4").unwrap(),
        UserInfo {
            name: Cow::Borrowed(""),
            age: Some(Age(4)),
            gender: None,
        }
    );

    assert_eq!(
        serde_cookie::from_str::<UserInfo>("age=4; name=\"%E7%8B%BC\"; gender=other").unwrap(),
        UserInfo {
            name: Cow::Borrowed(""),
            age: Some(Age(4)),
            gender: Some(Gender::Other),
        }
    );
}