Skip to content

Commit

Permalink
Add integration tests for the diesel-store
Browse files Browse the repository at this point in the history
  • Loading branch information
weiznich committed Oct 11, 2023
1 parent eb93ff8 commit fc77e18
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,18 @@ jobs:
features: moka-store,sqlite-store
docker: false

- store: mysql_store
features: __diesel_mysql
docker: true

- store: postgres_store
features: __diesel_postgres
docker: true

- store: diesel_store
features: diesel-store
docker: false

steps:
- uses: actions/checkout@v4
- run: |
Expand Down
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ moka-store = ["moka"]
tokio-rt = ["tokio/rt", "tokio/time"]
diesel-store = ["dep:diesel", "tokio/rt", "rmp-serde"]

__diesel_postgres = ["diesel-store", "diesel/postgres"]
__diesel_mysql = ["diesel-store", "diesel/mysql"]

[dependencies]
async-trait = "0.1.73"
dashmap = "5.5.3"
Expand Down
87 changes: 87 additions & 0 deletions tests/integration-tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,93 @@ mod mysql_store_tests {
route_tests!(app);
}

#[cfg(all(test, feature = "axum-core", feature = "diesel-store"))]
mod diesel_sqlite_store_tests {
use axum::Router;
use diesel::prelude::*;
use diesel::r2d2::{ConnectionManager, Pool};
use tower_sessions::diesel_store::DieselStore;
use tower_sessions::SessionManagerLayer;

use crate::common::build_app;

async fn app(max_age: Option<Duration>) -> Router {
let pool = Pool::builder()
.max_size(1)
.build(ConnectionManager::<SqliteConnection>::new(":memory:"))
.unwrap();
let session_store = DieselStore::new(pool);
session_store.migrate().await.unwrap();
let session_manager = SessionManagerLayer::new(session_store).with_secure(true);

build_app(session_manager, max_age)
}

route_tests!(app);
}

#[cfg(all(
test,
feature = "axum-core",
feature = "diesel-store",
feature = "__diesel_postgres"
))]
mod diesel_pg_store_tests {
use axum::Router;
use diesel::prelude::*;
use diesel::r2d2::{ConnectionManager, Pool};
use tower_sessions::diesel_store::DieselStore;
use tower_sessions::SessionManagerLayer;

use crate::common::build_app;

async fn app(max_age: Option<Duration>) -> Router {
let database_url = std::option_env!("POSTGRES_URL").unwrap();
let pool = Pool::builder()
.max_size(1)
.build(ConnectionManager::<PgConnection>::new(database_url))
.unwrap();
let session_store = DieselStore::new(pool);
session_store.migrate().await.unwrap();
let session_manager = SessionManagerLayer::new(session_store).with_secure(true);

build_app(session_manager, max_age)
}

route_tests!(app);
}

#[cfg(all(
test,
feature = "axum-core",
feature = "diesel-store",
feature = "__diesel_mysql"
))]
mod diesel_mysql_store_tests {
use axum::Router;
use diesel::prelude::*;
use diesel::r2d2::{ConnectionManager, Pool};
use tower_sessions::diesel_store::DieselStore;
use tower_sessions::SessionManagerLayer;

use crate::common::build_app;

async fn app(max_age: Option<Duration>) -> Router {
let database_url = std::option_env!("MYSQL_URL").unwrap();
let pool = Pool::builder()
.max_size(1)
.build(ConnectionManager::<MysqlConnection>::new(database_url))
.unwrap();
let session_store = DieselStore::new(pool);
session_store.migrate().await.unwrap();
let session_manager = SessionManagerLayer::new(session_store).with_secure(true);

build_app(session_manager, max_age)
}

route_tests!(app);
}

#[cfg(all(test, feature = "axum-core", feature = "mongodb-store"))]
mod mongodb_store_tests {
use axum::Router;
Expand Down

0 comments on commit fc77e18

Please sign in to comment.