Skip to content

Commit d30dd1e

Browse files
committed
simplify unit tests
1 parent 87ac7a1 commit d30dd1e

File tree

1 file changed

+23
-70
lines changed
  • crates/handlers/src/upstream_oauth2

1 file changed

+23
-70
lines changed

crates/handlers/src/upstream_oauth2/link.rs

Lines changed: 23 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,7 @@ mod tests {
10131013
use mas_data_model::{
10141014
UpstreamOAuthAuthorizationSession, UpstreamOAuthLink, UpstreamOAuthProviderClaimsImports,
10151015
UpstreamOAuthProviderImportPreference, UpstreamOAuthProviderLocalpartPreference,
1016-
UpstreamOAuthProviderTokenAuthMethod, User,
1016+
UpstreamOAuthProviderTokenAuthMethod,
10171017
};
10181018
use mas_iana::jose::JsonWebSignatureAlg;
10191019
use mas_jose::jwt::{JsonWebSignatureHeader, Jwt};
@@ -1219,21 +1219,8 @@ mod tests {
12191219

12201220
#[sqlx::test(migrator = "mas_storage_pg::MIGRATOR")]
12211221
async fn test_link_existing_account(pool: PgPool) {
1222-
#[allow(clippy::disallowed_methods)]
1223-
let timestamp = chrono::Utc::now().timestamp_millis();
1224-
1225-
//suffix timestamp to generate unique test data
1226-
let existing_username = format!("{}{}", "john", timestamp);
1227-
let existing_email = format!("{}@{}", existing_username, "example.com");
1228-
1229-
//existing username matches oidc username
1230-
let oidc_username = existing_username.clone();
1231-
1232-
//oidc email is different from existing email
1233-
let oidc_email: String = format!("{}{}@{}", "any_email", timestamp, "example.com");
1234-
1235-
//generate unique subject
1236-
let subject = format!("{}+{}", "subject", timestamp);
1222+
let existing_username = "john";
1223+
let subject = "subject";
12371224

12381225
setup();
12391226
let state = TestState::from_pool(pool).await.unwrap();
@@ -1253,9 +1240,10 @@ mod tests {
12531240
..UpstreamOAuthProviderClaimsImports::default()
12541241
};
12551242

1243+
//`preferred_username` matches an existing user's username
12561244
let id_token_claims = serde_json::json!({
1257-
"preferred_username": oidc_username,
1258-
"email": oidc_email,
1245+
"preferred_username": existing_username,
1246+
"email": "any@example.com",
12591247
"email_verified": true,
12601248
});
12611249

@@ -1304,7 +1292,7 @@ mod tests {
13041292
&state.clock,
13051293
&mut repo,
13061294
&provider,
1307-
&subject,
1295+
subject,
13081296
&id_token.into_string(),
13091297
id_token_claims,
13101298
)
@@ -1319,15 +1307,11 @@ mod tests {
13191307
let cookie_jar = upstream_sessions.save(cookie_jar, &state.clock);
13201308
cookies.import(cookie_jar);
13211309

1322-
let user = create_user(
1323-
&mut rng,
1324-
&state.clock,
1325-
&mut repo,
1326-
existing_username.clone(),
1327-
existing_email.clone(),
1328-
)
1329-
.await
1330-
.unwrap();
1310+
let user = repo
1311+
.user()
1312+
.add(&mut rng, &state.clock, existing_username.to_owned())
1313+
.await
1314+
.unwrap();
13311315

13321316
repo.save().await.unwrap();
13331317

@@ -1364,7 +1348,7 @@ mod tests {
13641348

13651349
let link = repo
13661350
.upstream_oauth_link()
1367-
.find_by_subject(&provider, &subject)
1351+
.find_by_subject(&provider, subject)
13681352
.await
13691353
.unwrap()
13701354
.expect("link exists");
@@ -1374,20 +1358,7 @@ mod tests {
13741358

13751359
#[sqlx::test(migrator = "mas_storage_pg::MIGRATOR")]
13761360
async fn test_link_existing_account_when_not_allowed_by_default(pool: PgPool) {
1377-
#[allow(clippy::disallowed_methods)]
1378-
let timestamp = chrono::Utc::now().timestamp_millis();
1379-
1380-
//suffix timestamp to generate unique test data
1381-
let existing_username = format!("{}{}", "john", timestamp);
1382-
let existing_email = format!("{}@{}", existing_username, "example.com");
1383-
1384-
//existing username matches oidc username
1385-
let oidc_username = existing_username.clone();
1386-
1387-
//oidc email is different from existing email
1388-
let oidc_email: String = format!("{}{}@{}", "any_email", timestamp, "example.com");
1389-
1390-
let subject = format!("{}+{}", "subject", timestamp);
1361+
let existing_username = "john";
13911362

13921363
setup();
13931364
let state = TestState::from_pool(pool).await.unwrap();
@@ -1407,9 +1378,10 @@ mod tests {
14071378
..UpstreamOAuthProviderClaimsImports::default()
14081379
};
14091380

1381+
// `preferred_username` matches an existing user's username
14101382
let id_token_claims = serde_json::json!({
1411-
"preferred_username": oidc_username,
1412-
"email": oidc_email,
1383+
"preferred_username": existing_username,
1384+
"email": "any@example.com",
14131385
"email_verified": true,
14141386
});
14151387

@@ -1457,22 +1429,18 @@ mod tests {
14571429
&state.clock,
14581430
&mut repo,
14591431
&provider,
1460-
&subject,
1432+
"subject",
14611433
&id_token.into_string(),
14621434
id_token_claims,
14631435
)
14641436
.await
14651437
.unwrap();
14661438

1467-
let _user = create_user(
1468-
&mut rng,
1469-
&state.clock,
1470-
&mut repo,
1471-
existing_username.clone(),
1472-
existing_email.clone(),
1473-
)
1474-
.await
1475-
.unwrap();
1439+
// Provision an user
1440+
repo.user()
1441+
.add(&mut rng, &state.clock, existing_username.to_owned())
1442+
.await
1443+
.unwrap();
14761444

14771445
repo.save().await.unwrap();
14781446

@@ -1513,21 +1481,6 @@ mod tests {
15131481
Jwt::sign_with_rng(rng, header, payload, &signer)
15141482
}
15151483

1516-
async fn create_user(
1517-
rng: &mut ChaChaRng,
1518-
clock: &impl mas_storage::Clock,
1519-
repo: &mut Box<dyn Repository<RepositoryError> + Send + Sync + 'static>,
1520-
username: String,
1521-
email: String,
1522-
) -> Result<User, anyhow::Error> {
1523-
//create a user with an email
1524-
let user = repo.user().add(rng, clock, username).await.unwrap();
1525-
1526-
let _user_email = repo.user_email().add(rng, clock, &user, email).await;
1527-
1528-
Ok(user)
1529-
}
1530-
15311484
async fn add_linked_upstream_session(
15321485
rng: &mut ChaChaRng,
15331486
clock: &impl mas_storage::Clock,

0 commit comments

Comments
 (0)