Skip to content

Commit 58b48b0

Browse files
committed
Add unit tests for the patch API
Signed-off-by: Rustin170506 <[email protected]>
1 parent 23bbe2a commit 58b48b0

17 files changed

+130
-1
lines changed

src/tests/krate/publish/snapshots/all__krate__publish__links__crate_with_links_field-2.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ expression: response.json()
4545
"readme_path": "/api/v1/crates/foo/1.0.0/readme",
4646
"rust_version": null,
4747
"updated_at": "[datetime]",
48+
"yank_message": null,
4849
"yanked": false
4950
}
5051
}

src/tests/krate/publish/snapshots/all__krate__publish__manifest__boolean_readme-2.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ expression: response.json()
4545
"readme_path": "/api/v1/crates/foo/1.0.0/readme",
4646
"rust_version": "1.69",
4747
"updated_at": "[datetime]",
48+
"yank_message": null,
4849
"yanked": false
4950
}
5051
}

src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate-2.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ expression: response.json()
4848
"readme_path": "/api/v1/crates/foo/1.0.0/readme",
4949
"rust_version": null,
5050
"updated_at": "[datetime]",
51+
"yank_message": null,
5152
"yanked": false
5253
}
5354
}

src/tests/krate/yanking.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,66 @@ async fn publish_after_yank_max_version() {
220220
let json = anon.show_crate("fyk_max").await;
221221
assert_eq!(json.krate.max_version, "2.0.0");
222222
}
223+
224+
#[tokio::test(flavor = "multi_thread")]
225+
async fn patch_version_yank_unyank() {
226+
let (_, anon, _, token) = TestApp::full().with_token();
227+
228+
// Upload a new crate
229+
let crate_to_publish = PublishBuilder::new("patchable", "1.0.0");
230+
token.publish_crate(crate_to_publish).await.good();
231+
232+
// Check initial state
233+
let json = anon.show_version("patchable", "1.0.0").await;
234+
assert!(!json.version.yanked);
235+
assert_eq!(json.version.yank_message, None);
236+
237+
// Yank with message
238+
token
239+
.update_yank_status("patchable", "1.0.0", Some(true), Some("Yanking reason"))
240+
.await
241+
.good();
242+
243+
let json = anon.show_version("patchable", "1.0.0").await;
244+
assert!(json.version.yanked);
245+
assert_eq!(
246+
json.version.yank_message,
247+
Some("Yanking reason".to_string())
248+
);
249+
250+
// Update yank message
251+
token
252+
.update_yank_status("patchable", "1.0.0", None, Some("Updated reason"))
253+
.await
254+
.good();
255+
256+
let json = anon.show_version("patchable", "1.0.0").await;
257+
assert!(json.version.yanked);
258+
assert_eq!(
259+
json.version.yank_message,
260+
Some("Updated reason".to_string())
261+
);
262+
263+
// Unyank
264+
token
265+
.update_yank_status("patchable", "1.0.0", Some(false), None)
266+
.await
267+
.good();
268+
269+
let json = anon.show_version("patchable", "1.0.0").await;
270+
assert!(!json.version.yanked);
271+
assert_eq!(json.version.yank_message, None);
272+
273+
// Attempt to set yank message on unyanked version (should fail)
274+
token
275+
.update_yank_status("patchable", "1.0.0", None, Some("Invalid message"))
276+
.await
277+
.status()
278+
.is_client_error();
279+
// Attempt to unyank with message (should fail)
280+
token
281+
.update_yank_status("patchable", "1.0.0", Some(false), Some("Invalid message"))
282+
.await
283+
.status()
284+
.is_client_error();
285+
}

src/tests/routes/crates/snapshots/all__routes__crates__read__show.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ expression: response.json()
7171
"readme_path": "/api/v1/crates/foo_show/1.0.0/readme",
7272
"rust_version": null,
7373
"updated_at": "[datetime]",
74+
"yank_message": null,
7475
"yanked": false
7576
},
7677
{
@@ -103,6 +104,7 @@ expression: response.json()
103104
"readme_path": "/api/v1/crates/foo_show/0.5.1/readme",
104105
"rust_version": null,
105106
"updated_at": "[datetime]",
107+
"yank_message": null,
106108
"yanked": false
107109
},
108110
{
@@ -135,6 +137,7 @@ expression: response.json()
135137
"readme_path": "/api/v1/crates/foo_show/0.5.0/readme",
136138
"rust_version": null,
137139
"updated_at": "[datetime]",
140+
"yank_message": null,
138141
"yanked": false
139142
}
140143
]

src/tests/routes/crates/snapshots/all__routes__crates__reverse_dependencies__prerelease_versions_not_included_in_reverse_dependencies.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ expression: response.json()
5151
"readme_path": "/api/v1/crates/c3/1.0.0/readme",
5252
"rust_version": null,
5353
"updated_at": "[datetime]",
54+
"yank_message": null,
5455
"yanked": false
5556
}
5657
]

src/tests/routes/crates/snapshots/all__routes__crates__reverse_dependencies__reverse_dependencies.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ expression: response.json()
5151
"readme_path": "/api/v1/crates/c2/1.1.0/readme",
5252
"rust_version": null,
5353
"updated_at": "[datetime]",
54+
"yank_message": null,
5455
"yanked": false
5556
}
5657
]

src/tests/routes/crates/snapshots/all__routes__crates__reverse_dependencies__reverse_dependencies_includes_published_by_user_when_present.snap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ expression: response.json()
6363
"readme_path": "/api/v1/crates/c3/3.0.0/readme",
6464
"rust_version": null,
6565
"updated_at": "[datetime]",
66+
"yank_message": null,
6667
"yanked": false
6768
},
6869
{
@@ -89,6 +90,7 @@ expression: response.json()
8990
"readme_path": "/api/v1/crates/c2/2.0.0/readme",
9091
"rust_version": null,
9192
"updated_at": "[datetime]",
93+
"yank_message": null,
9294
"yanked": false
9395
}
9496
]

src/tests/routes/crates/snapshots/all__routes__crates__reverse_dependencies__reverse_dependencies_query_supports_u64_version_number_parts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ expression: response.json()
5151
"readme_path": "/api/v1/crates/c2/1.0.18446744073709551615/readme",
5252
"rust_version": null,
5353
"updated_at": "[datetime]",
54+
"yank_message": null,
5455
"yanked": false
5556
}
5657
]

src/tests/routes/crates/snapshots/all__routes__crates__reverse_dependencies__reverse_dependencies_when_old_version_doesnt_depend_but_new_does.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ expression: response.json()
5151
"readme_path": "/api/v1/crates/c2/2.0.0/readme",
5252
"rust_version": null,
5353
"updated_at": "[datetime]",
54+
"yank_message": null,
5455
"yanked": false
5556
}
5657
]

0 commit comments

Comments
 (0)