The field added in 8a758754 was never propagated to the shared test
fixture, so every accounts-service test binary stopped compiling.
62 lines
2.1 KiB
Rust
62 lines
2.1 KiB
Rust
#![allow(dead_code, unused_imports)] // each test binary uses a different subset
|
|
|
|
use accounts_service::config::Config;
|
|
use axum_test::TestServer;
|
|
use uuid::Uuid;
|
|
|
|
// `::` — the workspace crate, not this module (which every test binary
|
|
// mounts as `mod common;`).
|
|
pub use ::common::internal::{ACCOUNT_ID_HEADER, INTERNAL_KEY_HEADER};
|
|
|
|
pub async fn test_pool() -> sqlx::PgPool {
|
|
let url = std::env::var("DATABASE_URL")
|
|
.unwrap_or_else(|_| "postgres://lovisual:lovisual@localhost:5432/accounts_db".into());
|
|
let pool = sqlx::PgPool::connect(&url)
|
|
.await
|
|
.expect("connect to test database");
|
|
sqlx::migrate!("./migrations")
|
|
.run(&pool)
|
|
.await
|
|
.expect("run migrations");
|
|
pool
|
|
}
|
|
|
|
pub fn test_config() -> Config {
|
|
Config {
|
|
database_url: String::new(),
|
|
jwt_secret: "test-secret-test-secret-test-secret!".into(),
|
|
internal_key: TEST_INTERNAL_KEY.into(),
|
|
port: 0,
|
|
grpc_port: 0,
|
|
s3_endpoint: "http://localhost:9000".into(),
|
|
s3_bucket: "lovisual-avatars-test".into(),
|
|
s3_access_key: "minioadmin".into(),
|
|
s3_secret_key: "minioadmin".into(),
|
|
cookie_secure: false,
|
|
avatar_public_base_url: String::new(),
|
|
}
|
|
}
|
|
|
|
pub const TEST_INTERNAL_KEY: &str = "internal-key-internal-key-internal!!";
|
|
|
|
/// A server that behaves like it sits behind the gateway.
|
|
pub fn test_server(app: axum::Router) -> TestServer {
|
|
let mut server = TestServer::new(app);
|
|
server.add_header(INTERNAL_KEY_HEADER, TEST_INTERNAL_KEY);
|
|
server
|
|
}
|
|
|
|
/// Registers a fresh random account; returns its id and email.
|
|
pub async fn register_account(server: &TestServer) -> (Uuid, String) {
|
|
let email = format!("t-{}@example.com", Uuid::new_v4());
|
|
let res = server
|
|
.post("/auth/register")
|
|
.json(&serde_json::json!({ "email": email, "password": "correct-horse-battery-staple", "nick": "Tester" }))
|
|
.await;
|
|
res.assert_status(axum::http::StatusCode::CREATED);
|
|
let body: serde_json::Value = res.json();
|
|
(
|
|
Uuid::parse_str(body["id"].as_str().unwrap()).unwrap(),
|
|
email,
|
|
)
|
|
}
|