extern crate spaceapi_server;
use std::net::Ipv4Addr;
use std::net::TcpStream;
use std::io::ErrorKind;
use spaceapi_server::{SpaceapiServer, SpaceapiServerBuilder};
use spaceapi_server::api;
fn get_status() -> api::Status {
api::StatusBuilder::new("ourspace")
.logo("https://example.com/logo.png")
.url("https://example.com/")
.location(api::Location {
address: Some("Street 1, Zürich, Switzerland".into()),
lat: 47.123,
lon: 8.88,
})
.contact(api::Contact {
irc: None,
twitter: None,
foursquare: None,
email: Some("hi@example.com".into()),
ml: None,
phone: None,
jabber: None,
issue_mail: None,
identica: None,
facebook: None,
google: None,
keymasters: None,
sip: None,
})
.add_issue_report_channel("email")
.add_issue_report_channel("twitter")
.build()
.unwrap()
}
fn get_server(status: api::Status) -> SpaceapiServer {
SpaceapiServerBuilder::new(status)
.redis_connection_info("redis://127.0.0.1/")
.build()
.unwrap()
}
#[test]
fn server_starts() {
let ip = Ipv4Addr::new(127, 0, 0, 1);
let port = 3344;
let status = get_status();
let connect_result = TcpStream::connect((ip, port));
assert!(connect_result.is_err());
assert_eq!(connect_result.unwrap_err().kind(), ErrorKind::ConnectionRefused);
let server = get_server(status);
let mut listening = server.serve((ip, port)).unwrap();
let connect_result = TcpStream::connect((ip, port));
assert!(connect_result.is_ok());
listening.close().unwrap();
}