Skip to content

Commit 7a68d53

Browse files
authored
Merge pull request #33 from SakaDream/reduce-db-pool-and-refactor-code
2 parents 4c926df + f18b93f commit 7a68d53

File tree

7 files changed

+87
-63
lines changed

7 files changed

+87
-63
lines changed

src/api/account_controller.rs

Lines changed: 64 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,18 @@ mod tests {
4646

4747
#[actix_rt::test]
4848
async fn test_signup_ok() {
49+
let pool = config::db::migrate_and_config_db(":memory:");
50+
4951
let mut app = test::init_service(
5052
App::new()
5153
.wrap(Cors::default()
52-
.send_wildcard()
53-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
54-
.allowed_header(http::header::CONTENT_TYPE)
55-
.max_age(3600))
56-
.data(config::db::migrate_and_config_db(":memory:"))
54+
.send_wildcard()
55+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
56+
.allowed_header(http::header::CONTENT_TYPE)
57+
.max_age(3600))
58+
.data(pool.clone())
5759
.wrap(actix_web::middleware::Logger::default())
58-
.wrap(crate::middleware::authen_middleware::Authentication)
60+
.wrap(crate::middleware::auth_middleware::Authentication)
5961
.wrap_fn(|req, srv| {
6062
srv.call(req).map(|res| res)
6163
})
@@ -77,16 +79,18 @@ mod tests {
7779

7880
#[actix_rt::test]
7981
async fn test_signup_duplicate_user() {
82+
let pool = config::db::migrate_and_config_db(":memory:");
83+
8084
let mut app = test::init_service(
8185
App::new()
82-
.wrap(Cors::default()
83-
.send_wildcard()
84-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
85-
.allowed_header(http::header::CONTENT_TYPE)
86+
.wrap(Cors::default()
87+
.send_wildcard()
88+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
89+
.allowed_header(http::header::CONTENT_TYPE)
8690
.max_age(3600))
87-
.data(config::db::migrate_and_config_db(":memory:"))
91+
.data(pool.clone())
8892
.wrap(actix_web::middleware::Logger::default())
89-
.wrap(crate::middleware::authen_middleware::Authentication)
93+
.wrap(crate::middleware::auth_middleware::Authentication)
9094
.wrap_fn(|req, srv| {
9195
srv.call(req).map(|res| res)
9296
})
@@ -115,16 +119,18 @@ mod tests {
115119

116120
#[actix_rt::test]
117121
async fn test_login_ok_with_username() {
122+
let pool = config::db::migrate_and_config_db(":memory:");
123+
118124
let mut app = test::init_service(
119125
App::new()
120126
.wrap(Cors::default()
121-
.send_wildcard()
122-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
123-
.allowed_header(http::header::CONTENT_TYPE)
124-
.max_age(3600))
125-
.data(config::db::migrate_and_config_db(":memory:"))
127+
.send_wildcard()
128+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
129+
.allowed_header(http::header::CONTENT_TYPE)
130+
.max_age(3600))
131+
.data(pool.clone())
126132
.wrap(actix_web::middleware::Logger::default())
127-
.wrap(crate::middleware::authen_middleware::Authentication)
133+
.wrap(crate::middleware::auth_middleware::Authentication)
128134
.wrap_fn(|req, srv| {
129135
srv.call(req).map(|res| res)
130136
})
@@ -150,16 +156,18 @@ mod tests {
150156

151157
#[actix_rt::test]
152158
async fn test_login_ok_with_email() {
159+
let pool = config::db::migrate_and_config_db(":memory:");
160+
153161
let mut app = test::init_service(
154162
App::new()
155163
.wrap(Cors::default()
156-
.send_wildcard()
157-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
158-
.allowed_header(http::header::CONTENT_TYPE)
159-
.max_age(3600))
160-
.data(config::db::migrate_and_config_db(":memory:"))
164+
.send_wildcard()
165+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
166+
.allowed_header(http::header::CONTENT_TYPE)
167+
.max_age(3600))
168+
.data(pool.clone())
161169
.wrap(actix_web::middleware::Logger::default())
162-
.wrap(crate::middleware::authen_middleware::Authentication)
170+
.wrap(crate::middleware::auth_middleware::Authentication)
163171
.wrap_fn(|req, srv| {
164172
srv.call(req).map(|res| res)
165173
})
@@ -185,16 +193,18 @@ mod tests {
185193

186194
#[actix_rt::test]
187195
async fn test_login_password_incorrect_with_username() {
196+
let pool = config::db::migrate_and_config_db(":memory:");
197+
188198
let mut app = test::init_service(
189199
App::new()
190200
.wrap(Cors::default()
191-
.send_wildcard()
192-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
193-
.allowed_header(http::header::CONTENT_TYPE)
194-
.max_age(3600))
195-
.data(config::db::migrate_and_config_db(":memory:"))
201+
.send_wildcard()
202+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
203+
.allowed_header(http::header::CONTENT_TYPE)
204+
.max_age(3600))
205+
.data(pool.clone())
196206
.wrap(actix_web::middleware::Logger::default())
197-
.wrap(crate::middleware::authen_middleware::Authentication)
207+
.wrap(crate::middleware::auth_middleware::Authentication)
198208
.wrap_fn(|req, srv| {
199209
srv.call(req).map(|res| res)
200210
})
@@ -220,16 +230,18 @@ mod tests {
220230

221231
#[actix_rt::test]
222232
async fn test_login_password_incorrect_with_email() {
233+
let pool = config::db::migrate_and_config_db(":memory:");
234+
223235
let mut app = test::init_service(
224236
App::new()
225237
.wrap(Cors::default()
226-
.send_wildcard()
227-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
228-
.allowed_header(http::header::CONTENT_TYPE)
229-
.max_age(3600))
230-
.data(config::db::migrate_and_config_db(":memory:"))
238+
.send_wildcard()
239+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
240+
.allowed_header(http::header::CONTENT_TYPE)
241+
.max_age(3600))
242+
.data(pool.clone())
231243
.wrap(actix_web::middleware::Logger::default())
232-
.wrap(crate::middleware::authen_middleware::Authentication)
244+
.wrap(crate::middleware::auth_middleware::Authentication)
233245
.wrap_fn(|req, srv| {
234246
srv.call(req).map(|res| res)
235247
})
@@ -255,16 +267,18 @@ mod tests {
255267

256268
#[actix_rt::test]
257269
async fn test_login_user_not_found_with_username() {
270+
let pool = config::db::migrate_and_config_db(":memory:");
271+
258272
let mut app = test::init_service(
259273
App::new()
260274
.wrap(Cors::default()
261-
.send_wildcard()
262-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
263-
.allowed_header(http::header::CONTENT_TYPE)
264-
.max_age(3600))
265-
.data(config::db::migrate_and_config_db(":memory:"))
275+
.send_wildcard()
276+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
277+
.allowed_header(http::header::CONTENT_TYPE)
278+
.max_age(3600))
279+
.data(pool.clone())
266280
.wrap(actix_web::middleware::Logger::default())
267-
.wrap(crate::middleware::authen_middleware::Authentication)
281+
.wrap(crate::middleware::auth_middleware::Authentication)
268282
.wrap_fn(|req, srv| {
269283
srv.call(req).map(|res| res)
270284
})
@@ -290,16 +304,18 @@ mod tests {
290304

291305
#[actix_rt::test]
292306
async fn test_login_user_not_found_with_email() {
307+
let pool = config::db::migrate_and_config_db(":memory:");
308+
293309
let mut app = test::init_service(
294310
App::new()
295311
.wrap(Cors::default()
296-
.send_wildcard()
297-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
298-
.allowed_header(http::header::CONTENT_TYPE)
299-
.max_age(3600))
300-
.data(config::db::migrate_and_config_db(":memory:"))
312+
.send_wildcard()
313+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
314+
.allowed_header(http::header::CONTENT_TYPE)
315+
.max_age(3600))
316+
.data(pool.clone())
301317
.wrap(actix_web::middleware::Logger::default())
302-
.wrap(crate::middleware::authen_middleware::Authentication)
318+
.wrap(crate::middleware::auth_middleware::Authentication)
303319
.wrap_fn(|req, srv| {
304320
srv.call(req).map(|res| res)
305321
})

src/api/ping_controller.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,18 @@ mod tests {
1616

1717
#[actix_rt::test]
1818
async fn test_ping_ok() {
19+
let pool = config::db::migrate_and_config_db(":memory:");
20+
1921
let mut app = test::init_service(
2022
App::new()
2123
.wrap(Cors::default()
22-
.send_wildcard()
23-
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
24-
.allowed_header(http::header::CONTENT_TYPE)
25-
.max_age(3600))
26-
.data(config::db::migrate_and_config_db(":memory:"))
24+
.send_wildcard()
25+
.allowed_methods(vec!["GET", "POST", "PUT", "DELETE"])
26+
.allowed_header(http::header::CONTENT_TYPE)
27+
.max_age(3600))
28+
.data(pool.clone())
2729
.wrap(actix_web::middleware::Logger::default())
28-
.wrap(crate::middleware::authen_middleware::Authentication)
30+
.wrap(crate::middleware::auth_middleware::Authentication)
2931
.wrap_fn(|req, srv| {
3032
srv.call(req).map(|res| res)
3133
})

src/config/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::api::*;
22
use actix_web::web;
33

44
pub fn config_services(cfg: &mut web::ServiceConfig) {
5-
info!("Configurating routes...");
5+
info!("Configuring routes...");
66
cfg.service(
77
web::scope("/api")
88
.service(ping_controller::ping)

src/config/db.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub type Pool = r2d2::Pool<ConnectionManager<Connection>>;
1818

1919
#[cfg(not(test))]
2020
pub fn migrate_and_config_db(url: &str) -> Pool {
21-
info!("Migrating and configurating database...");
21+
info!("Migrating and configuring database...");
2222
let manager = ConnectionManager::<Connection>::new(url);
2323
let pool = r2d2::Pool::builder().build(manager).expect("Failed to create pool.");
2424
embedded_migrations::run(&pool.get().expect("Failed to migrate."));
@@ -29,7 +29,7 @@ pub fn migrate_and_config_db(url: &str) -> Pool {
2929
#[cfg(test)]
3030
pub fn migrate_and_config_db(url: &str) -> Pool {
3131
use crate::diesel::RunQueryDsl;
32-
info!("Migrating and configurating database...");
32+
info!("Migrating and configuring database...");
3333
let manager = ConnectionManager::<Connection>::new(url);
3434
let pool = r2d2::Pool::builder().build(manager).expect("Failed to create pool.");
3535

src/main.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ async fn main() -> io::Result<()> {
5252
let app_url = format!("{}:{}", &app_host, &app_port);
5353
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL not found.");
5454

55+
let pool = config::db::migrate_and_config_db(&db_url);
56+
5557
HttpServer::new(move || {
5658
App::new()
5759
.wrap(Cors::default() // allowed_origin return access-control-allow-origin: * by default
@@ -61,9 +63,9 @@ async fn main() -> io::Result<()> {
6163
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
6264
.allowed_header(http::header::CONTENT_TYPE)
6365
.max_age(3600))
64-
.data(config::db::migrate_and_config_db(&db_url))
66+
.data(pool.clone())
6567
.wrap(actix_web::middleware::Logger::default())
66-
.wrap(crate::middleware::authen_middleware::Authentication)
68+
.wrap(crate::middleware::auth_middleware::Authentication)
6769
.wrap_fn(|req, srv| {
6870
srv.call(req).map(|res| res)
6971
})
@@ -84,6 +86,8 @@ mod tests {
8486

8587
#[actix_rt::test]
8688
async fn test_startup_ok() {
89+
let pool = config::db::migrate_and_config_db(":memory:");
90+
8791
HttpServer::new(move || {
8892
App::new()
8993
.wrap(Cors::default() // allowed_origin return access-control-allow-origin: * by default
@@ -93,9 +97,9 @@ mod tests {
9397
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
9498
.allowed_header(http::header::CONTENT_TYPE)
9599
.max_age(3600))
96-
.data(config::db::migrate_and_config_db(":memory:"))
100+
.data(pool.clone())
97101
.wrap(actix_web::middleware::Logger::default())
98-
.wrap(crate::middleware::authen_middleware::Authentication)
102+
.wrap(crate::middleware::auth_middleware::Authentication)
99103
.wrap_fn(|req, srv| {
100104
srv.call(req).map(|res| res)
101105
})
@@ -109,6 +113,8 @@ mod tests {
109113

110114
#[actix_rt::test]
111115
async fn test_startup_without_auth_middleware_ok() {
116+
let pool = config::db::migrate_and_config_db(":memory:");
117+
112118
HttpServer::new(move || {
113119
App::new()
114120
.wrap(Cors::default() // allowed_origin return access-control-allow-origin: * by default
@@ -118,7 +124,7 @@ mod tests {
118124
.allowed_headers(vec![http::header::AUTHORIZATION, http::header::ACCEPT])
119125
.allowed_header(http::header::CONTENT_TYPE)
120126
.max_age(3600))
121-
.data(config::db::migrate_and_config_db(":memory:"))
127+
.data(pool.clone())
122128
.wrap(actix_web::middleware::Logger::default())
123129
.wrap_fn(|req, srv| {
124130
srv.call(req).map(|res| res)
File renamed without changes.

src/middleware/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
pub mod authen_middleware;
1+
pub mod auth_middleware;

0 commit comments

Comments
 (0)