feat: test Forgejo GetUsername with mocking
This commit is contained in:
parent
64e76cd75a
commit
81e3bf68d1
|
@ -33,3 +33,50 @@ impl GetUsername for Forgejo {
|
|||
Ok(res.login)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
use url::Url;
|
||||
|
||||
#[actix_rt::test]
|
||||
async fn test_forgejo_get_username() {
|
||||
let client_id = "statetestpostgres";
|
||||
let client_secret = "oauthprovitestpostgres";
|
||||
let access_token = "access_token_uuu";
|
||||
let username = "access_token_user";
|
||||
|
||||
let mut settings = crate::settings::tests::get_settings().await;
|
||||
|
||||
let mut srv = mockito::Server::new_async().await;
|
||||
settings.forges.forgejo.url = Url::parse(&srv.url()).unwrap();
|
||||
|
||||
let f = Forgejo::new(
|
||||
settings.forges.forgejo.url.clone(),
|
||||
client_id.into(),
|
||||
client_secret.into(),
|
||||
);
|
||||
|
||||
let mock = {
|
||||
let resp = ForgejoUserResponse {
|
||||
login: username.into(),
|
||||
};
|
||||
srv.mock("GET", "/api/v1/user")
|
||||
.with_status(200)
|
||||
.match_header("Authorization", format!("token {access_token}").as_str())
|
||||
.with_header("Content-Type", "application/json")
|
||||
.with_body(serde_json::to_string(&resp).unwrap())
|
||||
.create_async()
|
||||
.await
|
||||
};
|
||||
|
||||
let req = OAuthAccessToken {
|
||||
access_token: access_token.into(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
assert_eq!(f.get_username(&req).await.unwrap(), username);
|
||||
mock.assert_async().await;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue