summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/repo.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/repo.rs b/tests/repo.rs
index f75c1c5..a626b59 100644
--- a/tests/repo.rs
+++ b/tests/repo.rs
@@ -392,3 +392,57 @@ async fn team_pr_review_request() {
.expect("couldn't get pr");
assert_eq!(pr.requested_reviewers, Some(Vec::new()));
}
+
+#[tokio::test]
+async fn tag_protection() {
+ let api = common::login();
+ let git = Git::new("./test_repos/tag-protect");
+ let _ = basic_repo(&api, &git, "tag-protect").await;
+
+ let tag_protections = api
+ .repo_list_tag_protection("TestingAdmin", "tag-protect")
+ .await
+ .expect("failed to list tag protections");
+ assert!(tag_protections.is_empty());
+
+ let protection_opt = CreateTagProtectionOption {
+ name_pattern: Some("v*".into()),
+ whitelist_teams: None,
+ whitelist_usernames: Some(vec!["TestingAdmin".into()]),
+ };
+ let new_protection = api
+ .repo_create_tag_protection("TestingAdmin", "tag-protect", protection_opt)
+ .await
+ .expect("failed to create tag protection");
+ let pattern = new_protection
+ .name_pattern
+ .as_deref()
+ .expect("protection does not have pattern");
+ assert_eq!(pattern, "v*");
+ let id = new_protection.id.expect("protection does not have id") as u32;
+
+ let protection_get = api
+ .repo_get_tag_protection("TestingAdmin", "tag-protect", id)
+ .await
+ .expect("failed to get tag protection");
+ assert_eq!(new_protection, protection_get);
+
+ let edit_opt = EditTagProtectionOption {
+ name_pattern: Some("v*.*.*".into()),
+ whitelist_teams: None,
+ whitelist_usernames: Some(vec![]),
+ };
+ let edited = api
+ .repo_edit_tag_protection("TestingAdmin", "tag-protect", id, edit_opt)
+ .await
+ .expect("failed to edit tag protection");
+ let pattern = edited
+ .name_pattern
+ .as_deref()
+ .expect("protection does not have pattern");
+ assert_eq!(pattern, "v*.*.*");
+
+ api.repo_delete_tag_protection("TestingAdmin", "tag-protect", id)
+ .await
+ .expect("failed to delete tag protection");
+}