use auth0::authentication::authorize_application::*;
use auth0::authentication::*;
use mockito::{mock, Matcher};
#[tokio::test]
async fn authorization_code_flow_send_request() {
let mock = mock("GET", "/authorize")
.match_query(Matcher::AllOf(vec![
Matcher::UrlEncoded("audience".into(), "some_awesome_audience".into()),
Matcher::UrlEncoded("scope".into(), "some_awesome_scope".into()),
Matcher::UrlEncoded("response_type".into(), "some_awesome_response_type".into()),
Matcher::UrlEncoded("client_id".into(), "some_awesome_client_id".into()),
Matcher::UrlEncoded("state".into(), "some_awesome_state".into()),
]))
.create();
let base_url = reqwest::Url::parse(&mockito::server_url()).unwrap();
let authentication = AuthenicationMethod::OAuth2Token(String::from("some_awesome_token"));
let authorize_application = Api::init(base_url, authentication);
let test_parameters = authorize_application::authorization_code_flow::RequestParameters {
audience: Some(String::from("some_awesome_audience")),
scope: Some(String::from("some_awesome_scope")),
response_type: String::from("some_awesome_response_type"),
client_id: String::from("some_awesome_client_id"),
state: Some(String::from("some_awesome_state")),
redirect_uri: None,
connection: None,
prompt: None,
};
let test_response = authorize_application
.authorization_code_flow(test_parameters)
.send()
.await;
mock.assert();
assert!(mock.matched());
assert_eq!(test_response.unwrap().status(), reqwest::StatusCode::OK);
}
#[tokio::test]
async fn authorization_code_flow_with_pkce_send_request() {
let mock = mock("GET", "/authorize")
.match_query(Matcher::AllOf(vec![
Matcher::UrlEncoded("audience".into(), "some_awesome_audience".into()),
Matcher::UrlEncoded("scope".into(), "some_awesome_scope".into()),
Matcher::UrlEncoded("response_type".into(), "some_awesome_response_type".into()),
Matcher::UrlEncoded("client_id".into(), "some_awesome_client_id".into()),
Matcher::UrlEncoded("state".into(), "some_awesome_state".into()),
Matcher::UrlEncoded(
"code_challenge_method".into(),
"some_awesome_code_challenege_method".into(),
),
Matcher::UrlEncoded(
"code_challenge".into(),
"some_awesome_code_challenge".into(),
),
]))
.create();
let base_url = reqwest::Url::parse(&mockito::server_url()).unwrap();
let authentication = AuthenicationMethod::OAuth2Token(String::from("some_awesome_token"));
let authorize_application = Api::init(base_url, authentication);
let test_parameters = authorize_application::pkce::RequestParameters {
audience: Some(String::from("some_awesome_audience")),
scope: Some(String::from("some_awesome_scope")),
response_type: String::from("some_awesome_response_type"),
client_id: String::from("some_awesome_client_id"),
state: Some(String::from("some_awesome_state")),
redirect_uri: None,
code_challenge_method: String::from("some_awesome_code_challenege_method"),
code_challenge: String::from("some_awesome_code_challenge"),
connection: None,
prompt: None,
};
let test_response = authorize_application
.authorization_code_flow_with_pkce(test_parameters)
.send()
.await;
mock.assert();
assert!(mock.matched());
assert_eq!(test_response.unwrap().status(), reqwest::StatusCode::OK);
}
#[tokio::test]
async fn implicit_flow_send_request() {
let mock = mock("GET", "/authorize")
.match_query(Matcher::AllOf(vec![
Matcher::UrlEncoded("audience".into(), "some_awesome_audience".into()),
Matcher::UrlEncoded("scope".into(), "some_awesome_scope".into()),
Matcher::UrlEncoded("response_type".into(), "some_awesome_response_type".into()),
Matcher::UrlEncoded("client_id".into(), "some_awesome_client_id".into()),
Matcher::UrlEncoded("state".into(), "some_awesome_state".into()),
]))
.create();
let base_url = reqwest::Url::parse(&mockito::server_url()).unwrap();
let authentication = AuthenicationMethod::OAuth2Token(String::from("some_awesome_token"));
let authorize_application = Api::init(base_url, authentication);
let test_parameters = authorize_application::implicit_flow::RequestParameters {
audience: Some(String::from("some_awesome_audience")),
scope: Some(String::from("some_awesome_scope")),
response_type: String::from("some_awesome_response_type"),
client_id: String::from("some_awesome_client_id"),
state: Some(String::from("some_awesome_state")),
redirect_uri: None,
nonce: None,
connection: None,
prompt: None,
};
let test_response = authorize_application
.implicit_flow(test_parameters)
.send()
.await;
mock.assert();
assert!(mock.matched());
assert_eq!(test_response.unwrap().status(), reqwest::StatusCode::OK);
}