Test permissions use api (#784)

* initial push

* fmt; clippy

---------

Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
This commit is contained in:
Wyatt Verchere
2023-12-11 18:24:49 -08:00
committed by GitHub
parent 27ccd3dfa8
commit 6217523cc8
32 changed files with 1558 additions and 1015 deletions

View File

@@ -10,10 +10,12 @@ use labrinth::{
},
routes::v3::oauth_clients::OAuthClientEdit,
};
use reqwest::header::AUTHORIZATION;
use serde_json::json;
use crate::common::{api_common::Api, asserts::assert_status};
use crate::common::{
api_common::{Api, AppendsOptionalPat},
asserts::assert_status,
};
use super::ApiV3;
@@ -23,12 +25,12 @@ impl ApiV3 {
name: String,
max_scopes: Scopes,
redirect_uris: Vec<String>,
pat: &str,
pat: Option<&str>,
) -> ServiceResponse {
let max_scopes = max_scopes.bits();
let req = TestRequest::post()
.uri("/_internal/oauth/app")
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.set_json(json!({
"name": name,
"max_scopes": max_scopes,
@@ -39,10 +41,14 @@ impl ApiV3 {
self.call(req).await
}
pub async fn get_user_oauth_clients(&self, user_id: &str, pat: &str) -> Vec<OAuthClient> {
pub async fn get_user_oauth_clients(
&self,
user_id: &str,
pat: Option<&str>,
) -> Vec<OAuthClient> {
let req = TestRequest::get()
.uri(&format!("/v3/user/{}/oauth_apps", user_id))
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
let resp = self.call(req).await;
assert_status(&resp, StatusCode::OK);
@@ -50,10 +56,10 @@ impl ApiV3 {
test::read_body_json(resp).await
}
pub async fn get_oauth_client(&self, client_id: String, pat: &str) -> ServiceResponse {
pub async fn get_oauth_client(&self, client_id: String, pat: Option<&str>) -> ServiceResponse {
let req = TestRequest::get()
.uri(&format!("/_internal/oauth/app/{}", client_id))
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
self.call(req).await
@@ -63,7 +69,7 @@ impl ApiV3 {
&self,
client_id: &str,
edit: OAuthClientEdit,
pat: &str,
pat: Option<&str>,
) -> ServiceResponse {
let req = TestRequest::patch()
.uri(&format!(
@@ -71,36 +77,43 @@ impl ApiV3 {
urlencoding::encode(client_id)
))
.set_json(edit)
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
self.call(req).await
}
pub async fn delete_oauth_client(&self, client_id: &str, pat: &str) -> ServiceResponse {
pub async fn delete_oauth_client(&self, client_id: &str, pat: Option<&str>) -> ServiceResponse {
let req = TestRequest::delete()
.uri(&format!("/_internal/oauth/app/{}", client_id))
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
self.call(req).await
}
pub async fn revoke_oauth_authorization(&self, client_id: &str, pat: &str) -> ServiceResponse {
pub async fn revoke_oauth_authorization(
&self,
client_id: &str,
pat: Option<&str>,
) -> ServiceResponse {
let req = TestRequest::delete()
.uri(&format!(
"/_internal/oauth/authorizations?client_id={}",
urlencoding::encode(client_id)
))
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
self.call(req).await
}
pub async fn get_user_oauth_authorizations(&self, pat: &str) -> Vec<OAuthClientAuthorization> {
pub async fn get_user_oauth_authorizations(
&self,
pat: Option<&str>,
) -> Vec<OAuthClientAuthorization> {
let req = TestRequest::get()
.uri("/_internal/oauth/authorizations")
.append_header((AUTHORIZATION, pat))
.append_pat(pat)
.to_request();
let resp = self.call(req).await;
assert_status(&resp, StatusCode::OK);