feat: test Forgejo GetUsername with mocking

This commit is contained in:
Aravinth Manivannan 2024-05-10 20:57:54 +05:30
parent 64e76cd75a
commit 81e3bf68d1
Signed by: realaravinth
GPG key ID: F8F50389936984FF

View file

@ -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;
}
}