forked from XAMPPRocky/octocrab
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a test for
repos().is_collaborator()
. The 204 case is good! (X…
- Loading branch information
1 parent
3840a12
commit a9b66fc
Showing
3 changed files
with
82 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
mod mock_error; | ||
|
||
use mock_error::setup_error_handler; | ||
use octocrab::Octocrab; | ||
use wiremock::{ | ||
matchers::{method, path}, | ||
Mock, MockServer, ResponseTemplate, | ||
}; | ||
|
||
async fn setup_repo_collaborator_api(template: ResponseTemplate) -> MockServer { | ||
let owner: &str = "org"; | ||
let repo: &str = "some-repo"; | ||
let username: &str = "someusername"; | ||
|
||
let mock_server = MockServer::start().await; | ||
|
||
Mock::given(method("GET")) | ||
.and(path(format!( | ||
"/repos/{owner}/{repo}/collaborators/{username}" | ||
))) | ||
.respond_with(template.clone()) | ||
.mount(&mock_server) | ||
.await; | ||
|
||
setup_error_handler( | ||
&mock_server, | ||
&format!("GET on /repos/{owner}/{repo}/collaborators/{username} 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 USERNAME: &str = "someusername"; | ||
|
||
#[tokio::test] | ||
async fn is_collaborators_returns_true() { | ||
let template = ResponseTemplate::new(204); | ||
let mock_server = setup_repo_collaborator_api(template).await; | ||
let client = setup_octocrab(&mock_server.uri()); | ||
|
||
let result = client | ||
.repos(OWNER.to_owned(), REPO.to_owned()) | ||
.is_collaborator(USERNAME.to_owned()) | ||
.await; | ||
|
||
assert!( | ||
result.is_ok(), | ||
"expected successful result, got error: {:#?}", | ||
result | ||
); | ||
let result = result.unwrap(); | ||
assert!(result, "expected the result to be true: {}", result); | ||
} | ||
|
||
#[tokio::test] | ||
async fn is_collaborators_returns_false() { | ||
let template = ResponseTemplate::new(404); | ||
let mock_server = setup_repo_collaborator_api(template).await; | ||
let client = setup_octocrab(&mock_server.uri()); | ||
|
||
let result = client | ||
.repos(OWNER.to_owned(), REPO.to_owned()) | ||
.is_collaborator(USERNAME.to_owned()) | ||
.await; | ||
|
||
assert!( | ||
result.is_ok(), | ||
"expected successful result, got error: {:#?}", | ||
result | ||
); | ||
let result = result.unwrap(); | ||
assert!(!result, "expected the result to be false: {}", result); | ||
} |