Skip to content

Commit

Permalink
refactor: improve mediator routes
Browse files Browse the repository at this point in the history
Signed-off-by: Ondrej Prazak <ondrej.prazak@absa.africa>
  • Loading branch information
Ondrej Prazak committed Apr 9, 2024
1 parent 7eb7faf commit c7a56c4
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 78 deletions.
7 changes: 0 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion aries/agents/mediator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ axum-macros = "0.3.8"
diddoc_legacy = { path = "../../misc/legacy/diddoc_legacy" }
dotenvy = "0.15"
env_logger = "0.10.0"
fast_qr = { version = "0.10.2", features = ["svg"] }
futures = "0.3.28"
log = "0.4.20"
messages = { path = "../../messages" }
Expand Down
29 changes: 1 addition & 28 deletions aries/agents/mediator/src/http_routes/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,6 @@ use crate::{
persistence::MediatorPersistence,
};

pub async fn oob_invite_qr(
headers: HeaderMap,
State(agent): State<ArcAgent<impl BaseWallet, impl MediatorPersistence>>,
) -> Response {
let Json(oob_json) = oob_invite_json(State(agent)).await;
match detect_mime_type(&headers) {
"application/json" => Json(oob_json).into_response(),
_ => {
let oob_string = serde_json::to_string_pretty(&oob_json).unwrap();
let qr = fast_qr::QRBuilder::new(oob_string.clone()).build().unwrap();
let oob_qr_svg = fast_qr::convert::svg::SvgBuilder::default().to_str(&qr);
Html(format!(
"<style>
svg {{
width: 50%;
height: 50%;
}}
</style>
{oob_qr_svg} <br>
<pre>{oob_string}</pre>"
))
.into_response()
}
}
}

fn detect_mime_type(headers: &HeaderMap) -> &str {
headers
.get(ACCEPT)
Expand Down Expand Up @@ -89,8 +63,7 @@ pub async fn build_router(
) -> Router {
Router::default()
.route("/", get(readme))
.route("/register", get(oob_invite_qr))
.route("/register.json", get(oob_invite_json))
.route("/invitation", get(oob_invite_json))
.route("/didcomm", get(handle_didcomm).post(handle_didcomm))
.layer(tower_http::catch_panic::CatchPanicLayer::new())
.with_state(Arc::new(agent))
Expand Down
45 changes: 3 additions & 42 deletions aries/agents/mediator/tests/mediator-oob-invitation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ mod common;

use anyhow::Result;
use messages::msg_fields::protocols::out_of_band::invitation::Invitation as OOBInvitation;
use reqwest::header::{ACCEPT, CONTENT_TYPE};
use reqwest::header::ACCEPT;
use url::Url;

use crate::common::{prelude::*, test_setup::setup_env_logging};
Expand All @@ -17,7 +17,7 @@ fn endpoint_register_json_returns_oob() -> Result<()> {

let client = reqwest::blocking::Client::new();
let base: Url = ENDPOINT_ROOT.parse().unwrap();
let endpoint_register_json = base.join("/register.json").unwrap();
let endpoint_register_json = base.join("/invitation").unwrap();

let res = client
.get(endpoint_register_json)
Expand All @@ -36,7 +36,7 @@ fn endpoint_register_returns_oob_with_correct_accept_header() -> Result<()> {

let client = reqwest::blocking::Client::new();
let base: Url = ENDPOINT_ROOT.parse().unwrap();
let endpoint_register = base.join("/register").unwrap();
let endpoint_register = base.join("/invitation").unwrap();

let res = client
.get(endpoint_register)
Expand All @@ -49,42 +49,3 @@ fn endpoint_register_returns_oob_with_correct_accept_header() -> Result<()> {

Ok(())
}

#[test]
fn endpoint_register_returns_html_page() -> Result<()> {
LOGGING_INIT.call_once(setup_env_logging);

let client = reqwest::blocking::Client::new();
let base: Url = ENDPOINT_ROOT.parse().unwrap();
let endpoint_register = base.join("/register").unwrap();

let res = client.get(endpoint_register).send()?.error_for_status()?;
info!("{:?}", res);

assert!(res
.headers()
.get(CONTENT_TYPE)
.unwrap()
.to_str()
.unwrap()
.contains("text/html"));

Ok(())
}

#[test]
#[ignore]
fn endpoint_register_returns_html_page_with_valid_oob_qr() -> Result<()> {
LOGGING_INIT.call_once(setup_env_logging);

let client = reqwest::blocking::Client::new();
let base: Url = ENDPOINT_ROOT.parse().unwrap();
let endpoint_register = base.join("/register").unwrap();

let res = client.get(endpoint_register).send()?.error_for_status()?;
info!("{:?}", res);

let _html = res.text()?;
// validate qr of html page
unimplemented!("validate oob qr of returned html page");
}

0 comments on commit c7a56c4

Please sign in to comment.