Skip to content

Commit 53e0533

Browse files
committed
backend: let get_test_ uuid return a result to prepare for changes needed to test delete_user route.
1 parent 0e64fd0 commit 53e0533

File tree

11 files changed

+38
-31
lines changed

11 files changed

+38
-31
lines changed

backend/src/routes/auth/recovery.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ mod tests {
369369
let pool = test_connection_pool();
370370
let mut conn = pool.get().unwrap();
371371
let res: Vec<AllowedUser> = allowed_users
372-
.filter(user_id.eq(get_test_uuid(&user.mail)))
372+
.filter(user_id.eq(get_test_uuid(&user.mail).unwrap()))
373373
.filter(valid.eq(true))
374374
.select(AllowedUser::as_select())
375375
.load(&mut conn)

backend/src/routes/auth/start_recovery.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ pub mod tests {
181181
let resp = test::call_service(&app, req).await;
182182
assert_eq!(resp.status(), 200);
183183

184-
let uid = get_test_uuid(&mail);
184+
let uid = get_test_uuid(&mail).unwrap();
185185
let pool = test_connection_pool();
186186
let mut conn = pool.get().unwrap();
187187
let token: RecoveryToken = recovery_tokens
@@ -208,7 +208,7 @@ pub mod tests {
208208
let resp = test::call_service(&app, req).await;
209209
assert_eq!(resp.status(), 200);
210210

211-
let uid = get_test_uuid(&mail);
211+
let uid = get_test_uuid(&mail).unwrap();
212212
let pool = test_connection_pool();
213213
let mut conn = pool.get().unwrap();
214214
let token: RecoveryToken = recovery_tokens

backend/src/routes/charger/add.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ pub(crate) mod tests {
554554
.to_request();
555555

556556
let resp = test::call_service(&app, req).await;
557-
remove_test_keys(&mail);
557+
let _ = remove_test_keys(&mail);
558558
remove_allowed_test_users(cid);
559559
remove_test_charger(cid);
560560
println!("{:?}", resp);

backend/src/routes/charger/remove.rs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub struct DeleteChargerSchema {
3434
charger: i32,
3535
}
3636

37-
async fn delete_all_keys(cid: i32, state: &web::Data<AppState>) -> Result<(), actix_web::Error> {
37+
pub async fn delete_all_keys(cid: i32, state: &web::Data<AppState>) -> Result<(), actix_web::Error> {
3838
use db_connector::schema::wg_keys::dsl::*;
3939

4040
let mut conn = get_connection(state)?;
@@ -49,7 +49,7 @@ async fn delete_all_keys(cid: i32, state: &web::Data<AppState>) -> Result<(), ac
4949
Ok(())
5050
}
5151

52-
async fn delete_all_allowed_users(
52+
pub async fn delete_all_allowed_users(
5353
cid: i32,
5454
state: &web::Data<AppState>,
5555
) -> Result<(), actix_web::Error> {
@@ -67,6 +67,20 @@ async fn delete_all_allowed_users(
6767
Ok(())
6868
}
6969

70+
pub async fn delete_charger(charger: i32, state: &web::Data<AppState>) -> actix_web::Result<()> {
71+
use db_connector::schema::chargers::dsl::*;
72+
let mut conn = get_connection(&state)?;
73+
web_block_unpacked(move || {
74+
match diesel::delete(chargers.filter(id.eq(charger))).execute(&mut conn) {
75+
Ok(_) => Ok(()),
76+
Err(_err) => Err(Error::InternalError),
77+
}
78+
})
79+
.await?;
80+
81+
Ok(())
82+
}
83+
7084
#[utoipa::path(
7185
context_path = "/charger",
7286
request_body = DeleteChargerSchema,
@@ -84,23 +98,14 @@ pub async fn remove(
8498
uid: crate::models::uuid::Uuid,
8599
data: web::Json<DeleteChargerSchema>,
86100
) -> Result<impl Responder, actix_web::Error> {
87-
use db_connector::schema::chargers::dsl::*;
88101

89102
if !charger_belongs_to_user(&state, uid.clone().into(), data.charger.clone()).await? {
90103
return Err(Error::UserIsNotOwner.into());
91104
}
92105

93106
delete_all_keys(data.charger.clone(), &state).await?;
94107
delete_all_allowed_users(data.charger.clone(), &state).await?;
95-
96-
let mut conn = get_connection(&state)?;
97-
web_block_unpacked(move || {
98-
match diesel::delete(chargers.filter(id.eq(data.charger.clone()))).execute(&mut conn) {
99-
Ok(_) => Ok(()),
100-
Err(_err) => Err(Error::InternalError),
101-
}
102-
})
103-
.await?;
108+
delete_charger(data.charger, &state).await?;
104109

105110
Ok(HttpResponse::Ok())
106111
}
@@ -124,16 +129,17 @@ pub(crate) mod tests {
124129
tests::configure,
125130
};
126131

127-
pub fn remove_test_keys(mail: &str) {
132+
pub fn remove_test_keys(mail: &str) -> anyhow::Result<()> {
128133
use db_connector::schema::wg_keys::dsl::*;
129134

130-
let uid = get_test_uuid(mail);
135+
let uid = get_test_uuid(mail)?;
131136

132137
let pool = test_connection_pool();
133138
let mut conn = pool.get().unwrap();
134139
diesel::delete(wg_keys.filter(user_id.eq(uid)))
135-
.execute(&mut conn)
136-
.unwrap();
140+
.execute(&mut conn)?;
141+
142+
Ok(())
137143
}
138144

139145
pub fn remove_allowed_test_users(cid: i32) {

backend/src/routes/management.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,6 @@ mod tests {
378378
.unwrap();
379379
user.user_id
380380
};
381-
assert_eq!(get_test_uuid(&user.mail), user_id);
381+
assert_eq!(get_test_uuid(&user.mail).unwrap(), user_id);
382382
}
383383
}

backend/src/routes/user/logout.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub async fn logout(
8686
.body(""))
8787
}
8888

89-
async fn delete_all_refresh_tokens(
89+
pub async fn delete_all_refresh_tokens(
9090
uid: uuid::Uuid,
9191
state: &web::Data<AppState>,
9292
) -> actix_web::Result<()> {

backend/src/routes/user/mod.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub mod logout;
2222
pub mod me;
2323
pub mod update_password;
2424
pub mod update_user;
25+
pub mod delete;
2526

2627
use crate::{
2728
error::Error,
@@ -42,6 +43,7 @@ pub fn configure(cfg: &mut ServiceConfig) {
4243
.service(update_password::update_password)
4344
.service(get_secret::get_secret)
4445
.service(logout::logout)
46+
.service(delete::delete_user)
4547
.service(me::me);
4648
cfg.service(scope);
4749
}
@@ -155,18 +157,17 @@ pub mod tests {
155157
};
156158

157159
// Get the uuid for an test user.
158-
pub fn get_test_uuid(mail: &str) -> uuid::Uuid {
160+
pub fn get_test_uuid(mail: &str) -> Result<uuid::Uuid, anyhow::Error> {
159161
use db_connector::schema::users::dsl::*;
160162

161163
let pool = test_connection_pool();
162164
let mut conn = pool.get().unwrap();
163165
let user: User = users
164166
.filter(email.eq(mail))
165167
.select(User::as_select())
166-
.get_result(&mut conn)
167-
.unwrap();
168+
.get_result(&mut conn)?;
168169

169-
user.id
170+
Ok(user.id)
170171
}
171172

172173
/**
@@ -333,7 +334,7 @@ pub mod tests {
333334
impl Drop for TestUser {
334335
fn drop(&mut self) {
335336
while let Some(charger) = self.charger.pop() {
336-
remove_test_keys(&self.mail);
337+
let _ = remove_test_keys(&self.mail);
337338
remove_allowed_test_users(charger);
338339
remove_test_charger(charger);
339340
}

db_connector/src/models/allowed_users.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use diesel::prelude::*;
22
use super::{users::User, chargers::Charger};
33

4-
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable, Associations)]
4+
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable, Associations, PartialEq)]
55
#[diesel(belongs_to(User))]
66
#[diesel(belongs_to(Charger))]
77
#[diesel(table_name = crate::schema::allowed_users)]

db_connector/src/models/chargers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use diesel::{associations::Identifiable, deserialize::Queryable, prelude::Insertable, query_builder::AsChangeset, Selectable};
22
use ipnetwork::IpNetwork;
33

4-
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable, AsChangeset)]
4+
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable, AsChangeset, PartialEq)]
55
#[diesel(table_name = crate::schema::chargers)]
66
#[diesel(check_for_backend(diesel::pg::Pg))]
77
pub struct Charger {

db_connector/src/models/users.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use diesel::{associations::Identifiable, deserialize::Queryable, prelude::Insertable, Selectable};
22

3-
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable)]
3+
#[derive(Debug, Clone, Queryable, Selectable, Insertable, Identifiable, PartialEq)]
44
#[diesel(table_name = crate::schema::users)]
55
#[diesel(check_for_backend(diesel::pg::Pg))]
66
pub struct User {

0 commit comments

Comments
 (0)