sw4rm_rs/
lib.rs

1pub mod reference;
2pub mod spec;
3pub mod error;
4
5pub mod shared;
6pub mod openapi_v2;
7pub mod openapi_v3_0;
8
9pub use reference::*;
10pub use spec::*;
11
12use std::{
13    fs::File, io::Read, path::Path,
14};
15
16/// Open a path and read in the file, converting it to an OpenAPI Spec
17pub fn from_path<P>(path: P) -> Result<Spec, error::Error> where P: AsRef<Path> {
18    from_reader(File::open(path)?)
19}
20/// Open any reader and read the contents, converting it to an OpenAPI Spec
21pub fn from_reader<R>(reader: R) -> Result<Spec, error::Error> where R: Read {
22    Ok(serde_yaml::from_reader(reader)?)
23}
24
25#[cfg(test)]
26mod tests {
27    use crate::{
28        reference::*,
29        shared::{
30            Schema,
31            Parameter,
32        },
33    };
34
35    #[test]
36    fn deserialize_swagger_v2_yaml() {
37        let spec = super::from_path("./resources/swagger_2_0.yaml").unwrap();
38        let reference: RefOr<Parameter> = RefOr::Reference { reference_path: "#/parameters/nested_response".to_string() };
39        _ = reference.resolve(&spec).unwrap();
40    }
41    #[test]
42    fn deserialize_swagger_v2_json() {
43        let spec = super::from_path("./resources/riot-swaggerspec-2.0.json").unwrap();
44        let reference: RefOr<Schema> = RefOr::Reference { reference_path: "#/definitions/account-v1.AccountDto".to_string() };
45        _ = reference.resolve(&spec).unwrap();
46    }
47    #[test]
48    fn deserialize_openapi_v3_yaml() {
49        let spec = super::from_path("./resources/openapi_3_0.yaml").unwrap();
50        let reference: RefOr<Schema> = RefOr::Reference { reference_path: "#/components/schemas/Pets".to_string() };
51        _ = reference.resolve(&spec).unwrap();
52    }
53    #[test]
54    fn deserialize_openapi_v3_json() {
55        let spec = super::from_path("./resources/riot-openapi-3.0.0.json").unwrap();
56        let reference: RefOr<Schema> = RefOr::Reference { reference_path: "#/components/schemas/account-v1.AccountDto".to_string() };
57        _ = reference.resolve(&spec).unwrap();
58    }
59}