Skip to content

Commit 1fda8c1

Browse files
authored
Merge pull request #9665 from Turbo87/typosquat-tests
typosquat/test_util: Simplify `Faker`
2 parents e3a23e7 + 046a9d8 commit 1fda8c1

File tree

3 files changed

+25
-46
lines changed

3 files changed

+25
-46
lines changed

src/typosquat/database.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ impl From<crate::models::Owner> for Owner {
163163

164164
#[cfg(test)]
165165
mod tests {
166-
use crate::{test_util::test_db_connection, typosquat::test_util::Faker};
166+
use crate::{test_util::test_db_connection, typosquat::test_util::faker};
167167
use thiserror::Error;
168168

169169
use super::*;
@@ -172,21 +172,19 @@ mod tests {
172172
fn top_crates() -> Result<(), Error> {
173173
let (_test_db, mut conn) = test_db_connection();
174174

175-
let mut faker = Faker::new();
176-
177175
// Set up two users.
178-
let user_a = faker.user(&mut conn, "a")?;
179-
let user_b = faker.user(&mut conn, "b")?;
176+
let user_a = faker::user(&mut conn, "a")?;
177+
let user_b = faker::user(&mut conn, "b")?;
180178

181179
// Set up three crates with various ownership schemes.
182-
let _top_a = faker.crate_and_version(&mut conn, "a", "Hello", &user_a, 2)?;
183-
let top_b = faker.crate_and_version(&mut conn, "b", "Yes, this is dog", &user_b, 1)?;
184-
let not_top_c = faker.crate_and_version(&mut conn, "c", "Unpopular", &user_a, 0)?;
180+
let _top_a = faker::crate_and_version(&mut conn, "a", "Hello", &user_a, 2)?;
181+
let top_b = faker::crate_and_version(&mut conn, "b", "Yes, this is dog", &user_b, 1)?;
182+
let not_top_c = faker::crate_and_version(&mut conn, "c", "Unpopular", &user_a, 0)?;
185183

186184
// Let's set up a team that owns both b and c, but not a.
187-
let not_the_a_team = faker.team(&mut conn, "org", "team")?;
188-
faker.add_crate_to_team(&mut conn, &user_b, &top_b.0, &not_the_a_team)?;
189-
faker.add_crate_to_team(&mut conn, &user_b, &not_top_c.0, &not_the_a_team)?;
185+
let not_the_a_team = faker::team(&mut conn, "org", "team")?;
186+
faker::add_crate_to_team(&mut conn, &user_b, &top_b.0, &not_the_a_team)?;
187+
faker::add_crate_to_team(&mut conn, &user_b, &not_top_c.0, &not_the_a_team)?;
190188

191189
let top_crates = TopCrates::new(&mut conn, 2)?;
192190

src/typosquat/test_util.rs

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,13 @@ use crate::{
55
models::{
66
Crate, CrateOwner, NewCrate, NewTeam, NewUser, NewVersion, Owner, OwnerKind, User, Version,
77
},
8-
schema::{crate_downloads, crate_owners},
9-
Emails,
8+
schema::{crate_downloads, crate_owners, users},
109
};
1110

12-
pub struct Faker {
13-
emails: Emails,
14-
}
15-
16-
impl Faker {
17-
pub fn new() -> Self {
18-
Self {
19-
emails: Emails::new_in_memory(),
20-
}
21-
}
11+
pub mod faker {
12+
use super::*;
2213

2314
pub fn add_crate_to_team(
24-
&mut self,
2515
conn: &mut PgConnection,
2616
user: &User,
2717
krate: &Crate,
@@ -43,7 +33,6 @@ impl Faker {
4333
}
4434

4535
pub fn crate_and_version(
46-
&mut self,
4736
conn: &mut PgConnection,
4837
name: &str,
4938
description: &str,
@@ -73,12 +62,7 @@ impl Faker {
7362
Ok((krate, version))
7463
}
7564

76-
pub fn team(
77-
&mut self,
78-
conn: &mut PgConnection,
79-
org: &str,
80-
team: &str,
81-
) -> anyhow::Result<Owner> {
65+
pub fn team(conn: &mut PgConnection, org: &str, team: &str) -> anyhow::Result<Owner> {
8266
Ok(Owner::Team(
8367
NewTeam::new(
8468
&format!("github:{org}:{team}"),
@@ -91,13 +75,11 @@ impl Faker {
9175
))
9276
}
9377

94-
pub fn user(&mut self, conn: &mut PgConnection, login: &str) -> anyhow::Result<User> {
95-
Ok(
96-
NewUser::new(next_gh_id(), login, None, None, "token").create_or_update(
97-
None,
98-
&self.emails,
99-
conn,
100-
)?,
101-
)
78+
pub fn user(conn: &mut PgConnection, login: &str) -> QueryResult<User> {
79+
let user = NewUser::new(next_gh_id(), login, None, None, "token");
80+
81+
diesel::insert_into(users::table)
82+
.values(user)
83+
.get_result(conn)
10284
}
10385
}

src/worker/jobs/typosquat.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ Specific squat checks that triggered:
122122

123123
#[cfg(test)]
124124
mod tests {
125-
use crate::{test_util::test_db_connection, typosquat::test_util::Faker};
125+
use crate::{test_util::test_db_connection, typosquat::test_util::faker};
126126
use lettre::Address;
127127

128128
use super::*;
@@ -131,25 +131,24 @@ mod tests {
131131
fn integration() -> anyhow::Result<()> {
132132
let emails = Emails::new_in_memory();
133133
let (_test_db, mut conn) = test_db_connection();
134-
let mut faker = Faker::new();
135134

136135
// Set up a user and a popular crate to match against.
137-
let user = faker.user(&mut conn, "a")?;
138-
faker.crate_and_version(&mut conn, "my-crate", "It's awesome", &user, 100)?;
136+
let user = faker::user(&mut conn, "a")?;
137+
faker::crate_and_version(&mut conn, "my-crate", "It's awesome", &user, 100)?;
139138

140139
// Prime the cache so it only includes the crate we just created.
141140
let cache = Cache::new(vec!["[email protected]".to_string()], &mut conn)?;
142141

143142
// Now we'll create new crates: one problematic, one not so.
144-
let other_user = faker.user(&mut conn, "b")?;
145-
let (angel, _version) = faker.crate_and_version(
143+
let other_user = faker::user(&mut conn, "b")?;
144+
let (angel, _version) = faker::crate_and_version(
146145
&mut conn,
147146
"innocent-crate",
148147
"I'm just a simple, innocent crate",
149148
&other_user,
150149
0,
151150
)?;
152-
let (demon, _version) = faker.crate_and_version(
151+
let (demon, _version) = faker::crate_and_version(
153152
&mut conn,
154153
"mycrate",
155154
"I'm even more innocent, obviously",

0 commit comments

Comments
 (0)