feat: test helpers for actix web harness
This commit is contained in:
parent
17a7e58f44
commit
a36684d9ae
2 changed files with 58 additions and 0 deletions
57
src/tests/actix_web_test_utils.rs
Normal file
57
src/tests/actix_web_test_utils.rs
Normal file
|
@ -0,0 +1,57 @@
|
|||
// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::db::{migrate::*, sqlx_postgres::*};
|
||||
use crate::settings::Settings;
|
||||
use actix_web::cookie::Key;
|
||||
use actix_web::dev::Service;
|
||||
|
||||
pub async fn init_db() -> (Settings, Key, Postgres) {
|
||||
let settings = crate::settings::tests::get_settings().await;
|
||||
settings.create_db().await;
|
||||
let secret_key = Key::from(settings.server.cookie_secret.as_bytes());
|
||||
let db = crate::db::sqlx_postgres::Postgres::init(&settings.database.url).await;
|
||||
db.migrate().await;
|
||||
(settings, secret_key, db)
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! get_test_app {
|
||||
($settings:ident, $secret_key:ident, $db:ident) => {
|
||||
test::init_service(
|
||||
actix_web::App::new()
|
||||
.wrap(actix_identity::IdentityMiddleware::default())
|
||||
.wrap(tracing_actix_web::TracingLogger::default())
|
||||
.wrap(actix_web::middleware::Compress::default())
|
||||
.app_data(actix_web::web::Data::new($settings.clone()))
|
||||
.wrap(actix_session::SessionMiddleware::new(
|
||||
actix_session::storage::CookieSessionStore::default(),
|
||||
$secret_key.clone(),
|
||||
))
|
||||
.wrap(
|
||||
actix_web::middleware::DefaultHeaders::new()
|
||||
.add(("Permissions-Policy", "interest-cohort=()")),
|
||||
)
|
||||
.configure(crate::utils::load_adapters::load_adapters(
|
||||
$db.pool.clone(),
|
||||
$settings.clone(),
|
||||
)),
|
||||
)
|
||||
.await
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn page_test_runner(path: &str) {
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::test;
|
||||
|
||||
let (settings, secret_key, db) = init_db().await;
|
||||
let app = get_test_app!(settings, secret_key, db);
|
||||
|
||||
let req = test::TestRequest::get().uri(path).to_request();
|
||||
let resp = test::call_service(&app, req).await;
|
||||
let status = resp.status();
|
||||
assert_eq!(status, StatusCode::OK);
|
||||
}
|
|
@ -2,4 +2,5 @@
|
|||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
pub mod actix_web_test_utils;
|
||||
pub mod bdd;
|
||||
|
|
Loading…
Reference in a new issue