9个版本 (破坏性更新)

0.7.1 2024年5月19日
0.7.0 2022年3月20日
0.6.0 2021年10月15日
0.5.0 2021年10月14日
0.1.1 2021年9月30日

#372 in 网络编程

Download history 12/week @ 2024-04-14 7/week @ 2024-04-21 1/week @ 2024-04-28 229/week @ 2024-05-19 15/week @ 2024-05-26 8/week @ 2024-06-02 13/week @ 2024-06-09 18/week @ 2024-06-16 35/week @ 2024-06-23 29/week @ 2024-06-30 60/week @ 2024-07-14 7/week @ 2024-07-28

每月89次下载
keyscope中使用

Apache-2.0

85KB
2K SLoC






Service Policy Kit

service_policy_kit是一个基于Rust的库,用于验证HTTP服务是否符合策略。你可以

  • 使用service_policy_kit构建自己的完整测试框架,同时service_policy_kit负责所有期望逻辑
  • 对您的服务运行模糊测试
  • service_policy_kit集成到您的代码中,以执行自定义的就绪/自我检查
  • 构建您自己的工具(CLIs),这些工具执行服务验证和不同类型的网络安全测试

快速入门

添加到Cargo.toml

service_policy_kit = "0.2.0"

示例

这是一个完整的策略运行器,您可以重用它

use serde_yaml;
use service_policy_kit::data::{Context, SequenceInteractions};
use service_policy_kit::runner::{RunOptions, SequenceRunner};
use std::process::exit;

fn main() {
    let opts = RunOptions::default();
    let runner = SequenceRunner::from_opts(&opts);

    let sequence: SequenceInteractions = serde_yaml::from_str(
        r#"
http_interactions:
- request:
    id: step one
    uri: http://example.com
  response:
    status_code: "200"
"#,
    )
    .unwrap();
    let mut context = Context::new();
    let res = runner.run(&mut context, &sequence.http_interactions);
    exit(if res.ok { 0 } else { 1 })
}

您可以通过克隆此仓库然后运行它

cargo run --example quick-start

您应该得到

$ cargo run --examples quick-start

✔ step one: ok 288ms

Ran 1 interactions with 1 checks in 288ms

Success: 1
Failure: 0
  Error: 0
Skipped: 0

功能

  • ✅  灵活的设计:使用运行器进行任何目的、顺序或单个交互
  • ✅  上下文流程:交互可以提取、定义并将变量传递给下一个交互
  • ✅  开箱即用的报告器:节省一些样板工作 多种检查:内容、基准、证书
  • ✅  发现(进行中):给定记录的API交互或API规范,自动生成交互。

概念

有几个概念构成了service_policy_kitInteractionExpectationCheckViolationRunners

交互

交互是对调用外部服务及其每个检查类型预期响应的定义。

Interaction {
   request,
   response,
   examples,
   benchmark,
   cert,
}

期望(策略)

期望是一组针对从交互响应中提取的所有部分的预期匹配器。

每个字段都使用正则表达式,并相应地与实时响应匹配。

Response {
   headers,
   status_code,
   body,
   vars,
}

检查

检查是对响应的抽象操作。例如,运行内容期望、基准或其他策略对服务的检查。

违规

任何检查都可以输出违规。成功的检查没有违规。

运行器

跑步者执行一系列交互。例如,包含的SequenceRunner将始终按顺序执行交互,通过Context从一次交互中提取变量并将其传递给下一次交互。

谢谢

感谢所有贡献者 - 是你们让这一切成为可能,谢谢!

版权

版权(c)2021 @jondot。有关详细信息,请参阅许可协议

依赖项

~20–36MB
~595K SLoC