rusty-hub/src/controllers.rs

72 lines
2.0 KiB
Rust
Raw Normal View History

2019-05-07 01:14:51 +02:00
use actions::{create_subscription, remove_subscription};
use actix_web::{http, HttpRequest, HttpResponse};
2019-04-25 00:37:29 +02:00
use askama::Template;
2019-05-07 01:14:51 +02:00
use url::form_urlencoded;
use utils::{validate_parsed_data, AppState};
2019-03-31 20:14:56 +02:00
#[derive(Template)]
#[template(path = "index.html")]
struct IndexView;
2019-04-25 00:37:29 +02:00
pub fn index(_req: HttpRequest<AppState>) -> HttpResponse {
HttpResponse::Ok()
.content_type("text/html")
.body(IndexView.render().unwrap())
}
2019-05-07 01:14:51 +02:00
pub fn hub(_req: HttpRequest<AppState>, params: String) -> HttpResponse {
let log = &_req.state().log;
info!(log, "Received Request");
debug!(log, "Content: {}", params);
let parsed_data = form_urlencoded::parse(params.as_bytes());
if !validate_parsed_data(parsed_data) {
return HttpResponse::Ok()
.status(http::StatusCode::from_u16(400).unwrap())
.finish();
}
2019-03-31 20:14:56 +02:00
HttpResponse::Ok().body("Hello World!")
}
#[cfg(test)]
mod tests {
use super::*;
2019-04-25 23:52:17 +02:00
use actix_web::actix::{SyncArbiter, System};
use actix_web::{http, test};
2019-04-25 23:52:17 +02:00
use diesel::prelude::*;
use utils::{setup_logging, DbExecutor};
#[test]
fn test_index() {
2019-04-25 23:52:17 +02:00
let _sys = System::new("rusty-hub-test");
let addr = SyncArbiter::start(1, || {
DbExecutor(SqliteConnection::establish("test.db").unwrap())
});
2019-04-25 00:37:29 +02:00
let resp = index(
test::TestRequest::with_state(AppState {
log: setup_logging(),
2019-04-25 23:52:17 +02:00
db: addr.clone(),
2019-04-25 00:37:29 +02:00
})
.finish(),
);
2019-03-31 20:14:56 +02:00
assert_eq!(resp.status(), http::StatusCode::OK);
}
#[test]
fn test_hub() {
2019-04-25 23:52:17 +02:00
let _sys = System::new("rusty-hub-test");
let addr = SyncArbiter::start(1, || {
DbExecutor(SqliteConnection::establish("test.db").unwrap())
});
2019-04-25 00:37:29 +02:00
let resp = hub(test::TestRequest::with_state(AppState {
log: setup_logging(),
2019-04-25 23:52:17 +02:00
db: addr.clone(),
2019-04-25 00:37:29 +02:00
})
.finish());
assert_eq!(resp.status(), http::StatusCode::OK);
}
}