use std::sync::LazyLock;
use crate::server::trust_task::TrustTask;
pub static TASK_AUTH_AUTHENTICATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/authenticate/0.1").expect("static")
});
pub static TASK_AUTH_AUTHENTICATE_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/authenticate/0.1#response").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_STEP_UP_PASSKEY_START_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_STEP_UP_PASSKEY_START_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/start/0.1").expect("static")
});
pub static TASK_AUTH_STEP_UP_PASSKEY_START_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/start/0.2").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_STEP_UP_PASSKEY_FINISH_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_STEP_UP_PASSKEY_FINISH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/finish/0.1").expect("static")
});
pub static TASK_AUTH_STEP_UP_PASSKEY_FINISH_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/finish/0.2").expect("static")
});
pub static TASK_AUTH_STEP_UP_CHECK_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/auth/step-up-check/1.0").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_STEP_UP_VTA_START_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_STEP_UP_VTA_START_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/step-up/approve-request/0.1").expect("static")
});
pub static TASK_AUTH_STEP_UP_VTA_START_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/step-up/approve-request/0.2").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_STEP_UP_VTA_FINISH_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_STEP_UP_VTA_FINISH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/step-up/approve-response/0.1").expect("static")
});
pub static TASK_AUTH_STEP_UP_VTA_FINISH_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/step-up/approve-response/0.2").expect("static")
});
pub static TASK_CONSENT_REQUEST_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/task-consent/request/0.1").expect("static")
});
pub static TASK_CONSENT_DECISION_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/task-consent/decision/0.1").expect("static")
});
pub static TASK_CONSENT_DECISION_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/task-consent/decision/0.1#response")
.expect("static")
});
pub static TASK_ADMIN_ACTION_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/admin-action/1.0").expect("static")
});
pub static TASK_DID_CHECK_NAME_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/check-name/0.1").expect("static")
});
pub static TASK_DID_CHECK_NAME_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/check-name/0.1#response")
.expect("static")
});
pub static TASK_DID_REGISTER_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/register/0.1").expect("static")
});
pub static TASK_DID_REGISTER_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/register/0.1#response")
.expect("static")
});
pub static TASK_DID_DELETE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/delete/0.1").expect("static")
});
pub static TASK_DID_DELETE_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/delete/0.1#response")
.expect("static")
});
pub static TASK_DID_PROBLEM_REPORT_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/problem-report/0.1")
.expect("static")
});
pub static TASK_DID_INFO_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/info/0.1").expect("static")
});
pub static TASK_DID_INFO_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/info/0.1#response")
.expect("static")
});
pub static TASK_DID_LIST_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/list/0.1").expect("static")
});
pub static TASK_DID_LIST_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/list/0.1#response")
.expect("static")
});
pub static TASK_DID_CHANGE_OWNER_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/change-owner/0.1")
.expect("static")
});
pub static TASK_DID_CHANGE_OWNER_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/change-owner/0.1#response")
.expect("static")
});
pub static TASK_ME_DOMAINS_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/me/domains/0.1").expect("static")
});
pub static TASK_ME_DOMAINS_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/me/domains/0.1#response")
.expect("static")
});
pub static TASK_DID_SET_STATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/set-state/0.1").expect("static")
});
pub static TASK_DID_ROLLBACK_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/did/rollback/0.1").expect("static")
});
pub static TASK_AGENT_NAME_UPDATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/agent-name/update/0.1")
.expect("static")
});
pub static TASK_AGENT_NAME_REMOVE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/agent-name/remove/0.1")
.expect("static")
});
pub static TASK_AGENT_NAME_CHECK_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/agent-name/check/0.1")
.expect("static")
});
pub static TASK_AGENT_NAME_LIST_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/agent-name/list/0.1")
.expect("static")
});
pub static TASK_DOMAIN_CREATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/create/0.1").expect("static")
});
pub static TASK_DOMAIN_UPDATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/update/0.1").expect("static")
});
pub static TASK_DOMAIN_SET_STATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/set-state/0.1")
.expect("static")
});
pub static TASK_DOMAIN_SET_DEFAULT_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/set-default/0.1")
.expect("static")
});
pub static TASK_DOMAIN_PURGE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/purge/0.1").expect("static")
});
pub static TASK_DOMAIN_ASSIGN_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/assign/0.1").expect("static")
});
pub static TASK_DOMAIN_UNASSIGN_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/domain/unassign/0.1")
.expect("static")
});
pub static TASK_SERVER_REGISTER_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/did-management/server/register/0.1")
.expect("static")
});
pub static TASK_DOMAIN_LIST_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/domain/list/1.0").expect("static")
});
pub static TASK_AUTH_CHALLENGE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/challenge/0.1").expect("static")
});
pub static TASK_AUTH_REFRESH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/refresh/0.1").expect("static")
});
pub static TASK_AUTH_PASSKEY_ENROLL_START_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/enroll/start/0.1").expect("static")
});
pub static TASK_AUTH_PASSKEY_ENROLL_FINISH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/enroll/finish/0.1").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_PASSKEY_LOGIN_START_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_PASSKEY_LOGIN_START_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/start/0.1").expect("static")
});
pub static TASK_AUTH_PASSKEY_LOGIN_START_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/start/0.2").expect("static")
});
#[deprecated(
since = "0.8.0",
note = "spec bumped to 0.2; use TASK_AUTH_PASSKEY_LOGIN_FINISH_0_2. \
The 0.1 URI is still accepted on inbound for backwards compatibility."
)]
pub static TASK_AUTH_PASSKEY_LOGIN_FINISH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/finish/0.1").expect("static")
});
pub static TASK_AUTH_PASSKEY_LOGIN_FINISH_0_2: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/login/finish/0.2").expect("static")
});
pub static TASK_AUTH_PASSKEY_INVITE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/auth/passkey/enroll/invite/0.1").expect("static")
});
pub static TASK_ACL_LIST_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/acl/list/1.0").expect("static")
});
pub static TASK_ACL_CREATE_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/acl/create/1.0").expect("static")
});
pub static TASK_ACL_UPDATE_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/acl/update/1.0").expect("static")
});
pub static TASK_ACL_DELETE_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/acl/delete/1.0").expect("static")
});
pub static TASK_DID_LOG_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/did/log/1.0").expect("static")
});
pub static TASK_DID_RAW_LOG_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/did/raw-log/1.0").expect("static")
});
pub static TASK_AGENT_NAME_RESOLVE_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/agent-name/resolve/1.0").expect("static")
});
pub static TASK_STATS_SERVER_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/stats/server/1.0").expect("static")
});
pub static TASK_STATS_DID_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/stats/did/1.0").expect("static")
});
pub static TASK_TIMESERIES_SERVER_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/timeseries/server/1.0").expect("static")
});
pub static TASK_TIMESERIES_DID_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/timeseries/did/1.0").expect("static")
});
pub static TASK_SERVICES_OVERVIEW_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/services/overview/1.0").expect("static")
});
pub static TASK_CONFIG_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/config/1.0").expect("static")
});
pub static TASK_REGISTRY_LIST_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/registry/list/1.0").expect("static")
});
pub static TASK_REGISTRY_ADMIN_REGISTER_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/registry/admin-register/1.0")
.expect("static")
});
pub static TASK_REGISTRY_GET_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/registry/get/1.0").expect("static")
});
pub static TASK_REGISTRY_DEREGISTER_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/registry/deregister/1.0").expect("static")
});
pub static TASK_REGISTRY_HEALTH_1_0: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/did-hosting/registry/health/1.0").expect("static")
});
pub static TASK_WEBVH_WITNESS_PUBLISH_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/witness/publish/0.1").expect("static")
});
pub static TASK_WEBVH_WITNESS_PUBLISH_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/witness/publish/0.1#response")
.expect("static")
});
pub static TASK_WEBVH_SYNC_UPDATE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/sync/update/0.1").expect("static")
});
pub static TASK_WEBVH_SYNC_UPDATE_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/sync/update/0.1#response").expect("static")
});
pub static TASK_WEBVH_SYNC_DELETE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/sync/delete/0.1").expect("static")
});
pub static TASK_WEBVH_SYNC_DELETE_RESPONSE_0_1: LazyLock<TrustTask> = LazyLock::new(|| {
TrustTask::new("https://trusttasks.org/spec/webvh/sync/delete/0.1#response").expect("static")
});
#[cfg(test)]
mod tests {
use super::*;
#[test]
#[allow(deprecated)]
fn every_registered_url_validates() {
let all: &[&LazyLock<TrustTask>] = &[
&TASK_AUTH_AUTHENTICATE_0_1,
&TASK_AUTH_AUTHENTICATE_RESPONSE_0_1,
&TASK_AUTH_STEP_UP_PASSKEY_START_0_1,
&TASK_AUTH_STEP_UP_PASSKEY_START_0_2,
&TASK_AUTH_STEP_UP_PASSKEY_FINISH_0_1,
&TASK_AUTH_STEP_UP_PASSKEY_FINISH_0_2,
&TASK_AUTH_STEP_UP_CHECK_1_0,
&TASK_AUTH_STEP_UP_VTA_START_0_1,
&TASK_AUTH_STEP_UP_VTA_START_0_2,
&TASK_AUTH_STEP_UP_VTA_FINISH_0_1,
&TASK_AUTH_STEP_UP_VTA_FINISH_0_2,
&TASK_CONSENT_REQUEST_0_1,
&TASK_CONSENT_DECISION_0_1,
&TASK_CONSENT_DECISION_RESPONSE_0_1,
&TASK_ADMIN_ACTION_1_0,
&TASK_DID_CHECK_NAME_0_1,
&TASK_DID_CHECK_NAME_RESPONSE_0_1,
&TASK_DID_REGISTER_0_1,
&TASK_DID_REGISTER_RESPONSE_0_1,
&TASK_DID_DELETE_0_1,
&TASK_DID_DELETE_RESPONSE_0_1,
&TASK_DID_PROBLEM_REPORT_0_1,
&TASK_DID_INFO_0_1,
&TASK_DID_INFO_RESPONSE_0_1,
&TASK_DID_LIST_0_1,
&TASK_DID_LIST_RESPONSE_0_1,
&TASK_DID_CHANGE_OWNER_0_1,
&TASK_DID_CHANGE_OWNER_RESPONSE_0_1,
&TASK_ME_DOMAINS_0_1,
&TASK_ME_DOMAINS_RESPONSE_0_1,
&TASK_DID_SET_STATE_0_1,
&TASK_DID_ROLLBACK_0_1,
&TASK_AGENT_NAME_UPDATE_0_1,
&TASK_AGENT_NAME_REMOVE_0_1,
&TASK_AGENT_NAME_CHECK_0_1,
&TASK_AGENT_NAME_LIST_0_1,
&TASK_DOMAIN_CREATE_0_1,
&TASK_DOMAIN_UPDATE_0_1,
&TASK_DOMAIN_SET_STATE_0_1,
&TASK_DOMAIN_SET_DEFAULT_0_1,
&TASK_DOMAIN_PURGE_0_1,
&TASK_DOMAIN_ASSIGN_0_1,
&TASK_DOMAIN_UNASSIGN_0_1,
&TASK_SERVER_REGISTER_0_1,
&TASK_DOMAIN_LIST_1_0,
&TASK_AUTH_CHALLENGE_0_1,
&TASK_AUTH_REFRESH_0_1,
&TASK_AUTH_PASSKEY_ENROLL_START_0_1,
&TASK_AUTH_PASSKEY_ENROLL_FINISH_0_1,
&TASK_AUTH_PASSKEY_LOGIN_START_0_1,
&TASK_AUTH_PASSKEY_LOGIN_START_0_2,
&TASK_AUTH_PASSKEY_LOGIN_FINISH_0_1,
&TASK_AUTH_PASSKEY_LOGIN_FINISH_0_2,
&TASK_AUTH_PASSKEY_INVITE_0_1,
&TASK_ACL_LIST_1_0,
&TASK_ACL_CREATE_1_0,
&TASK_ACL_UPDATE_1_0,
&TASK_ACL_DELETE_1_0,
&TASK_DID_LOG_1_0,
&TASK_DID_RAW_LOG_1_0,
&TASK_AGENT_NAME_RESOLVE_1_0,
&TASK_STATS_SERVER_1_0,
&TASK_STATS_DID_1_0,
&TASK_TIMESERIES_SERVER_1_0,
&TASK_TIMESERIES_DID_1_0,
&TASK_SERVICES_OVERVIEW_1_0,
&TASK_CONFIG_1_0,
&TASK_REGISTRY_LIST_1_0,
&TASK_REGISTRY_ADMIN_REGISTER_1_0,
&TASK_REGISTRY_GET_1_0,
&TASK_REGISTRY_DEREGISTER_1_0,
&TASK_REGISTRY_HEALTH_1_0,
&TASK_WEBVH_WITNESS_PUBLISH_0_1,
&TASK_WEBVH_WITNESS_PUBLISH_RESPONSE_0_1,
&TASK_WEBVH_SYNC_UPDATE_0_1,
&TASK_WEBVH_SYNC_UPDATE_RESPONSE_0_1,
&TASK_WEBVH_SYNC_DELETE_0_1,
&TASK_WEBVH_SYNC_DELETE_RESPONSE_0_1,
];
for lock in all {
let _t = lock.as_str(); assert!(
lock.as_str().starts_with("https://trusttasks.org/"),
"URL must be under trusttasks.org: {}",
lock.as_str()
);
}
}
#[test]
fn method_agnostic_urls_under_did_hosting() {
for url in [
TASK_DOMAIN_LIST_1_0.as_str(),
TASK_DID_LOG_1_0.as_str(),
TASK_REGISTRY_LIST_1_0.as_str(),
] {
assert!(
url.starts_with("https://trusttasks.org/did-hosting/"),
"expected /did-hosting/ namespace: {url}"
);
}
}
#[test]
fn webvh_specific_urls_under_spec_webvh() {
for url in [
TASK_WEBVH_WITNESS_PUBLISH_0_1.as_str(),
TASK_WEBVH_SYNC_UPDATE_0_1.as_str(),
] {
assert!(
url.starts_with("https://trusttasks.org/spec/webvh/"),
"expected /spec/webvh/ namespace: {url}"
);
}
}
#[test]
fn every_url_ends_in_a_maj_min_version() {
let all: &[&LazyLock<TrustTask>] = &[
&TASK_AUTH_AUTHENTICATE_0_1,
&TASK_DID_CHECK_NAME_0_1,
&TASK_DOMAIN_LIST_1_0,
&TASK_WEBVH_SYNC_UPDATE_0_1,
];
for lock in all {
let url = lock.as_str();
let tail = url.rsplit('/').next().unwrap();
let parts: Vec<&str> = tail.split('.').collect();
assert_eq!(parts.len(), 2, "version must be maj.min only: {url}");
assert!(
parts[0].chars().all(|c| c.is_ascii_digit())
&& parts[1].chars().all(|c| c.is_ascii_digit()),
"version components must be digits: {url}"
);
}
}
}