From 26548d677f5de4794614927f0e9914207ad00c33 Mon Sep 17 00:00:00 2001 From: Mike Stemle Date: Thu, 8 Feb 2024 09:01:40 -0500 Subject: [PATCH 1/4] Fixed `issues().delete_comment_reaction()` (#566) - Added a test for 204 and 500 cases - Fixed broken functionality in the 204 case. --- src/api/issues.rs | 4 +- .../issues_comments_reactions_delete_test.rs | 80 +++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 tests/issues_comments_reactions_delete_test.rs diff --git a/src/api/issues.rs b/src/api/issues.rs index c4a40505..90ffb1a9 100644 --- a/src/api/issues.rs +++ b/src/api/issues.rs @@ -1089,6 +1089,8 @@ impl<'octo> IssueHandler<'octo> { reaction_id = reaction_id.into(), ); - self.crab.delete(route, None::<&()>).await + crate::map_github_error(self.crab._delete(route, None::<&()>).await?).await?; + + Ok(()) } } diff --git a/tests/issues_comments_reactions_delete_test.rs b/tests/issues_comments_reactions_delete_test.rs new file mode 100644 index 00000000..96c1a2ab --- /dev/null +++ b/tests/issues_comments_reactions_delete_test.rs @@ -0,0 +1,80 @@ +mod mock_error; + +use mock_error::setup_error_handler; +use octocrab::Octocrab; +use wiremock::{ + matchers::{method, path}, + Mock, MockServer, ResponseTemplate, +}; + +async fn setup_remove_comment_reaction_api(template: ResponseTemplate) -> MockServer { + let owner: &str = "org"; + let repo: &str = "some-repo"; + let comment_id: u64 = 123; + let reaction_id: u64 = 456; + + let mock_server = MockServer::start().await; + + Mock::given(method("DELETE")) + .and(path(format!( + "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ))) + .respond_with(template.clone()) + .mount(&mock_server) + .await; + + setup_error_handler( + &mock_server, + &format!("DELETE on /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id} was not received"), + ) + .await; + mock_server +} + +fn setup_octocrab(uri: &str) -> Octocrab { + Octocrab::builder().base_uri(uri).unwrap().build().unwrap() +} + +const OWNER: &str = "org"; +const REPO: &str = "some-repo"; +const COMMENT_ID: u64 = 123; +const REACTION_ID: u64 = 456; + +#[tokio::test] +async fn should_delete_comment_reaction() { + let template = ResponseTemplate::new(204); + let mock_server = setup_remove_comment_reaction_api(template).await; + let client = setup_octocrab(&mock_server.uri()); + + let issues = client.issues(OWNER.to_owned(), REPO.to_owned()); + + let result = issues + .delete_comment_reaction(COMMENT_ID.to_owned(), REACTION_ID.to_owned()) + .await; + + assert!( + result.is_ok(), + "expected successful result, got error: {:#?}", + result + ); +} + +#[tokio::test] +// Quick negative test, just to make sure errors still report properly +async fn should_delete_comment_reaction_500() { + let template = ResponseTemplate::new(500); + let mock_server = setup_remove_comment_reaction_api(template).await; + let client = setup_octocrab(&mock_server.uri()); + + let issues = client.issues(OWNER.to_owned(), REPO.to_owned()); + + let result = issues + .delete_comment_reaction(COMMENT_ID.to_owned(), REACTION_ID.to_owned()) + .await; + + assert!( + result.is_err(), + "expected error result, got success somehow: {:#?}", + result + ); +} From eca3741ddf4c72c0593bc85215493c6242fe853c Mon Sep 17 00:00:00 2001 From: Mike Stemle Date: Fri, 9 Feb 2024 04:00:39 -0500 Subject: [PATCH 2/4] Adding test for `issues().delete_comment()` (#569) --- tests/issues_comments_delete_test.rs | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tests/issues_comments_delete_test.rs diff --git a/tests/issues_comments_delete_test.rs b/tests/issues_comments_delete_test.rs new file mode 100644 index 00000000..fb315796 --- /dev/null +++ b/tests/issues_comments_delete_test.rs @@ -0,0 +1,74 @@ +mod mock_error; + +use mock_error::setup_error_handler; +use octocrab::Octocrab; +use wiremock::{ + matchers::{method, path}, + Mock, MockServer, ResponseTemplate, +}; + +async fn setup_remove_comment_api(template: ResponseTemplate) -> MockServer { + let owner: &str = "org"; + let repo: &str = "some-repo"; + let comment_id: u64 = 123; + + let mock_server = MockServer::start().await; + + Mock::given(method("DELETE")) + .and(path(format!( + "/repos/{owner}/{repo}/issues/comments/{comment_id}" + ))) + .respond_with(template.clone()) + .mount(&mock_server) + .await; + + setup_error_handler( + &mock_server, + &format!("DELETE on /repos/{owner}/{repo}/issues/comments/{comment_id} was not received"), + ) + .await; + mock_server +} + +fn setup_octocrab(uri: &str) -> Octocrab { + Octocrab::builder().base_uri(uri).unwrap().build().unwrap() +} + +const OWNER: &str = "org"; +const REPO: &str = "some-repo"; +const COMMENT_ID: u64 = 123; + +#[tokio::test] +async fn should_delete_comment() { + let template = ResponseTemplate::new(204); + let mock_server = setup_remove_comment_api(template).await; + let client = setup_octocrab(&mock_server.uri()); + + let issues = client.issues(OWNER.to_owned(), REPO.to_owned()); + + let result = issues.delete_comment(COMMENT_ID.into()).await; + + assert!( + result.is_ok(), + "expected successful result, got error: {:#?}", + result + ); +} + +#[tokio::test] +// Quick negative test, just to make sure errors still report properly +async fn should_delete_comment_500() { + let template = ResponseTemplate::new(500); + let mock_server = setup_remove_comment_api(template).await; + let client = setup_octocrab(&mock_server.uri()); + + let issues = client.issues(OWNER.to_owned(), REPO.to_owned()); + + let result = issues.delete_comment(COMMENT_ID.into()).await; + + assert!( + result.is_err(), + "expected error result, got success somehow: {:#?}", + result + ); +} From ff2774527f0151cb44c3574ece99ee527d409dd7 Mon Sep 17 00:00:00 2001 From: Mike Stemle Date: Fri, 9 Feb 2024 07:34:12 -0500 Subject: [PATCH 3/4] Added tests to prove `repos().secrets().delete_secret()` (#570) - Added test for 204 case - Added test for 500 case --- tests/repo_secrets_test.rs | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/repo_secrets_test.rs b/tests/repo_secrets_test.rs index 9e07a615..ed693134 100644 --- a/tests/repo_secrets_test.rs +++ b/tests/repo_secrets_test.rs @@ -57,6 +57,24 @@ async fn setup_put_api(template: ResponseTemplate, secrets_path: &str) -> MockSe mock_server } +async fn setup_delete_api(template: ResponseTemplate, secrets_path: &str) -> MockServer { + let mock_server = MockServer::start().await; + + Mock::given(method("DELETE")) + .and(path(format!( + "/repos/{OWNER}/{REPO}/actions/secrets{secrets_path}" + ))) + .respond_with(template) + .mount(&mock_server) + .await; + setup_error_handler( + &mock_server, + &format!("DELETE on /repos/{OWNER}/{REPO}/actions/secrets{secrets_path} was not received"), + ) + .await; + mock_server +} + fn setup_octocrab(uri: &str) -> Octocrab { Octocrab::builder().base_uri(uri).unwrap().build().unwrap() } @@ -187,3 +205,37 @@ async fn should_add_secret() { let item = result.unwrap(); assert_eq!(item, CreateRepositorySecretResponse::Created); } + +#[tokio::test] +async fn should_delete_secret() { + let template = ResponseTemplate::new(204); + let mock_server = setup_delete_api(template, "/GH_TOKEN").await; + let result = setup_octocrab(&mock_server.uri()) + .repos(OWNER.to_owned(), REPO.to_owned()) + .secrets() + .delete_secret("GH_TOKEN") + .await; + + assert!( + result.is_ok(), + "expected successful result, got error: {:#?}", + result + ); +} + +#[tokio::test] +async fn should_noop_secret_500() { + let template = ResponseTemplate::new(500); + let mock_server = setup_delete_api(template, "/GH_TOKEN").await; + let result = setup_octocrab(&mock_server.uri()) + .repos(OWNER.to_owned(), REPO.to_owned()) + .secrets() + .delete_secret("GH_TOKEN") + .await; + + assert!( + result.is_err(), + "expected error result, got success somehow: {:#?}", + result + ); +} From 172d20af3bfa6aaea03ba5d873e4c8aa267ac34d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 09:32:20 +0100 Subject: [PATCH 4/4] chore: release (#567) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d66f4bad..aa9b9c62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.34.1](https://github.com/XAMPPRocky/octocrab/compare/v0.34.0...v0.34.1) - 2024-02-09 + +### Other +- Added tests to prove `repos().secrets().delete_secret()` ([#570](https://github.com/XAMPPRocky/octocrab/pull/570)) +- Adding test for `issues().delete_comment()` ([#569](https://github.com/XAMPPRocky/octocrab/pull/569)) +- Fixed `issues().delete_comment_reaction()` ([#566](https://github.com/XAMPPRocky/octocrab/pull/566)) + ## [0.34.0](https://github.com/XAMPPRocky/octocrab/compare/v0.33.4...v0.34.0) - 2024-02-07 ### Other diff --git a/Cargo.toml b/Cargo.toml index 032f5fb2..72f49a90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "octocrab" -version = "0.34.0" +version = "0.34.1" authors = ["XAMPPRocky "] edition = "2018" readme = "README.md"