Provision users on the fake homeserver in tests
Because we now provision devices synchronously, we need to update the tests so that the users exist on the fake homeserver.
This commit is contained in:
@@ -438,6 +438,7 @@ async fn user_password_login(
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use hyper::Request;
|
||||
use mas_matrix::{HomeserverConnection, ProvisionRequest};
|
||||
use rand::distributions::{Alphanumeric, DistString};
|
||||
use sqlx::PgPool;
|
||||
|
||||
@@ -540,6 +541,13 @@ mod tests {
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mxid = state.homeserver_connection.mxid(&user.username);
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let (version, hashed_password) = state
|
||||
.password_manager
|
||||
.hash(
|
||||
@@ -672,6 +680,13 @@ mod tests {
|
||||
.unwrap();
|
||||
repo.save().await.unwrap();
|
||||
|
||||
let mxid = state.homeserver_connection.mxid(&user.username);
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// First try with an invalid token
|
||||
let request = Request::post("/_matrix/client/v3/login").json(serde_json::json!({
|
||||
"type": "m.login.token",
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
use axum::http::Request;
|
||||
use hyper::StatusCode;
|
||||
use mas_data_model::{AccessToken, Client, TokenType, User};
|
||||
use mas_matrix::{HomeserverConnection, ProvisionRequest};
|
||||
use mas_router::SimpleRoute;
|
||||
use mas_storage::{
|
||||
oauth2::{OAuth2AccessTokenRepository, OAuth2ClientRepository},
|
||||
@@ -517,7 +518,7 @@ async fn test_oauth2_client_credentials(pool: PgPool) {
|
||||
response.assert_status(StatusCode::OK);
|
||||
let response: GraphQLResponse = response.json();
|
||||
assert!(response.errors.is_empty(), "{:?}", response.errors);
|
||||
let user_id = &response.data["addUser"]["user"]["id"];
|
||||
let user_id = response.data["addUser"]["user"]["id"].as_str().unwrap();
|
||||
|
||||
assert_eq!(
|
||||
response.data,
|
||||
@@ -531,6 +532,16 @@ async fn test_oauth2_client_credentials(pool: PgPool) {
|
||||
})
|
||||
);
|
||||
|
||||
// XXX: we don't run the task worker here, so even though the addUser mutation
|
||||
// should have scheduled a job to provision the user, it won't run in the test,
|
||||
// so we need to do it manually
|
||||
let mxid = state.homeserver_connection.mxid("alice");
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(mxid, user_id))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// We should now be able to create an arbitrary access token for the user
|
||||
let request = Request::post("/graphql")
|
||||
.bearer(&access_token)
|
||||
|
||||
@@ -461,6 +461,7 @@ mod tests {
|
||||
use hyper::{Request, StatusCode};
|
||||
use mas_data_model::{AccessToken, RefreshToken};
|
||||
use mas_iana::oauth::OAuthTokenTypeHint;
|
||||
use mas_matrix::{HomeserverConnection, ProvisionRequest};
|
||||
use mas_router::{OAuth2Introspection, OAuth2RegistrationEndpoint, SimpleRoute};
|
||||
use mas_storage::Clock;
|
||||
use oauth2_types::{
|
||||
@@ -518,6 +519,13 @@ mod tests {
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mxid = state.homeserver_connection.mxid(&user.username);
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let client = repo
|
||||
.oauth2_client()
|
||||
.find_by_client_id(&client_id)
|
||||
@@ -703,6 +711,13 @@ mod tests {
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mxid = state.homeserver_connection.mxid(&user.username);
|
||||
state
|
||||
.homeserver_connection
|
||||
.provision_user(&ProvisionRequest::new(mxid, &user.sub))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let (version, hashed_password) = state
|
||||
.password_manager
|
||||
.hash(&mut state.rng(), Zeroizing::new(b"password".to_vec()))
|
||||
|
||||
Reference in New Issue
Block a user