Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською
🧪

raps-mock

Тестуйте APS-інтеграції без облікових даних

Комплексний mock-сервер для API Autodesk Platform Services (APS), автоматично згенерований з OpenAPI специфікацій.

Що таке raps-mock?

raps-mock — це комплексний mock-сервер для API Autodesk Platform Services (APS). Він автоматично генерує маршрути з OpenAPI 3.0 специфікацій і може працювати у режимі stateless (фіксовані відповіді) або stateful (зберігання у пам’яті).

Побудований на Rust для надійності та продуктивності, raps-mock можна використовувати як окремий сервер або як бібліотеку у ваших Rust-проєктах.

Навіщо raps-mock?

Проблема: Розробка з використанням live APS API вимагає дійсних облікових даних, витрачає токени на операції Model Derivative та забруднює тестовими даними ваше ACC-середовище. Проблеми з мережею можуть зірвати сесію розробки. CI/CD пайплайни стають нестабільними, коли залежать від зовнішніх сервісів.

Рішення: raps-mock надає повнофункціональний mock-сервер APS, який працює локально або у вашому CI-середовищі. Тестуйте інтеграції без облікових даних, без витрат, без мережевих залежностей.

Випадки використання

  • Локальна розробка — Працюйте офлайн, ітеруйте швидко, без налаштування облікових даних для нових членів команди
  • CI/CD тестування — Надійні, детерміновані тести, що не залежать від зовнішніх сервісів
  • Демо-середовища — Демонструйте можливості APS без реальних даних чи облікових даних
  • Навчання — Експериментуйте з APS API без наслідків

Ключові можливості

  • Автоматично згенеровані маршрути з OpenAPI 3.0 специфікацій
  • Налаштовувані режими: Stateless (фіксовані відповіді) або Stateful (зберігання у пам’яті)
  • Бібліотека та CLI: Використовуйте як бібліотеку або окремий сервер
  • Повне покриття APS: Authentication, OSS, Data Management, Model Derivative, Construction, Webhooks
  • Користувацькі обробники: Розширюйте за допомогою власних обробників ендпоінтів
  • Типобезпечний: Побудований на Rust для надійності та продуктивності

Швидкий старт

Як окремий сервер

# Start the mock server (stateful mode by default)
raps-mock --port 3000

# Start in stateless mode (fixed OpenAPI example responses)
raps-mock --port 3000 --mode stateless

# With custom OpenAPI directory
raps-mock --openapi-dir ./my-openapi-specs --port 3000

Як бібліотека

use raps_mock::{'{'}MockServer, MockServerConfig, MockMode{'}'};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {'{'}
    let config = MockServerConfig {'{'}
        mode: MockMode::Stateful,
        openapi_dir: "../aps-sdk-openapi".into(),
        ..Default::default()
    {'}'};

    let server = MockServer::new(config).await?;
    server.start("0.0.0.0:3000").await?;
    Ok(())
{'}'}

В інтеграційних тестах

use raps_mock::testing::TestServer;

#[tokio::test]
async fn test_bucket_creation() {'{'}
    // Start mock server on random port
    let server = TestServer::start_default().await.unwrap();

    // Use any HTTP client against server.url
    let client = reqwest::Client::new();
    let response = client
        .post(&format!("{'{}'}​/oss/v2/buckets", server.url))
        .json(&serde_json::json!({'{'}
            "bucketKey": "test-bucket",
            "policyKey": "transient"
        {'}'}))
        .send()
        .await
        .unwrap();

    assert!(response.status().is_success());
{'}'}

Конфігурація

Параметри командного рядка

ПараметрСкороченняЗа замовчуваннямОпис
--port-p3000Порт сервера
--host-H0.0.0.0Хост сервера
--mode-mstatefulstateless або stateful
--openapi-dir../aps-sdk-openapiШлях до OpenAPI специфікацій
--state-file-Шлях до файлу збереження стану
--verbose-vfalseУвімкнути детальне логування

Пояснення режимів

Режим Stateful (за замовчуванням)

У режимі stateful mock-сервер підтримує стан у пам’яті. Операції мають побічні ефекти:

  • Створення бакету додає його до списку
  • Завантаження об’єкта асоціює його з бакетом
  • Запуск трансляції створює завдання зі статусом, який можна запитати
  • Видалення ресурсів прибирає їх зі стану

Цей режим ідеальний для тестування робочих процесів, що охоплюють кілька API-викликів.

Режим Stateless

У режимі stateless кожен запит повертає фіксовані відповіді на основі прикладів з OpenAPI специфікації. Стан між запитами не зберігається.

Цей режим корисний для:

  • Простого контрактного тестування
  • Валідації форматів запитів/відповідей
  • Сценаріїв, де збереження стану не потрібне

Підтримувані API

APIВерсіяСтатусПримітки
Authenticationv2ПовнийСимуляція 2-legged та 3-legged OAuth
OSS (Buckets)v2ПовнийСтворення, перелік, видалення бакетів
OSS (Objects)v2ПовнийМетадані завантаження, перелік, підписані URL
Data Managementv1ПовнийХаби, проєкти, папки, елементи
Model Derivativev2ПовнийЗавдання трансляції, маніфести, статус
Construction Issuesv1ПовнийCRUD для зауважень, коментарі
ACC Account Adminv1ЧастковийБазові операції з обліковими записами
Webhooksv1ПовнийУправління підписками
ACC Submittalsv1ЗапланованоФаза 1
ACC Checklistsv1ЗапланованоФаза 1
ACC RFIsv1ЗапланованоФаза 1
ACC Assetsv1ЗапланованоФаза 1
Design Automationv3ЗапланованоФаза 4
Reality Capturev1ЗапланованоФаза 4

Інтеграція з RAPS CLI

raps-mock розроблений для безшовної роботи з RAPS CLI:

# Terminal 1: Start mock server
raps-mock --port 3000

# Terminal 2: Configure raps to use mock server
export APS_BASE_URL=http://localhost:3000
export APS_CLIENT_ID=mock-client
export APS_CLIENT_SECRET=mock-secret

# Now raps commands work against the mock
raps auth test
raps bucket create --key test-bucket --policy transient
raps bucket list

Дорожня карта

  • Фаза 1 (v0.3.0): Повне покриття модулів ACC (Submittals, Checklists, RFIs, Assets)
  • Фаза 2 (v0.4.0): Збереження стану та фікстури
  • Фаза 3 (v0.5.0): Можливості симуляції (затримка, помилки, прогрес)
  • Фаза 4 (v0.6.0): Design Automation та Reality Capture
  • Фаза 5 (v0.7.0): Досвід розробника (запис, дашборд, валідація)
  • Фаза 6 (v1.0.0): Docker, GitHub Actions, продакшн-реліз

Пов'язані продукти