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
16pub fn from_path<P>(path: P) -> Result<Spec, error::Error> where P: AsRef<Path> {
18 from_reader(File::open(path)?)
19}
20pub 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}