mas_handlers/admin/v1/upstream_oauth_links/
mod.rs

1// Copyright 2025 New Vector Ltd.
2//
3// SPDX-License-Identifier: AGPL-3.0-only
4// Please see LICENSE in the repository root for full details.
5
6mod add;
7mod delete;
8mod get;
9mod list;
10
11pub use self::{
12    add::{doc as add_doc, handler as add},
13    delete::{doc as delete_doc, handler as delete},
14    get::{doc as get_doc, handler as get},
15    list::{doc as list_doc, handler as list},
16};
17
18#[cfg(test)]
19mod test_utils {
20    use mas_data_model::{
21        UpstreamOAuthProviderClaimsImports, UpstreamOAuthProviderDiscoveryMode,
22        UpstreamOAuthProviderPkceMode, UpstreamOAuthProviderTokenAuthMethod,
23    };
24    use mas_iana::jose::JsonWebSignatureAlg;
25    use mas_storage::upstream_oauth2::UpstreamOAuthProviderParams;
26    use oauth2_types::scope::{OPENID, Scope};
27
28    pub(crate) fn oidc_provider_params(name: &str) -> UpstreamOAuthProviderParams {
29        UpstreamOAuthProviderParams {
30            issuer: Some(format!("https://{name}.example.com")),
31            human_name: Some(name.to_owned()),
32            brand_name: Some(name.to_owned()),
33            scope: Scope::from_iter([OPENID]),
34            token_endpoint_auth_method: UpstreamOAuthProviderTokenAuthMethod::ClientSecretBasic,
35            token_endpoint_signing_alg: None,
36            id_token_signed_response_alg: JsonWebSignatureAlg::Rs256,
37            fetch_userinfo: false,
38            userinfo_signed_response_alg: None,
39            client_id: format!("client_{name}"),
40            encrypted_client_secret: Some("secret".to_owned()),
41            claims_imports: UpstreamOAuthProviderClaimsImports::default(),
42            discovery_mode: UpstreamOAuthProviderDiscoveryMode::default(),
43            pkce_mode: UpstreamOAuthProviderPkceMode::default(),
44            response_mode: None,
45            authorization_endpoint_override: None,
46            token_endpoint_override: None,
47            userinfo_endpoint_override: None,
48            jwks_uri_override: None,
49            additional_authorization_parameters: Vec::new(),
50            ui_order: 0,
51        }
52    }
53}