Skip to content

Commit 56e4a55

Browse files
authored
Inline test_db_connection() fn (#9976)
Now that we are more and more using async connections, the `test_db_connection()` fn isn't all that useful anymore since it always returns a sync connection. We can call these two statements individually instead to make our tests easier to migrate to async connections.
1 parent e44b452 commit 56e4a55

File tree

8 files changed

+55
-47
lines changed

8 files changed

+55
-47
lines changed

src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ pub mod sqs;
5353
pub mod ssh;
5454
pub mod storage;
5555
pub mod tasks;
56-
mod test_util;
5756
#[cfg(test)]
5857
pub mod tests;
5958
pub mod typosquat;

src/models/default_versions.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ fn calculate_default_version(crate_id: i32, conn: &mut impl Conn) -> QueryResult
130130
mod tests {
131131
use super::*;
132132
use crate::schema::crates;
133-
use crate::test_util::test_db_connection;
133+
use crates_io_test_db::TestDatabase;
134134
use insta::assert_snapshot;
135135
use std::fmt::Write;
136136

@@ -275,7 +275,8 @@ mod tests {
275275

276276
#[test]
277277
fn test_update_default_version() {
278-
let (_test_db, conn) = &mut test_db_connection();
278+
let test_db = TestDatabase::new();
279+
let conn = &mut test_db.connect();
279280

280281
let crate_id = create_crate("foo", conn);
281282
create_version(crate_id, "1.0.0", conn);

src/models/keyword.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,15 @@ impl Keyword {
9797
#[cfg(test)]
9898
mod tests {
9999
use super::*;
100-
use crate::test_util::test_db_connection;
100+
use crates_io_test_db::TestDatabase;
101101

102102
#[test]
103103
fn dont_associate_with_non_lowercased_keywords() {
104104
use diesel::RunQueryDsl;
105105

106-
let (_test_db, conn) = &mut test_db_connection();
106+
let test_db = TestDatabase::new();
107+
let conn = &mut test_db.connect();
108+
107109
// The code should be preventing lowercased keywords from existing,
108110
// but if one happens to sneak in there, don't associate crates with it.
109111

src/rate_limiter.rs

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,12 @@ struct Bucket {
182182
mod tests {
183183
use super::*;
184184
use crate::schema::users;
185-
use crate::test_util::*;
185+
use crates_io_test_db::TestDatabase;
186186

187187
#[test]
188188
fn default_rate_limits() -> QueryResult<()> {
189-
let (_test_db, conn) = &mut test_db_connection();
189+
let test_db = TestDatabase::new();
190+
let conn = &mut test_db.connect();
190191
let now = now();
191192

192193
// Set the defaults as if no env vars have been set in production
@@ -254,7 +255,8 @@ mod tests {
254255

255256
#[test]
256257
fn take_token_with_no_bucket_creates_new_one() -> QueryResult<()> {
257-
let (_test_db, conn) = &mut test_db_connection();
258+
let test_db = TestDatabase::new();
259+
let conn = &mut test_db.connect();
258260
let now = now();
259261

260262
let rate = SampleRateLimiter {
@@ -301,7 +303,8 @@ mod tests {
301303

302304
#[test]
303305
fn take_token_with_existing_bucket_modifies_existing_bucket() -> QueryResult<()> {
304-
let (_test_db, conn) = &mut test_db_connection();
306+
let test_db = TestDatabase::new();
307+
let conn = &mut test_db.connect();
305308
let now = now();
306309

307310
let rate = SampleRateLimiter {
@@ -324,7 +327,8 @@ mod tests {
324327

325328
#[test]
326329
fn take_token_after_delay_refills() -> QueryResult<()> {
327-
let (_test_db, conn) = &mut test_db_connection();
330+
let test_db = TestDatabase::new();
331+
let conn = &mut test_db.connect();
328332
let now = now();
329333

330334
let rate = SampleRateLimiter {
@@ -348,7 +352,8 @@ mod tests {
348352

349353
#[test]
350354
fn refill_subsecond_rate() -> QueryResult<()> {
351-
let (_test_db, conn) = &mut test_db_connection();
355+
let test_db = TestDatabase::new();
356+
let conn = &mut test_db.connect();
352357
// Subsecond rates have floating point rounding issues, so use a known
353358
// timestamp that rounds fine
354359
let now =
@@ -376,7 +381,8 @@ mod tests {
376381

377382
#[test]
378383
fn last_refill_always_advanced_by_multiple_of_rate() -> QueryResult<()> {
379-
let (_test_db, conn) = &mut test_db_connection();
384+
let test_db = TestDatabase::new();
385+
let conn = &mut test_db.connect();
380386
let now = now();
381387

382388
let rate = SampleRateLimiter {
@@ -405,7 +411,8 @@ mod tests {
405411

406412
#[test]
407413
fn zero_tokens_returned_when_user_has_no_tokens_left() -> QueryResult<()> {
408-
let (_test_db, conn) = &mut test_db_connection();
414+
let test_db = TestDatabase::new();
415+
let conn = &mut test_db.connect();
409416
let now = now();
410417

411418
let rate = SampleRateLimiter {
@@ -431,7 +438,8 @@ mod tests {
431438

432439
#[test]
433440
fn a_user_with_no_tokens_gets_a_token_after_exactly_rate() -> QueryResult<()> {
434-
let (_test_db, conn) = &mut test_db_connection();
441+
let test_db = TestDatabase::new();
442+
let conn = &mut test_db.connect();
435443
let now = now();
436444

437445
let rate = SampleRateLimiter {
@@ -456,7 +464,8 @@ mod tests {
456464

457465
#[test]
458466
fn tokens_never_refill_past_burst() -> QueryResult<()> {
459-
let (_test_db, conn) = &mut test_db_connection();
467+
let test_db = TestDatabase::new();
468+
let conn = &mut test_db.connect();
460469
let now = now();
461470

462471
let rate = SampleRateLimiter {
@@ -481,7 +490,8 @@ mod tests {
481490

482491
#[test]
483492
fn two_actions_dont_interfere_with_each_other() -> QueryResult<()> {
484-
let (_test_db, conn) = &mut test_db_connection();
493+
let test_db = TestDatabase::new();
494+
let conn = &mut test_db.connect();
485495
let now = now();
486496

487497
let mut config = HashMap::new();
@@ -526,7 +536,8 @@ mod tests {
526536
fn override_is_used_instead_of_global_burst_if_present() -> QueryResult<()> {
527537
use diesel::RunQueryDsl;
528538

529-
let (_test_db, conn) = &mut test_db_connection();
539+
let test_db = TestDatabase::new();
540+
let conn = &mut test_db.connect();
530541
let now = now();
531542

532543
let rate = SampleRateLimiter {
@@ -558,7 +569,8 @@ mod tests {
558569
fn overrides_can_expire() -> QueryResult<()> {
559570
use diesel::RunQueryDsl;
560571

561-
let (_test_db, conn) = &mut test_db_connection();
572+
let test_db = TestDatabase::new();
573+
let conn = &mut test_db.connect();
562574
let now = now();
563575

564576
let rate = SampleRateLimiter {
@@ -607,7 +619,8 @@ mod tests {
607619
fn override_is_different_for_each_action() -> QueryResult<()> {
608620
use diesel::RunQueryDsl;
609621

610-
let (_test_db, conn) = &mut test_db_connection();
622+
let test_db = TestDatabase::new();
623+
let conn = &mut test_db.connect();
611624
let now = now();
612625
let user_id = new_user(conn, "user")?;
613626

src/test_util.rs

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/typosquat/database.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,14 +163,15 @@ 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};
167-
use thiserror::Error;
168-
169166
use super::*;
167+
use crate::typosquat::test_util::faker;
168+
use crates_io_test_db::TestDatabase;
169+
use thiserror::Error;
170170

171171
#[test]
172172
fn top_crates() -> Result<(), Error> {
173-
let (_test_db, mut conn) = test_db_connection();
173+
let test_db = TestDatabase::new();
174+
let mut conn = test_db.connect();
174175

175176
// Set up two users.
176177
let user_a = faker::user(&mut conn, "a")?;

src/worker/jobs/downloads/update_metadata.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ mod tests {
107107
use super::*;
108108
use crate::models::{Crate, NewCrate, NewUser, NewVersion, User, Version};
109109
use crate::schema::{crate_downloads, crates, users, versions};
110-
use crate::test_util::test_db_connection;
110+
use crates_io_test_db::TestDatabase;
111111

112112
fn user(conn: &mut impl Conn) -> User {
113113
let user = NewUser::new(2, "login", None, None, "access_token");
@@ -138,7 +138,8 @@ mod tests {
138138
fn increment() {
139139
use diesel::dsl::*;
140140

141-
let (_test_db, conn) = &mut test_db_connection();
141+
let test_db = TestDatabase::new();
142+
let conn = &mut test_db.connect();
142143
let user = user(conn);
143144
let (krate, version) = crate_and_version(conn, user.id);
144145
insert_into(version_downloads::table)
@@ -181,7 +182,8 @@ mod tests {
181182
fn set_processed_true() {
182183
use diesel::dsl::*;
183184

184-
let (_test_db, conn) = &mut test_db_connection();
185+
let test_db = TestDatabase::new();
186+
let conn = &mut test_db.connect();
185187
let user = user(conn);
186188
let (_, version) = crate_and_version(conn, user.id);
187189
insert_into(version_downloads::table)
@@ -205,7 +207,8 @@ mod tests {
205207
#[test]
206208
fn dont_process_recent_row() {
207209
use diesel::dsl::*;
208-
let (_test_db, conn) = &mut test_db_connection();
210+
let test_db = TestDatabase::new();
211+
let conn = &mut test_db.connect();
209212
let user = user(conn);
210213
let (_, version) = crate_and_version(conn, user.id);
211214
insert_into(version_downloads::table)
@@ -231,7 +234,8 @@ mod tests {
231234
use diesel::dsl::*;
232235
use diesel::update;
233236

234-
let (_test_db, conn) = &mut test_db_connection();
237+
let test_db = TestDatabase::new();
238+
let conn = &mut test_db.connect();
235239
let user = user(conn);
236240
let (krate, version) = crate_and_version(conn, user.id);
237241
update(versions::table)
@@ -296,7 +300,8 @@ mod tests {
296300
use diesel::dsl::*;
297301
use diesel::update;
298302

299-
let (_test_db, mut conn) = test_db_connection();
303+
let test_db = TestDatabase::new();
304+
let mut conn = test_db.connect();
300305

301306
// This test is using a transaction to ensure `now` is the same for all
302307
// queries within this test.

src/worker/jobs/typosquat.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,16 @@ Specific squat checks that triggered:
122122

123123
#[cfg(test)]
124124
mod tests {
125-
use crate::{test_util::test_db_connection, typosquat::test_util::faker};
126-
use lettre::Address;
127-
128125
use super::*;
126+
use crate::typosquat::test_util::faker;
127+
use crates_io_test_db::TestDatabase;
128+
use lettre::Address;
129129

130130
#[tokio::test]
131131
async fn integration() -> anyhow::Result<()> {
132132
let emails = Emails::new_in_memory();
133-
let (_test_db, mut conn) = test_db_connection();
133+
let test_db = TestDatabase::new();
134+
let mut conn = test_db.connect();
134135

135136
// Set up a user and a popular crate to match against.
136137
let user = faker::user(&mut conn, "a")?;

0 commit comments

Comments
 (0)