From 3cf1accdddb2a183b447d81dcd4c4e98c3694dad Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Thu, 16 Feb 2023 09:39:42 -0300 Subject: [PATCH] Use `Did` in a bunch more places Instead of showing just public keys we need to show the fully qualified spec for a NID which is prefixed by `did:key:` While we want to maintain `Author` and `ActorId` for internal use. Signed-off-by: Sebastian Martinez --- radicle-httpd/Cargo.toml | 1 + radicle-httpd/src/api/json.rs | 12 ++---------- radicle-httpd/src/api/v1/projects.rs | 25 +++++++++++++------------ 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/radicle-httpd/Cargo.toml b/radicle-httpd/Cargo.toml index c727b661c..fff785815 100644 --- a/radicle-httpd/Cargo.toml +++ b/radicle-httpd/Cargo.toml @@ -42,6 +42,7 @@ version = "0.2.0" [dev-dependencies] hyper = { version = "0.14.17", default-features = false, features = ["client"] } +pretty_assertions = { version = "1.3.0" } radicle-cli = { path = "../radicle-cli" } radicle-crypto = { path = "../radicle-crypto" } tempfile = { version = "3.3.0" } diff --git a/radicle-httpd/src/api/json.rs b/radicle-httpd/src/api/json.rs index e6aeff71b..dd4bed70b 100644 --- a/radicle-httpd/src/api/json.rs +++ b/radicle-httpd/src/api/json.rs @@ -9,8 +9,7 @@ use serde_json::{json, Value}; use radicle::cob::issue::{Issue, IssueId}; use radicle::cob::patch::{Patch, PatchId}; use radicle::cob::thread::{self, CommentId}; -use radicle::cob::{OpId, Timestamp}; -use radicle::identity::PublicKey; +use radicle::cob::{Author, OpId, Timestamp}; use radicle_surf::blob::Blob; use radicle_surf::tree::Tree; use radicle_surf::{Commit, Stats}; @@ -130,11 +129,6 @@ fn name_in_path(path: &str) -> &str { } } -#[derive(Serialize)] -struct Author { - id: PublicKey, -} - #[derive(Serialize)] #[serde(rename_all = "camelCase")] struct Comment { @@ -156,9 +150,7 @@ impl<'a> FromIterator<(&'a CommentId, &'a thread::Comment)> for Comments { for (id, comment) in iter { comments.push(Comment { id: id.to_owned(), - author: Author { - id: comment.author(), - }, + author: comment.author().into(), body: comment.body().to_owned(), reactions: [], timestamp: comment.timestamp(), diff --git a/radicle-httpd/src/api/v1/projects.rs b/radicle-httpd/src/api/v1/projects.rs index 0655006ab..68fcaffb6 100644 --- a/radicle-httpd/src/api/v1/projects.rs +++ b/radicle-httpd/src/api/v1/projects.rs @@ -559,6 +559,7 @@ async fn patch_handler( mod routes { use axum::body::Body; use axum::http::StatusCode; + use pretty_assertions::assert_eq; use serde_json::json; use crate::api::test::{self, get, patch, post, HEAD, HEAD_1, ISSUE_ID, PATCH_ID}; @@ -1020,7 +1021,7 @@ mod routes { { "id": ISSUE_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" }, "title": "Issue #1", "state": { @@ -1031,7 +1032,7 @@ mod routes { { "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/1", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" }, "body": "Change 'hello world' to 'hello everyone'", "reactions": [], @@ -1083,7 +1084,7 @@ mod routes { json!({ "id": CREATED_ISSUE_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "assignees": [], "title": "Issue #2", @@ -1093,7 +1094,7 @@ mod routes { "discussion": [{ "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/1", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "body": "Change 'hello world' to 'hello everyone'", "reactions": [], @@ -1143,7 +1144,7 @@ mod routes { json!({ "id": ISSUE_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "assignees": [], "title": "Issue #1", @@ -1154,7 +1155,7 @@ mod routes { { "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/1", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "body": "Change 'hello world' to 'hello everyone'", "reactions": [], @@ -1164,7 +1165,7 @@ mod routes { { "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/5", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "body": "This is first-level comment", "reactions": [], @@ -1213,7 +1214,7 @@ mod routes { json!({ "id": ISSUE_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "assignees": [], "title": "Issue #1", @@ -1224,7 +1225,7 @@ mod routes { { "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/1", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "body": "Change 'hello world' to 'hello everyone'", "reactions": [], @@ -1234,7 +1235,7 @@ mod routes { { "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi/5", "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi", }, "body": "This is a reply to the first comment", "reactions": [], @@ -1260,7 +1261,7 @@ mod routes { { "id": PATCH_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" }, "title": "A new `hello word`", "description": "change `hello world` in README to something else", @@ -1291,7 +1292,7 @@ mod routes { { "id": PATCH_ID, "author": { - "id": "z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" + "id": "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi" }, "title": "A new `hello word`", "description": "change `hello world` in README to something else",