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 网络编程
每月89次下载
在keyscope中使用
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_kit
:Interaction
、Expectation
、Check
、Violation
和Runners
。
交互
交互是对调用外部服务及其每个检查类型预期响应的定义。
Interaction {
request,
response,
examples,
benchmark,
cert,
}
期望(策略)
期望是一组针对从交互响应中提取的所有部分的预期匹配器。
每个字段都使用正则表达式,并相应地与实时响应匹配。
Response {
headers,
status_code,
body,
vars,
}
检查
检查是对响应的抽象操作。例如,运行内容期望、基准或其他策略对服务的检查。
违规
任何检查都可以输出违规。成功的检查没有违规。
运行器
跑步者执行一系列交互。例如,包含的SequenceRunner
将始终按顺序执行交互,通过Context
从一次交互中提取变量并将其传递给下一次交互。
谢谢
感谢所有贡献者 - 是你们让这一切成为可能,谢谢!
版权
依赖项
~20–36MB
~595K SLoC