Skip to content

Commit fdc41fa

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

File tree

6 files changed

+100
-60
lines changed

6 files changed

+100
-60
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: 49 additions & 10 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

@@ -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,23 @@ 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/rate_limited1/rate_limited1-1.0.0.crate
118+
crates/rate_limited2/rate_limited2-1.0.0.crate
119+
index/ra/te/rate_limited1
120+
index/ra/te/rate_limited2
121+
"###);
110122

111123
let json = anon.show_crate("rate_limited2").await;
112124
assert_eq!(json.krate.max_version, "1.0.0");
@@ -117,7 +129,12 @@ async fn publish_new_crate_override_loosens_ratelimit() {
117129
.await
118130
.assert_rate_limited(LimitedAction::PublishNew);
119131

120-
assert_eq!(app.stored_files().await.len(), 4);
132+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
133+
crates/rate_limited1/rate_limited1-1.0.0.crate
134+
crates/rate_limited2/rate_limited2-1.0.0.crate
135+
index/ra/te/rate_limited1
136+
index/ra/te/rate_limited2
137+
"###);
121138

122139
let response = anon.get::<()>("/api/v1/crates/rate_limited3").await;
123140
assert_eq!(response.status(), StatusCode::NOT_FOUND);
@@ -151,7 +168,10 @@ async fn publish_new_crate_expired_override_ignored() {
151168
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.0");
152169
token.publish_crate(crate_to_publish).await.good();
153170

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

156176
let json = anon.show_crate("rate_limited1").await;
157177
assert_eq!(json.krate.max_version, "1.0.0");
@@ -162,7 +182,10 @@ async fn publish_new_crate_expired_override_ignored() {
162182
.await
163183
.assert_rate_limited(LimitedAction::PublishNew);
164184

165-
assert_eq!(app.stored_files().await.len(), 2);
185+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
186+
crates/rate_limited1/rate_limited1-1.0.0.crate
187+
index/ra/te/rate_limited1
188+
"###);
166189

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

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

199225
// Uploading the first update to the crate works
200226
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.1");
201227
token.publish_crate(crate_to_publish).await.good();
202228

203229
let json = anon.show_crate("rate_limited1").await;
204230
assert_eq!(json.krate.max_version, "1.0.1");
205-
assert_eq!(app.stored_files().await.len(), 3);
231+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
232+
crates/rate_limited1/rate_limited1-1.0.0.crate
233+
crates/rate_limited1/rate_limited1-1.0.1.crate
234+
index/ra/te/rate_limited1
235+
"###);
206236

207237
// Uploading the second update to the crate is rate limited
208238
let crate_to_publish = PublishBuilder::new("rate_limited1", "1.0.2");
@@ -214,7 +244,11 @@ async fn publish_existing_crate_rate_limited() {
214244
// Check that version 1.0.2 was not published
215245
let json = anon.show_crate("rate_limited1").await;
216246
assert_eq!(json.krate.max_version, "1.0.1");
217-
assert_eq!(app.stored_files().await.len(), 3);
247+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
248+
crates/rate_limited1/rate_limited1-1.0.0.crate
249+
crates/rate_limited1/rate_limited1-1.0.1.crate
250+
index/ra/te/rate_limited1
251+
"###);
218252

219253
// Wait for the limit to be up
220254
thread::sleep(Duration::from_millis(500));
@@ -224,7 +258,12 @@ async fn publish_existing_crate_rate_limited() {
224258

225259
let json = anon.show_crate("rate_limited1").await;
226260
assert_eq!(json.krate.max_version, "1.0.2");
227-
assert_eq!(app.stored_files().await.len(), 4);
261+
assert_snapshot!(app.stored_files().await.join("\n"), @r###"
262+
crates/rate_limited1/rate_limited1-1.0.0.crate
263+
crates/rate_limited1/rate_limited1-1.0.1.crate
264+
crates/rate_limited1/rate_limited1-1.0.2.crate
265+
index/ra/te/rate_limited1
266+
"###);
228267
}
229268

230269
#[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)