1 changed files with 0 additions and 124 deletions
@ -1,124 +0,0 @@ |
|||||||
use super::*; |
|
||||||
use rocket::local::Client; |
|
||||||
use serde_json::{json, Value}; |
|
||||||
|
|
||||||
fn setup_client() -> Client { |
|
||||||
Database::try_remove("localhost"); |
|
||||||
let rocket = setup_rocket(); |
|
||||||
Client::new(rocket).expect("valid rocket instance") |
|
||||||
} |
|
||||||
|
|
||||||
#[tokio::test] |
|
||||||
async fn register_login() { |
|
||||||
let client = setup_client(); |
|
||||||
let mut response = client |
|
||||||
.post("/_matrix/client/r0/register?kind=user") |
|
||||||
.body(registration_init()) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
let body = serde_json::from_str::<Value>(&response.body_string().await.unwrap()).unwrap(); |
|
||||||
|
|
||||||
assert_eq!(response.status().code, 401); |
|
||||||
assert!(dbg!(&body["flows"]).as_array().unwrap().len() > 0); |
|
||||||
assert!(body["session"].as_str().unwrap().len() > 0); |
|
||||||
} |
|
||||||
|
|
||||||
#[tokio::test] |
|
||||||
async fn login_after_register_correct_password() { |
|
||||||
let client = setup_client(); |
|
||||||
let mut response = client |
|
||||||
.post("/_matrix/client/r0/register?kind=user") |
|
||||||
.body(registration_init()) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
let body = serde_json::from_str::<Value>(&response.body_string().await.unwrap()).unwrap(); |
|
||||||
let session = body["session"].clone(); |
|
||||||
|
|
||||||
let response = client |
|
||||||
.post("/_matrix/client/r0/register?kind=user") |
|
||||||
.body(registration(session.as_str().unwrap())) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
assert_eq!(response.status().code, 200); |
|
||||||
|
|
||||||
let login_response = client |
|
||||||
.post("/_matrix/client/r0/login") |
|
||||||
.body(login_with_password("ilovebananas")) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
assert_eq!(login_response.status().code, 200); |
|
||||||
} |
|
||||||
|
|
||||||
#[tokio::test] |
|
||||||
async fn login_after_register_incorrect_password() { |
|
||||||
let client = setup_client(); |
|
||||||
let mut response = client |
|
||||||
.post("/_matrix/client/r0/register?kind=user") |
|
||||||
.body(registration_init()) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
let body = serde_json::from_str::<Value>(&response.body_string().await.unwrap()).unwrap(); |
|
||||||
let session = body["session"].clone(); |
|
||||||
|
|
||||||
let response = client |
|
||||||
.post("/_matrix/client/r0/register?kind=user") |
|
||||||
.body(registration(session.as_str().unwrap())) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
assert_eq!(response.status().code, 200); |
|
||||||
|
|
||||||
let mut login_response = client |
|
||||||
.post("/_matrix/client/r0/login") |
|
||||||
.body(login_with_password("idontlovebananas")) |
|
||||||
.dispatch() |
|
||||||
.await; |
|
||||||
let body = serde_json::from_str::<Value>(&login_response.body_string().await.unwrap()).unwrap(); |
|
||||||
assert_eq!( |
|
||||||
body.as_object() |
|
||||||
.unwrap() |
|
||||||
.get("errcode") |
|
||||||
.unwrap() |
|
||||||
.as_str() |
|
||||||
.unwrap(), |
|
||||||
"M_FORBIDDEN" |
|
||||||
); |
|
||||||
assert_eq!(login_response.status().code, 403); |
|
||||||
} |
|
||||||
|
|
||||||
fn registration_init() -> &'static str { |
|
||||||
r#"{ |
|
||||||
"username": "cheeky_monkey", |
|
||||||
"password": "ilovebananas", |
|
||||||
"device_id": "GHTYAJCE", |
|
||||||
"initial_device_display_name": "Jungle Phone", |
|
||||||
"inhibit_login": false |
|
||||||
}"# |
|
||||||
} |
|
||||||
|
|
||||||
fn registration(session: &str) -> String { |
|
||||||
json!({ |
|
||||||
"auth": { |
|
||||||
"session": session, |
|
||||||
"type": "m.login.dummy" |
|
||||||
}, |
|
||||||
"username": "cheeky_monkey", |
|
||||||
"password": "ilovebananas", |
|
||||||
"device_id": "GHTYAJCE", |
|
||||||
"initial_device_display_name": "Jungle Phone", |
|
||||||
"inhibit_login": false |
|
||||||
}) |
|
||||||
.to_string() |
|
||||||
} |
|
||||||
|
|
||||||
fn login_with_password(password: &str) -> String { |
|
||||||
json!({ |
|
||||||
"type": "m.login.password", |
|
||||||
"identifier": { |
|
||||||
"type": "m.id.user", |
|
||||||
"user": "cheeky_monkey" |
|
||||||
}, |
|
||||||
"password": password, |
|
||||||
"initial_device_display_name": "Jungle Phone" |
|
||||||
}) |
|
||||||
.to_string() |
|
||||||
} |
|
||||||
Loading…
Reference in new issue