feat: add workspace foundation

This commit is contained in:
a.tolmachev
2026-03-29 21:45:53 +03:00
parent d3ab565fff
commit d757adb192
19 changed files with 743 additions and 109 deletions
+16 -3
View File
@@ -12,12 +12,13 @@ use crate::{
run_test, upload_descriptor_set, upload_input_json, upload_output_json,
upload_proto_descriptor,
},
workspaces::{create_workspace, get_workspace, list_workspaces, update_workspace},
},
state::AppState,
};
pub fn build_app(state: AppState) -> Router {
let admin_router = Router::new()
let workspace_router = Router::new()
.route("/operations", get(list_operations).post(create_operation))
.route("/operations/import", post(import_operation))
.route("/operations/{operation_id}", get(get_operation))
@@ -62,9 +63,16 @@ pub fn build_app(state: AppState) -> Router {
)
.route("/auth-profiles/{auth_profile_id}", get(get_auth_profile));
let admin_router = Router::new()
.route("/workspaces", get(list_workspaces).post(create_workspace))
.route(
"/workspaces/{workspace_id}",
get(get_workspace).patch(update_workspace),
)
.nest("/workspaces/{workspace_id}", workspace_router);
Router::new()
.route("/health", get(crate::routes::health))
.merge(admin_router.clone())
.nest("/api/admin", admin_router)
.with_state(state)
}
@@ -98,6 +106,8 @@ mod tests {
state::AppState,
};
const DEFAULT_WORKSPACE_ID: &str = "ws_default";
#[tokio::test]
async fn creates_publishes_and_tests_rest_operation() {
let registry = test_registry().await;
@@ -590,7 +600,10 @@ mod tests {
axum::serve(listener, app).await.unwrap();
});
format!("http://{}", address)
format!(
"http://{}/api/admin/workspaces/{}",
address, DEFAULT_WORKSPACE_ID
)
}
async fn create_lead(Json(payload): Json<Value>) -> Json<Value> {