diff --git a/Cargo.lock b/Cargo.lock
index 631d426..6a7da48 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1587,9 +1587,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro2"
-version = "1.0.59"
+version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
@@ -2952,7 +2952,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
-name = "verder-helpen-comm-common"
+name = "verder-helpen-comm-isolate"
version = "0.1.0"
dependencies = [
"accept-language",
@@ -2976,19 +2976,6 @@ dependencies = [
"unic-langid",
"verder-helpen-jwt",
"verder-helpen-proto",
-]
-
-[[package]]
-name = "verder-helpen-comm-isolate"
-version = "0.1.0"
-dependencies = [
- "reqwest",
- "rocket",
- "serde",
- "serde_json",
- "verder-helpen-comm-common",
- "verder-helpen-jwt",
- "verder-helpen-proto",
"verder-helpen-sentry",
]
diff --git a/Cargo.toml b/Cargo.toml
index 688f040..7102156 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,37 @@
-[workspace]
+[package]
+name = "verder-helpen-comm-isolate"
+version = "0.1.0"
+edition = "2021"
-members = [
- "comm-common",
- "comm-plugin",
-]
+[features]
+default = ["auth_during_comm", "platform_token", "session_db"]
+auth_during_comm = ["platform_token"]
+platform_token = []
+sentry = ["dep:verder-helpen-sentry"]
+session_db = ["platform_token"]
+
+[dependencies]
+verder-helpen-jwt = { git = "https://github.com/verder-helpen/verder-helpen-jwt.git" }
+verder-helpen-proto = { git = "https://github.com/verder-helpen/verder-helpen-proto.git" }
+verder-helpen-sentry = { git = "https://github.com/verder-helpen/verder-helpen-sentry.git", optional = true }
+accept-language = "2.0.0"
+josekit = "0.8.2"
+lazy_static = "1.4.0"
+rand = "0.8.5"
+reqwest = { version = "0.11.16", features = ["json"] }
+rocket = { version = "0.5.0-rc.3", features = ["json"] }
+rocket_oauth2 = { git = "https://github.com/arjentz/rocket_oauth2.git", rev = "214efa99b0bd95c0df4d3f3d4c6235ae25610e37" }
+rocket_sync_db_pools = { version = "0.1.0-rc.3", features = ["postgres_pool"] }
+serde = "1.0.159"
+serde_json = "1.0.95"
+serde_yaml = "0.9.19"
+strum = "0.24.1"
+strum_macros = "0.24.3"
+tera = "1.18.1"
+thiserror = "1.0.40"
+unic-langid = "0.9.1"
+
+[dev-dependencies]
+figment = { version = "0.10.8", features = ["env", "toml", "json"] }
+serial_test = "2.0.0"
+tokio-test = "0.4.2"
diff --git a/comm-common/.gitignore b/comm-common/.gitignore
deleted file mode 100644
index 96ef6c0..0000000
--- a/comm-common/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/target
-Cargo.lock
diff --git a/comm-common/Cargo.toml b/comm-common/Cargo.toml
deleted file mode 100644
index b04af30..0000000
--- a/comm-common/Cargo.toml
+++ /dev/null
@@ -1,37 +0,0 @@
-[package]
-name = "verder-helpen-comm-common"
-version = "0.1.0"
-edition = "2018"
-
-[features]
-default = ["auth_during_comm", "platform_token", "session_db"]
-auth_during_comm = ["platform_token"]
-platform_token = []
-session_db = ["platform_token"]
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-verder-helpen-jwt = { git = "https://github.com/verder-helpen/verder-helpen-jwt.git" }
-verder-helpen-proto = { git = "https://github.com/verder-helpen/verder-helpen-proto.git" }
-josekit = "0.8.2"
-rocket = { version = "0.5.0-rc.3", features = ["json"] }
-rocket_oauth2 = { git = "https://github.com/arjentz/rocket_oauth2.git", rev = "214efa99b0bd95c0df4d3f3d4c6235ae25610e37" }
-rocket_sync_db_pools = { version = "0.1.0-rc.3", features = ["postgres_pool"] }
-serde = "1.0.159"
-serde_json = "1.0.95"
-serde_yaml = "0.9.19"
-thiserror = "1.0.40"
-reqwest = { version = "0.11.16", features = ["json"] }
-strum = "0.24.1"
-strum_macros = "0.24.3"
-rand = "0.8.5"
-tera = "1.18.1"
-lazy_static = "1.4.0"
-unic-langid = "0.9.1"
-accept-language = "2.0.0"
-
-[dev-dependencies]
-serial_test = "2.0.0"
-tokio-test = "0.4.2"
-figment = { version = "0.10.8", features = ["env", "toml", "json"] }
diff --git a/comm-common/LICENSE b/comm-common/LICENSE
deleted file mode 120000
index ea5b606..0000000
--- a/comm-common/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-../LICENSE
\ No newline at end of file
diff --git a/comm-common/README.md b/comm-common/README.md
deleted file mode 100644
index f34a478..0000000
--- a/comm-common/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Verder Helpen Communication Common `verder-helpen-comm-common`
-
-This library contains Rust common utilities for setting up Verder Helpen communication plugins.
diff --git a/comm-common/config.toml b/comm-common/config.toml
deleted file mode 100644
index 8c3581b..0000000
--- a/comm-common/config.toml
+++ /dev/null
@@ -1,44 +0,0 @@
-[global]
-default_locale = "en"
-
-[global.translations.en]
-title = "Information"
-unknown_error = "Unknown error"
-loading = "Loading..."
-purpose = "Subject"
-attributes = "Verified information"
-error = "An error occurred"
-refresh = "Refresh"
-report_move = "Report move"
-request_permit = "Request a permit"
-request_passport = "Request a passport"
-email = "E-mail address"
-login_necessary = "Please login to view user information"
-login = "Login"
-login_expired = "Your session expired or you do not have sufficient permissions to access this resource."
-logout = "Logout"
-login_successful = "Login successfull. You can close this window."
-logout_successful = "Logout successfull. You can close this window."
-insufficient_permission = "You do not have sufficient permissions to access this resource."
-no_credentials_found = "There are no authenticated guests (yet)"
-
-[global.translations.nl]
-title = "Verder Helpen gegevens"
-unknown_error = "Onbekende fout"
-loading = "Laden..."
-purpose = "Onderwerp"
-attributes = "Geverifieerde gegevens"
-error = "Er is een fout opgetreden"
-refresh = "Herladen"
-report_move = "Verhuizing doorgeven"
-request_permit = "Vergunning aanvragen"
-request_passport = "Paspoort aanvragen"
-email = "E-mailadres"
-login_necessary = "Om gegevens van gebruikers te kunnen zien moet u eerst inloggen"
-login = "Inloggen"
-login_expired = "Uw sessie is verlopen of u heeft niet voldoende rechten"
-logout = "Uitloggen"
-login_successful = "U bent ingelogd. U kan dit venster nu sluiten"
-logout_successful = "U bent uitgelogd. U kan dit venster nu sluiten"
-insufficient_permission = "Uw account heeft niet voldoende rechten, probeer met een ander account in te loggen"
-no_credentials_found = "Er zijn (nog) geen geïdentificeerde gasten"
diff --git a/comm-common/schema.sql b/comm-common/schema.sql
deleted file mode 120000
index 1450fbb..0000000
--- a/comm-common/schema.sql
+++ /dev/null
@@ -1 +0,0 @@
-../schema.sql
\ No newline at end of file
diff --git a/comm-common/src/templates/base.html b/comm-common/src/templates/base.html
deleted file mode 100644
index a5063ac..0000000
--- a/comm-common/src/templates/base.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
- {{ translations.title }}
-
-
-
-
-
-
- {{ translations.attributes }}
-
- {% include "credentials.html" %}
-
-
-
-
-
diff --git a/comm-common/src/templates/credentials.html b/comm-common/src/templates/credentials.html
deleted file mode 100644
index b246a3d..0000000
--- a/comm-common/src/templates/credentials.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{%- for credential in credentials %}
-
- {% if credential.name %}
- {{ credential.name }}
- {% endif %}
- {% if credential.attributes %}
-
- {%- for kv in credential.attributes %}
- - {{ translations[kv.0]|default(value=kv.0) }}
- - {{ kv.1 }}
- {%- endfor %}
-
- {% endif %}
-
-{%- endfor %}
-{% include "logout.html" %}
diff --git a/comm-common/src/templates/expired.html b/comm-common/src/templates/expired.html
deleted file mode 100644
index 44e6c58..0000000
--- a/comm-common/src/templates/expired.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
{{ translations.login_expired }}
- {% include "logout.html" %}
-
diff --git a/comm-common/src/templates/login.html b/comm-common/src/templates/login.html
deleted file mode 100644
index cbe7bcb..0000000
--- a/comm-common/src/templates/login.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/comm-common/src/templates/not_found.html b/comm-common/src/templates/not_found.html
deleted file mode 100644
index e267c99..0000000
--- a/comm-common/src/templates/not_found.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
{{ translations.no_credentials_found }}
- {% include "logout.html" %}
-
diff --git a/comm-plugin/.gitignore b/comm-plugin/.gitignore
deleted file mode 100644
index b31a466..0000000
--- a/comm-plugin/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/target
-/.cache
-attribute-ui/node_modules/
-attribute-ui/public/
-attribute-ui/.parcel-cache
-attribute-ui/.yarn-cache
\ No newline at end of file
diff --git a/comm-plugin/Cargo.toml b/comm-plugin/Cargo.toml
deleted file mode 100644
index 76de2c6..0000000
--- a/comm-plugin/Cargo.toml
+++ /dev/null
@@ -1,22 +0,0 @@
-[package]
-name = "verder-helpen-comm-isolate"
-version = "0.1.0"
-edition = "2018"
-
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
-[dependencies]
-verder-helpen-sentry = { git = "https://github.com/verder-helpen/verder-helpen-sentry.git", optional = true }
-verder-helpen-jwt = { git = "https://github.com/verder-helpen/verder-helpen-jwt.git" }
-verder-helpen-proto = { git = "https://github.com/verder-helpen/verder-helpen-proto.git" }
-rocket = { version = "0.5.0-rc.3", features = ["json"] }
-serde = "1.0.159"
-serde_json = "1.0.95"
-reqwest = { version = "0.11.16", features = ["json"] }
-
-[dependencies.verder-helpen-comm-common]
-path = "../comm-common"
-features = ["auth_during_comm", "session_db"]
-
-[features]
-sentry = ["dep:verder-helpen-sentry"]
diff --git a/comm-plugin/LICENSE b/comm-plugin/LICENSE
deleted file mode 120000
index ea5b606..0000000
--- a/comm-plugin/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-../LICENSE
\ No newline at end of file
diff --git a/comm-plugin/attribute-ui/attribute.js b/comm-plugin/attribute-ui/attribute.js
deleted file mode 100644
index eb8e881..0000000
--- a/comm-plugin/attribute-ui/attribute.js
+++ /dev/null
@@ -1,53 +0,0 @@
-document.addEventListener("DOMContentLoaded", function() {
- const hostToken = window.location.pathname.split('/').pop();
- const rootElement = document.getElementById('root');
-
- function fetchAndRender() {
- return fetch(`session_info/${hostToken}`, {
- credentials: 'include',
- })
- .then((r) => {
- if (r.status === 200 || r.status === 401 || r.status === 404) {
- r.text().then((html) => {
- rootElement.innerHTML = html;
- });
- }
-
- return r.status;
- });
- }
-
- function listenForEvents() {
- const source = new EventSource(`live/session_info/${hostToken}`, { withCredentials: true });
-
- source.onmessage = (event) => {
- if (event.data) {
- fetchAndRender();
- }
- };
-
- source.onerror = () => {
- source.close();
- setTimeout(listenForEvents, 5 * 1000);
- };
- }
-
- function poll() {
- if (!document.hidden) {
- fetchAndRender().then((status) => {
- if (status === 401) {
- // keep polling until user is logged in
- setTimeout(poll, 5 * 1000);
- } else {
- // start listening for server updates
- listenForEvents();
- }
- });
- } else {
- setTimeout(poll, 5 * 1000);
- }
- }
-
- // poll until user is logged in
- poll();
-});
diff --git a/comm-plugin/attribute-ui/index.html b/comm-plugin/attribute-ui/index.html
deleted file mode 100644
index bf2f855..0000000
--- a/comm-plugin/attribute-ui/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
- Verder Helpen
-
-
-
-
-
-
-
diff --git a/config.sample.toml b/config.sample.toml
index c8df2b9..45002fa 100644
--- a/config.sample.toml
+++ b/config.sample.toml
@@ -1,5 +1,5 @@
[global]
-## NOTE: Don't (!) use this key! Generate your own!
+## NOTE: DON'T USE THIS KEY! GENERATE YOUR OWN!
secret_key = "2P7d9MsOAZWyPu8HZn2AyMvOeN9MhkFEb4C9IzkLvno="
internal_url = "http://comm-isolate:8000/internal"
@@ -149,7 +149,6 @@ Bs6neR/sZuHzNm8y/xtxj2ZAEw==
session = { url = "postgres://tg@comm-isolate-psql:5432/tg" }
[global.translations.en]
-title = "Information"
unknown_error = "Unknown error"
loading = "Loading..."
purpose = "Subject"
@@ -168,9 +167,9 @@ login_successful = "Login successfull. You can close this window."
logout_successful = "Logout successfull. You can close this window."
insufficient_permission = "You do not have sufficient permissions to access this resource."
no_credentials_found = "There are no authenticated guests (yet)"
+secured_by = "secured by"
[global.translations.nl]
-title = "Verder Helpen gegevens"
unknown_error = "Onbekende fout"
loading = "Laden..."
purpose = "Onderwerp"
@@ -189,3 +188,4 @@ login_successful = "U bent ingelogd. U kan dit venster nu sluiten"
logout_successful = "U bent uitgelogd. U kan dit venster nu sluiten"
insufficient_permission = "Uw account heeft niet voldoende rechten, probeer met een ander account in te loggen"
no_credentials_found = "Er zijn (nog) geen geïdentificeerde gasten"
+secured_by = "beveiligd door"
diff --git a/comm-common/src/auth.rs b/src/auth.rs
similarity index 85%
rename from comm-common/src/auth.rs
rename to src/auth.rs
index 74a4c70..f635297 100644
--- a/comm-common/src/auth.rs
+++ b/src/auth.rs
@@ -263,53 +263,3 @@ pub fn render_login(
Err(Error::Unauthorized(login_url))
}
-
-pub fn render_unauthorized(
- config: &Config,
- render_type: RenderType,
- translations: Translations,
-) -> Result {
- let logout_url = format!("{}/auth/logout", config.external_host_url());
-
- if render_type == RenderType::Html {
- let mut context = Context::new();
-
- context.insert("translations", translations.all());
- if config.auth_provider().is_some() {
- context.insert("logout_url", &logout_url);
- }
-
- let content = TEMPLATES.render("expired.html", &context)?;
- return Ok(RenderedContent {
- content,
- render_type,
- });
- }
-
- Err(Error::Forbidden(logout_url))
-}
-
-pub fn render_not_found(
- config: &Config,
- render_type: RenderType,
- translations: Translations,
-) -> Result {
- let logout_url = format!("{}/auth/logout", config.external_host_url());
-
- if render_type == RenderType::Html {
- let mut context = Context::new();
-
- context.insert("translations", translations.all());
- if config.auth_provider().is_some() {
- context.insert("logout_url", &logout_url);
- }
-
- let content = TEMPLATES.render("not_found.html", &context)?;
- return Ok(RenderedContent {
- content,
- render_type,
- });
- }
-
- Err(Error::NotFound)
-}
diff --git a/comm-common/src/config.rs b/src/config.rs
similarity index 98%
rename from comm-common/src/config.rs
rename to src/config.rs
index bc29308..b08ae04 100644
--- a/comm-common/src/config.rs
+++ b/src/config.rs
@@ -19,6 +19,7 @@ pub struct RawConfig {
external_guest_url: Option,
external_host_url: Option,
/// Sentry DSN
+ #[cfg(feature = "sentry")]
sentry_dsn: Option,
/// Default locale
default_locale: String,
@@ -36,6 +37,8 @@ pub struct RawConfig {
#[serde(flatten)]
/// Configuration specific for auth during comm
auth_during_comm_config: RawAuthDuringCommConfig,
+
+ custom_css: Option,
}
/// configuration container for a typical verder-helpen communication plugin
@@ -45,6 +48,7 @@ pub struct Config {
pub internal_url: String,
pub external_guest_url: Option,
pub external_host_url: Option,
+ #[cfg(feature = "sentry")]
pub sentry_dsn: Option,
pub default_locale: String,
pub translations: LanguageTranslations,
@@ -57,6 +61,8 @@ pub struct Config {
#[cfg(feature = "auth_during_comm")]
#[serde(flatten)]
pub auth_during_comm_config: AuthDuringCommConfig,
+
+ pub custom_css: Option,
}
// This tryfrom can be removed once try_from for fields lands in serde
@@ -79,12 +85,14 @@ impl TryFrom for Config {
internal_url: raw_config.internal_url,
external_guest_url: raw_config.external_guest_url,
external_host_url: raw_config.external_host_url,
+ #[cfg(feature = "sentry")]
sentry_dsn: raw_config.sentry_dsn,
default_locale: raw_config.default_locale,
translations: raw_config.translations,
auth_provider,
decrypter: Box::::try_from(raw_config.decryption_privkey)?,
verifier: Box::::try_from(raw_config.signature_pubkey)?,
+ custom_css: raw_config.custom_css,
})
}
}
@@ -116,6 +124,7 @@ impl Config {
}
}
+ #[cfg(feature = "sentry")]
pub fn sentry_dsn(&self) -> Option<&str> {
self.sentry_dsn.as_deref()
}
diff --git a/comm-common/src/credentials.rs b/src/credentials.rs
similarity index 70%
rename from comm-common/src/credentials.rs
rename to src/credentials.rs
index 7e6cf23..592346b 100644
--- a/comm-common/src/credentials.rs
+++ b/src/credentials.rs
@@ -1,11 +1,10 @@
use serde::Serialize;
-use serde_json;
use tera::Context;
#[cfg(feature = "session_db")]
use crate::session::{Session, SessionDBConn};
#[cfg(feature = "session_db")]
-use crate::types::platform_token::{FromPlatformJwt, HostToken};
+use crate::types::platform_token::HostToken;
use crate::{
config::Config,
error::Error,
@@ -22,43 +21,45 @@ pub fn collect_credentials(
let mut credentials: Vec = vec![];
for guest_auth_result in guest_auth_results.iter() {
- if let Some(result) = &guest_auth_result.auth_result {
- if let Some(attributes) =
- verder_helpen_jwt::dangerous_decrypt_auth_result_without_verifying_expiration(
- result,
- config.verifier(),
- config.decrypter(),
- )?
- .attributes
- {
- credentials.push(Credentials {
- name: guest_auth_result.name.clone(),
- purpose: guest_auth_result.purpose.clone(),
- attributes,
- });
- }
+ let attributes = if let Some(result) = &guest_auth_result.auth_result {
+ verder_helpen_jwt::dangerous_decrypt_auth_result_without_verifying_expiration(
+ result,
+ config.verifier(),
+ config.decrypter(),
+ )?
+ .attributes
+ } else {
+ None
};
+
+ credentials.push(Credentials {
+ name: guest_auth_result.name.clone(),
+ purpose: guest_auth_result.purpose.clone(),
+ attributes,
+ });
}
Ok(credentials)
}
-#[derive(Serialize)]
+#[derive(Debug, Serialize)]
pub struct SortedCredentials {
pub purpose: Option,
pub name: Option,
- pub attributes: Vec<(String, String)>,
+ pub attributes: Option>,
}
/// sorted credentials are sorted by their name (key)
impl From for SortedCredentials {
fn from(credentials: Credentials) -> Self {
- let mut attributes = credentials
- .attributes
- .into_iter()
- .collect::>();
+ let attributes = if let Some(attributes) = credentials.attributes {
+ let mut attributes = attributes.into_iter().collect::>();
- attributes.sort_by(|x, y| x.0.cmp(&y.0));
+ attributes.sort_by(|x, y| x.0.cmp(&y.0));
+ Some(attributes)
+ } else {
+ None
+ };
SortedCredentials {
purpose: credentials.purpose,
@@ -97,11 +98,11 @@ pub fn render_credentials(
context.insert("logout_url", &logout_url);
}
- let content = if render_type == RenderType::HtmlPage {
- TEMPLATES.render("base.html", &context)?
- } else {
- TEMPLATES.render("credentials.html", &context)?
- };
+ if let Some(custom_css) = &config.custom_css {
+ context.insert("custom_css", &custom_css);
+ }
+
+ let content = TEMPLATES.render("credentials.html", &context)?;
Ok(RenderedContent {
content,
@@ -109,31 +110,15 @@ pub fn render_credentials(
})
}
-/// retrieve sessions for all users in a room
-/// the id of the room is provided by a host jwt
-#[cfg(feature = "session_db")]
-pub async fn get_sessions_for_host(
- host_token: String,
- config: &Config,
- db: &SessionDBConn,
-) -> Result, Error> {
- let host_token = HostToken::from_platform_jwt(
- &host_token,
- config.auth_during_comm_config().host_verifier(),
- )?;
-
- Session::find_by_room_id(host_token.room_id, db).await
-}
-
/// retrieve authentication results for all users in a room
/// the id of the room is provided by a host jwt
#[cfg(feature = "session_db")]
pub async fn get_credentials_for_host(
- host_token: String,
+ host_token: HostToken,
config: &Config,
db: &SessionDBConn,
) -> Result, Error> {
- let sessions = get_sessions_for_host(host_token, config, db).await?;
+ let sessions = Session::find_by_room_id(host_token.room_id, db).await?;
for session in &sessions {
session.mark_active(db).await?;
}
@@ -146,8 +131,10 @@ pub async fn get_credentials_for_host(
auth_result: session.auth_result,
})
.collect::>();
-
- collect_credentials(&guest_auth_results, config)
+ println!("{:?}", &guest_auth_results);
+ let creds = collect_credentials(&guest_auth_results, config);
+ println!("{:?}", &creds);
+ creds
}
#[cfg(test)]
@@ -247,6 +234,7 @@ mod tests {
internal_url: "https://example.com".to_string(),
external_host_url: None,
external_guest_url: None,
+ #[cfg(feature = "sentry")]
sentry_dsn: None,
default_locale: String::from("nl"),
translations: HashMap::new(),
@@ -254,6 +242,7 @@ mod tests {
auth_provider: None,
verifier,
auth_during_comm_config,
+ custom_css: None,
};
let translations = Translations {
@@ -262,43 +251,32 @@ mod tests {
("title".to_string(), "Gegevens".to_string()),
("age".to_string(), "Leeftijd".to_string()),
("email".to_string(), "E-mailadres".to_string()),
+ ("secured_by".to_string(), "Beveiligd door".to_string()),
]),
language: "nl".to_string(),
};
let credentials = collect_credentials(&guest_auth_results, &config).unwrap();
- let out_result =
+ let actual =
render_credentials(&config, credentials, RenderType::Html, translations.clone())
.unwrap();
- let result: &str = "HenkDieter\
- h4>- Leeftijd
- 42\
- dd>
- E-mailadres
- hd@example.com\
- dd>
";
-
- assert_eq!(
- remove_whitespace(result),
- remove_whitespace(out_result.content())
- );
-
- let credentials = collect_credentials(&guest_auth_results, &config).unwrap();
- let out_result = render_credentials(
- &config,
- credentials,
- RenderType::HtmlPage,
- translations.clone(),
- )
- .unwrap();
- let result: &str = "GegevensGegevens
HenkDieter\
- h4>- Leeftijd
- 42\
- dd>
- E-mailadres
- hd@example.com\
- dd>