refactor(tools): rename rhema-tools-contract to rhema-claw-tools-contract
The crate binds the claw to its client tools, not tools at large, so it carries the claw's name: package, lib and dep names, the mock's binary, and the conformance suite's use paths. Specs and README follow. The tools/contract directory keeps its name, and no reference to the old name remains.
This commit is contained in:
1 parent
9e132fdf71
commit
d067f4632f
11 files changed
+91
-76
No files matched your search
Generated
+13
-13
@@ -466,8 +466,8 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"clap",
|
||||
"rhema-claw-tools-contract",
|
||||
"rhema-tools-common",
|
||||
"rhema-tools-contract",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
@@ -525,18 +525,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rhema-tools-common"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"rhema-tools-contract",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"ureq",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rhema-tools-contract"
|
||||
name = "rhema-claw-tools-contract"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"serde",
|
||||
@@ -544,6 +533,17 @@ dependencies = [
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rhema-tools-common"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"rhema-claw-tools-contract",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"ureq",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.23"
|
||||
|
||||
@@ -9,7 +9,7 @@ repository.workspace = true
|
||||
authors.workspace = true
|
||||
|
||||
[dependencies]
|
||||
rhema-tools-contract = { path = "../contract" }
|
||||
rhema-claw-tools-contract = { path = "../contract" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
thiserror.workspace = true
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
use std::io::Write;
|
||||
|
||||
use rhema_tools_contract::{ApiError, CONTRACT_HEADER, CONTRACT_VERSION};
|
||||
use rhema_claw_tools_contract::{ApiError, CONTRACT_HEADER, CONTRACT_VERSION};
|
||||
use serde::Serialize;
|
||||
use serde_json::Value;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "rhema-tools-contract"
|
||||
name = "rhema-claw-tools-contract"
|
||||
description = "The wire contract between the rhema claw daemon and its thin client tools: routes, shapes, the agent-token allowlist, and the conformance suite"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//! The daemon's real router runs the same suite in its test tree —
|
||||
//! same results is the definition of implementing the contract.
|
||||
|
||||
use rhema_tools_contract::{CallRequest, MockClaw, conformance};
|
||||
use rhema_claw_tools_contract::{CallRequest, MockClaw, conformance};
|
||||
|
||||
#[tokio::test]
|
||||
async fn the_suite_passes_against_the_mock_router() {
|
||||
@@ -28,31 +28,40 @@ async fn an_open_mock_fails_the_suite() {
|
||||
|
||||
#[tokio::test]
|
||||
async fn the_agent_allowlist_reads_the_documented_routes() {
|
||||
assert!(rhema_tools_contract::agent_allowed("GET", "/v1/watches"));
|
||||
assert!(rhema_tools_contract::agent_allowed(
|
||||
assert!(rhema_claw_tools_contract::agent_allowed(
|
||||
"GET",
|
||||
"/v1/watches"
|
||||
));
|
||||
assert!(rhema_claw_tools_contract::agent_allowed(
|
||||
"DELETE",
|
||||
"/v1/watches/github/acme/widgets"
|
||||
));
|
||||
assert!(rhema_tools_contract::agent_allowed(
|
||||
assert!(rhema_claw_tools_contract::agent_allowed(
|
||||
"POST",
|
||||
"/v1/notifications"
|
||||
));
|
||||
assert!(rhema_tools_contract::agent_allowed(
|
||||
assert!(rhema_claw_tools_contract::agent_allowed(
|
||||
"DELETE",
|
||||
"/v1/tasks/12"
|
||||
));
|
||||
assert!(!rhema_tools_contract::agent_allowed("POST", "/v1/ingest"));
|
||||
assert!(!rhema_tools_contract::agent_allowed(
|
||||
assert!(!rhema_claw_tools_contract::agent_allowed(
|
||||
"POST",
|
||||
"/v1/ingest"
|
||||
));
|
||||
assert!(!rhema_claw_tools_contract::agent_allowed(
|
||||
"POST",
|
||||
"/v1/consents/c-1"
|
||||
));
|
||||
assert!(!rhema_tools_contract::agent_allowed("GET", "/v1/consents"));
|
||||
assert!(!rhema_tools_contract::agent_allowed(
|
||||
assert!(!rhema_claw_tools_contract::agent_allowed(
|
||||
"GET",
|
||||
"/v1/consents"
|
||||
));
|
||||
assert!(!rhema_claw_tools_contract::agent_allowed(
|
||||
"DELETE",
|
||||
"/v1/phones/p1"
|
||||
));
|
||||
assert!(
|
||||
!rhema_tools_contract::agent_allowed("GET", "/v1/watches/github/acme/widgets"),
|
||||
!rhema_claw_tools_contract::agent_allowed("GET", "/v1/watches/github/acme/widgets"),
|
||||
"only DELETE reaches subpaths of /v1/watches"
|
||||
);
|
||||
}
|
||||
@@ -14,7 +14,7 @@ path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
rhema-tools-common = { path = "../common" }
|
||||
rhema-tools-contract = { path = "../contract" }
|
||||
rhema-claw-tools-contract = { path = "../contract" }
|
||||
clap.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
use clap::{Parser, Subcommand};
|
||||
use rhema_tools_common::{Client, Config, fail, print};
|
||||
use rhema_tools_contract::NotificationPush;
|
||||
use rhema_claw_tools_contract::NotificationPush;
|
||||
|
||||
/// Push a notification to the user's devices.
|
||||
#[derive(Parser)]
|
||||
@@ -49,7 +49,7 @@ fn main() {
|
||||
body,
|
||||
device,
|
||||
};
|
||||
match client.call("POST", rhema_tools_contract::NOTIFICATIONS, Some(&push)) {
|
||||
match client.call("POST", rhema_claw_tools_contract::NOTIFICATIONS, Some(&push)) {
|
||||
Ok(record) => print(&record),
|
||||
Err(error) => fail(error),
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ use axum::extract::State;
|
||||
use axum::http::{HeaderMap, StatusCode};
|
||||
use axum::routing::get;
|
||||
use rhema_tools_common::{Client, Config, ToolError};
|
||||
use rhema_tools_contract::NotificationPush;
|
||||
use rhema_claw_tools_contract::NotificationPush;
|
||||
use serde_json::{Value, json};
|
||||
|
||||
/// What the fake daemon recorded, for the test to assert on.
|
||||
@@ -82,7 +82,7 @@ async fn a_push_rides_the_contract_and_prints_the_row() {
|
||||
let row = client
|
||||
.call(
|
||||
"POST",
|
||||
rhema_tools_contract::NOTIFICATIONS,
|
||||
rhema_claw_tools_contract::NOTIFICATIONS,
|
||||
Some(&NotificationPush {
|
||||
title: "CI is red".into(),
|
||||
body: "main failed".into(),
|
||||
@@ -111,7 +111,7 @@ async fn a_refused_call_maps_to_denied() {
|
||||
let error = client
|
||||
.call(
|
||||
"POST",
|
||||
rhema_tools_contract::NOTIFICATIONS,
|
||||
rhema_claw_tools_contract::NOTIFICATIONS,
|
||||
Some(&NotificationPush {
|
||||
title: "x".into(),
|
||||
body: "y".into(),
|
||||
|
||||
Reference in new issue
Block a user