Skip to content

Commit ce1152c

Browse files
committed
Use snapshot tests for app.stored_files() assertions
1 parent 28c0408 commit ce1152c

File tree

6 files changed

+99
-61
lines changed

6 files changed

+99
-61
lines changed

src/tests/dump_db.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ async fn test_dump_db_job() {
2525

2626
app.run_pending_background_jobs().await;
2727

28-
let stored_files = app.stored_files().await;
29-
assert_eq!(stored_files.len(), 2);
30-
assert_eq!(stored_files[0], "db-dump.tar.gz");
31-
assert_eq!(stored_files[1], "db-dump.zip");
28+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
29+
db-dump.tar.gz
30+
db-dump.zip
31+
"###);
3232

3333
let path = object_store::path::Path::parse("db-dump.tar.gz").unwrap();
3434
let result = app.as_inner().storage.as_inner().get(&path).await.unwrap();

src/tests/krate/publish/basics.rs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crates_io::schema::versions_published_by;
44
use diesel::{QueryDsl, RunQueryDsl};
55
use googletest::prelude::*;
66
use http::StatusCode;
7-
use insta::assert_json_snapshot;
7+
use insta::{assert_json_snapshot, assert_snapshot};
88

99
#[tokio::test(flavor = "multi_thread")]
1010
async fn new_krate() {
@@ -21,8 +21,10 @@ async fn new_krate() {
2121
let crates = app.crates_from_index_head("foo_new");
2222
assert_json_snapshot!(crates);
2323

24-
let expected_files = vec!["crates/foo_new/foo_new-1.0.0.crate", "index/fo/o_/foo_new"];
25-
assert_eq!(app.stored_files().await, expected_files);
24+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
25+
crates/foo_new/foo_new-1.0.0.crate
26+
index/fo/o_/foo_new
27+
"###);
2628

2729
app.db(|conn| {
2830
let email: String = versions_published_by::table
@@ -45,8 +47,10 @@ async fn new_krate_with_token() {
4547
".crate.updated_at" => "[datetime]",
4648
});
4749

48-
let expected_files = vec!["crates/foo_new/foo_new-1.0.0.crate", "index/fo/o_/foo_new"];
49-
assert_eq!(app.stored_files().await, expected_files);
50+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
51+
crates/foo_new/foo_new-1.0.0.crate
52+
index/fo/o_/foo_new
53+
"###);
5054
}
5155

5256
#[tokio::test(flavor = "multi_thread")]
@@ -61,11 +65,10 @@ async fn new_krate_weird_version() {
6165
".crate.updated_at" => "[datetime]",
6266
});
6367

64-
let expected_files = vec![
65-
"crates/foo_weird/foo_weird-0.0.0-pre.crate",
66-
"index/fo/o_/foo_weird",
67-
];
68-
assert_eq!(app.stored_files().await, expected_files);
68+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
69+
crates/foo_weird/foo_weird-0.0.0-pre.crate
70+
index/fo/o_/foo_weird
71+
"###);
6972
}
7073

7174
#[tokio::test(flavor = "multi_thread")]
@@ -87,12 +90,11 @@ async fn new_krate_twice() {
8790
let crates = app.crates_from_index_head("foo_twice");
8891
assert_json_snapshot!(crates);
8992

90-
let expected_files = vec![
91-
"crates/foo_twice/foo_twice-0.99.0.crate",
92-
"crates/foo_twice/foo_twice-2.0.0.crate",
93-
"index/fo/o_/foo_twice",
94-
];
95-
assert_eq!(app.stored_files().await, expected_files);
93+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
94+
crates/foo_twice/foo_twice-0.99.0.crate
95+
crates/foo_twice/foo_twice-2.0.0.crate
96+
index/fo/o_/foo_twice
97+
"###);
9698
}
9799

98100
#[tokio::test(flavor = "multi_thread")]

src/tests/krate/publish/git.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::builders::PublishBuilder;
22
use crate::util::{RequestHelper, TestApp};
3+
use insta::assert_snapshot;
34

45
#[tokio::test(flavor = "multi_thread")]
56
async fn new_krate_git_upload_with_conflicts() {
@@ -10,9 +11,8 @@ async fn new_krate_git_upload_with_conflicts() {
1011
let crate_to_publish = PublishBuilder::new("foo_conflicts", "1.0.0");
1112
token.publish_crate(crate_to_publish).await.good();
1213

13-
let expected_files = vec![
14-
"crates/foo_conflicts/foo_conflicts-1.0.0.crate",
15-
"index/fo/o_/foo_conflicts",
16-
];
17-
assert_eq!(app.stored_files().await, expected_files);
14+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
15+
crates/foo_conflicts/foo_conflicts-1.0.0.crate
16+
index/fo/o_/foo_conflicts
17+
"###);
1818
}

src/tests/krate/publish/max_size.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crates_io_tarball::TarballBuilder;
44
use flate2::Compression;
55
use googletest::prelude::*;
66
use http::StatusCode;
7-
use insta::assert_json_snapshot;
7+
use insta::{assert_json_snapshot, assert_snapshot};
88

99
#[tokio::test(flavor = "multi_thread")]
1010
async fn tarball_between_default_axum_limit_and_max_upload_size() {
@@ -49,7 +49,10 @@ async fn tarball_between_default_axum_limit_and_max_upload_size() {
4949
".crate.created_at" => "[datetime]",
5050
".crate.updated_at" => "[datetime]",
5151
});
52-
assert_eq!(app.stored_files().await.len(), 2);
52+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
53+
crates/foo/foo-1.1.0.crate
54+
index/3/f/foo
55+
"###);
5356
}
5457

5558
#[tokio::test(flavor = "multi_thread")]
@@ -140,9 +143,8 @@ async fn new_krate_too_big_but_whitelisted() {
140143

141144
token.publish_crate(crate_to_publish).await.good();
142145

143-
let expected_files = vec![
144-
"crates/foo_whitelist/foo_whitelist-1.1.0.crate",
145-
"index/fo/o_/foo_whitelist",
146-
];
147-
assert_eq!(app.stored_files().await, expected_files);
146+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
147+
crates/foo_whitelist/foo_whitelist-1.1.0.crate
148+
index/fo/o_/foo_whitelist
149+
"###);
148150
}

src/tests/krate/publish/rate_limit.rs

Lines changed: 48 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use crates_io::rate_limiter::LimitedAction;
55
use crates_io::schema::{publish_limit_buckets, publish_rate_overrides};
66
use diesel::{ExpressionMethods, RunQueryDsl};
77
use http::StatusCode;
8+
use insta::assert_snapshot;
89
use std::thread;
910
use std::time::Duration;
1011

@@ -35,7 +36,7 @@ async fn publish_new_crate_ratelimit_hit() {
3536
.await
3637
.assert_rate_limited(LimitedAction::PublishNew);
3738

38-
assert_eq!(app.stored_files().await.len(), 0);
39+
assert_snapshot!(app.stored_files().await.join("\n"), @"");
3940

4041
let response = anon.get::<()>("/api/v1/crates/rate_limited").await;
4142
assert_eq!(response.status(), StatusCode::NOT_FOUND);
@@ -65,7 +66,10 @@ async fn publish_new_crate_ratelimit_expires() {
6566
let crate_to_publish = PublishBuilder::new("rate_limited", "1.0.0");
6667
token.publish_crate(crate_to_publish).await.good();
6768

68-
assert_eq!(app.stored_files().await.len(), 2);
69+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
70+
crates/rate_limited/rate_limited-1.0.0.crate
71+
index/ra/te/rate_limited
72+
"###);
6973

7074
let json = anon.show_crate("rate_limited").await;
7175
assert_eq!(json.krate.max_version, "1.0.0");
@@ -98,15 +102,22 @@ async fn publish_new_crate_override_loosens_ratelimit() {
98102
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.0");
99103
token.publish_crate(crate_to_publish).await.good();
100104

101-
assert_eq!(app.stored_files().await.len(), 2);
105+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
106+
crates/rate_limited1/rate_limited1-1.0.0.crate
107+
index/ra/te/rate_limited1
108+
"###);
102109

103110
let json = anon.show_crate("rate_limited1").await;
104111
assert_eq!(json.krate.max_version, "1.0.0");
105112

106113
let crate_to_publish = PublishBuilder::new("rate_limited2", "1.0.0");
107114
token.publish_crate(crate_to_publish).await.good();
108115

109-
assert_eq!(app.stored_files().await.len(), 4);
116+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
117+
crates/foo_new/foo_new-1.0.0.crate
118+
index/fo/o_/foo_new
119+
rss/updates.xml
120+
"###);
110121

111122
let json = anon.show_crate("rate_limited2").await;
112123
assert_eq!(json.krate.max_version, "1.0.0");
@@ -117,7 +128,11 @@ async fn publish_new_crate_override_loosens_ratelimit() {
117128
.await
118129
.assert_rate_limited(LimitedAction::PublishNew);
119130

120-
assert_eq!(app.stored_files().await.len(), 4);
131+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
132+
crates/foo_new/foo_new-1.0.0.crate
133+
index/fo/o_/foo_new
134+
rss/updates.xml
135+
"###);
121136

122137
let response = anon.get::<()>("/api/v1/crates/rate_limited3").await;
123138
assert_eq!(response.status(), StatusCode::NOT_FOUND);
@@ -151,7 +166,10 @@ async fn publish_new_crate_expired_override_ignored() {
151166
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.0");
152167
token.publish_crate(crate_to_publish).await.good();
153168

154-
assert_eq!(app.stored_files().await.len(), 2);
169+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
170+
crates/rate_limited1/rate_limited1-1.0.0.crate
171+
index/ra/te/rate_limited1
172+
"###);
155173

156174
let json = anon.show_crate("rate_limited1").await;
157175
assert_eq!(json.krate.max_version, "1.0.0");
@@ -162,7 +180,11 @@ async fn publish_new_crate_expired_override_ignored() {
162180
.await
163181
.assert_rate_limited(LimitedAction::PublishNew);
164182

165-
assert_eq!(app.stored_files().await.len(), 2);
183+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
184+
crates/foo_new/foo_new-1.0.0.crate
185+
index/fo/o_/foo_new
186+
rss/updates.xml
187+
"###);
166188

167189
let response = anon.get::<()>("/api/v1/crates/rate_limited2").await;
168190
assert_eq!(response.status(), StatusCode::NOT_FOUND);
@@ -194,15 +216,22 @@ async fn publish_existing_crate_rate_limited() {
194216

195217
let json = anon.show_crate("rate_limited1").await;
196218
assert_eq!(json.krate.max_version, "1.0.0");
197-
assert_eq!(app.stored_files().await.len(), 2);
219+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
220+
crates/rate_limited1/rate_limited1-1.0.0.crate
221+
index/ra/te/rate_limited1
222+
"###);
198223

199224
// Uploading the first update to the crate works
200225
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.1");
201226
token.publish_crate(crate_to_publish).await.good();
202227

203228
let json = anon.show_crate("rate_limited1").await;
204229
assert_eq!(json.krate.max_version, "1.0.1");
205-
assert_eq!(app.stored_files().await.len(), 3);
230+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
231+
crates/foo_new/foo_new-1.0.0.crate
232+
index/fo/o_/foo_new
233+
rss/updates.xml
234+
"###);
206235

207236
// Uploading the second update to the crate is rate limited
208237
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.2");
@@ -214,7 +243,11 @@ async fn publish_existing_crate_rate_limited() {
214243
// Check that version 1.0.2 was not published
215244
let json = anon.show_crate("rate_limited1").await;
216245
assert_eq!(json.krate.max_version, "1.0.1");
217-
assert_eq!(app.stored_files().await.len(), 3);
246+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
247+
crates/foo_new/foo_new-1.0.0.crate
248+
index/fo/o_/foo_new
249+
rss/updates.xml
250+
"###);
218251

219252
// Wait for the limit to be up
220253
thread::sleep(Duration::from_millis(500));
@@ -224,7 +257,11 @@ async fn publish_existing_crate_rate_limited() {
224257

225258
let json = anon.show_crate("rate_limited1").await;
226259
assert_eq!(json.krate.max_version, "1.0.2");
227-
assert_eq!(app.stored_files().await.len(), 4);
260+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
261+
crates/foo_new/foo_new-1.0.0.crate
262+
index/fo/o_/foo_new
263+
rss/updates.xml
264+
"###);
228265
}
229266

230267
#[tokio::test(flavor = "multi_thread")]

src/tests/krate/publish/readme.rs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::builders::{CrateBuilder, PublishBuilder};
22
use crate::util::{RequestHelper, TestApp};
33
use http::StatusCode;
4-
use insta::assert_json_snapshot;
4+
use insta::{assert_json_snapshot, assert_snapshot};
55

66
#[tokio::test(flavor = "multi_thread")]
77
async fn new_krate_with_readme() {
@@ -15,12 +15,11 @@ async fn new_krate_with_readme() {
1515
".crate.updated_at" => "[datetime]",
1616
});
1717

18-
let expected_files = vec![
19-
"crates/foo_readme/foo_readme-1.0.0.crate",
20-
"index/fo/o_/foo_readme",
21-
"readmes/foo_readme/foo_readme-1.0.0.html",
22-
];
23-
assert_eq!(app.stored_files().await, expected_files);
18+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
19+
crates/foo_readme/foo_readme-1.0.0.crate
20+
index/fo/o_/foo_readme
21+
readmes/foo_readme/foo_readme-1.0.0.html
22+
"###);
2423
}
2524

2625
#[tokio::test(flavor = "multi_thread")]
@@ -35,11 +34,10 @@ async fn new_krate_with_empty_readme() {
3534
".crate.updated_at" => "[datetime]",
3635
});
3736

38-
let expected_files = vec![
39-
"crates/foo_readme/foo_readme-1.0.0.crate",
40-
"index/fo/o_/foo_readme",
41-
];
42-
assert_eq!(app.stored_files().await, expected_files);
37+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
38+
crates/foo_readme/foo_readme-1.0.0.crate
39+
index/fo/o_/foo_readme
40+
"###);
4341
}
4442

4543
#[tokio::test(flavor = "multi_thread")]
@@ -54,12 +52,11 @@ async fn new_krate_with_readme_and_plus_version() {
5452
".crate.updated_at" => "[datetime]",
5553
});
5654

57-
let expected_files = vec![
58-
"crates/foo_readme/foo_readme-1.0.0+foo.crate",
59-
"index/fo/o_/foo_readme",
60-
"readmes/foo_readme/foo_readme-1.0.0+foo.html",
61-
];
62-
assert_eq!(app.stored_files().await, expected_files);
55+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
56+
crates/foo_readme/foo_readme-1.0.0+foo.crate
57+
index/fo/o_/foo_readme
58+
readmes/foo_readme/foo_readme-1.0.0+foo.html
59+
"###);
6360
}
6461

6562
#[tokio::test(flavor = "multi_thread")]

0 commit comments

Comments
 (0)