rocket-api-base 0.2.0

Base utilities for secure API construction with Rocket.rs
Documentation
use rocket_api_base::{BaseContent, BaseResponse, NoContent};
use serde::Serialize;
use serde_json::{json, Value};

use std::fs::File;
use std::io::Read;

const SERIALIZE_FILE: &str = "tests/base_response_serialize.json";
const SERIALIZE_NO_CONTENT_FILE: &str = "tests/base_response_serialize_no_content.json";

#[derive(Serialize)]
struct Person {
    age: u32,
    name: String,
    married: bool,
}

fn file_to_value(file_name: &'static str) -> Value {
    let mut file = File::open(file_name).unwrap();
    let mut expected_string = String::new();
    file.read_to_string(&mut expected_string).unwrap();
    serde_json::from_str(&expected_string).unwrap()
}

#[test]
fn basic_response_serialize() {
    let expected = file_to_value(SERIALIZE_FILE);
    let serialized = json!(BaseResponse {
        result: "ok".into(),
        error_code: 0,
        error_message: "".into(),
        content: BaseContent::Some(vec![Person {
            age: 19,
            name: "Pau".into(),
            married: false
        }]),
    });
    assert_eq!(expected, serialized);
}

#[test]
fn basic_response_serialize_no_content() {
    let expected = file_to_value(SERIALIZE_NO_CONTENT_FILE);
    let serialized = json!(BaseResponse::<NoContent> {
        result: "ok".into(),
        error_code: 0,
        error_message: "".into(),
        content: BaseContent::None,
    });
    assert_eq!(expected, serialized);
}