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
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
|
pub mod actix_web_test_utils;
|
||||||
pub mod bdd;
|
pub mod bdd;
|
||||||
|
|
Loading…
Reference in a new issue