28个版本

0.5.3 2023年4月11日
0.5.2 2022年10月24日
0.5.1 2022年6月10日
0.4.4 2021年1月24日
0.0.1 2016年10月26日

#111Unix API

Download history 43/week @ 2024-03-30

每月 71 次下载

MIT 许可证

77KB
1.5K SLoC

独立的协议占位符服务器

Build

该项目提供了一个服务器,可以根据协议文件生成响应。它是一个单可执行二进制文件。它实现了 V4 协议规范

容器镜像

在线Rust文档

占位符服务器通过从多个协议文件中获取所有交互(请求和响应)来工作。对于每个交互,它将比较任何传入请求与协议文件中定义的请求。如果匹配(基于方法、路径和查询参数),它将返回协议文件中的响应。

注意:占位符服务器旨在支持通过模拟后端服务器来模拟移动应用程序的原型设计。即使没有与协议文件的提取匹配,它也会始终尝试返回响应。

命令行界面

协议占位符服务器捆绑为一个单独的二进制可执行文件 pact-stub-server。在没有选项的情况下运行它将显示标准帮助。

$ pact-stub-server
Pact Stub Server 0.5.3

Usage: pact-stub-server [OPTIONS]

Options:
  -l, --loglevel <loglevel>
          Log level (defaults to info) [default: info] [possible values: error, warn, info, debug, trace, none]
  -f, --file <file>
          Pact file to load (can be repeated)
  -d, --dir <dir>
          Directory of pact files to load (can be repeated)
  -e, --extension <ext>
          File extension to use when loading from a directory (default is json)
  -u, --url <url>
          URL of pact file to fetch (can be repeated)
  -b, --broker-url <broker-url>
          URL of the pact broker to fetch pacts from [env: PACT_BROKER_BASE_URL=]
      --user <user>
          User and password to use when fetching pacts from URLS or Pact Broker in user:password form
  -t, --token <token>
          Bearer token to use when fetching pacts from URLS or Pact Broker
  -p, --port <port>
          Port to run on (defaults to random port assigned by the OS)
  -o, --cors
          Automatically respond to OPTIONS requests and return default CORS headers
      --cors-referer
          Set the CORS Access-Control-Allow-Origin header to the Referer
      --insecure-tls
          Disables TLS certificate validation
  -s, --provider-state <provider-state>
          Provider state regular expression to filter the responses by
      --provider-state-header-name <provider-state-header-name>
          Name of the header parameter containing the provider state to be used in case multiple matching interactions are found
      --empty-provider-state
          Include empty provider states when filtering with --provider-state
      --consumer-name <consumer-name>
          Consumer name or regex to use to filter the Pacts fetched from the Pact broker (can be repeated)
      --provider-name <provider-name>
          Provider name or regex to use to filter the Pacts fetched from the Pact broker (can be repeated)
  -v, --version
          Print version information
  -h, --help
          Print help

选项

日志级别

您可以使用 -l, --loglevel <loglevel> 选项来控制日志级别。默认为info,可以指定的选项有:error、warn、info、debug、trace、none。

CORS预检请求

如果您指定了 -o, --cors 选项,则任何不匹配的OPTION请求将导致默认的200响应。默认情况下,Access-Control-Allow-Origin头将被设置为 *。如果您提供 --cors-referer 标志,则它将被设置为请求的Referer头中的值。

协议文件来源

您可以使用以下选项指定要验证的协议。它们可以重复使用以设置多个来源。

选项 类型 描述
-f, --文件<文件> 文件 从指定的文件加载 pact
-u, --URL<URL> URL 从 URL 资源加载 pact
-d, --目录<目录> 目录 从指定的目录加载所有 pact
-b, --代理-URL<URL> URL 从 Pact 代理加载所有最新 pact

注意:对于需要认证的 URL 和 Pact 代理,可以使用 --user 选项设置用户名和密码,或者使用 --token 使用 bearer 令牌。

禁用 TLS 证书验证

如果您需要从使用自签名证书的 HTTPS URL 加载 pact 文件,可以使用 --insecure-tls 标志来禁用 TLS 证书验证。警告:这将禁用所有证书验证,包括过期证书。

通过提供者状态过滤交互

您可以通过提供 --provider-state 选项来通过提供者状态过滤交互。这将对所有交互应用正则表达式,在请求匹配之前。

通过消费者和提供者名称(Pact 代理)过滤交互

对于从 Pact 代理获取的 pact,您可以使用以下方式通过消费者和/或提供者名称过滤 pact

 --consumer-names <consumer-names>...
            Consumer names to use to filter the Pacts fetched from the Pact broker
            
 --provider-names <provider-names>...
            Provider names to use to filter the Pacts fetched from the Pact broker

服务器选项

可以使用以下选项控制正在运行的服务器

选项 描述
-p, --端口<端口> 要绑定的端口。如果未指定,操作系统将分配一个随机端口。

使用 docker 运行

一个 docker 镜像发布到 pactfoundation/pact-stub-server

使用示例

# Create a Stub API
docker pull pactfoundation/pact-stub-server
docker run -t -p 8080:8080 -v "$(pwd)/pacts/:/app/pacts" pactfoundation/pact-stub-server -p 8080 -d pacts

# Test your stub endpoints
curl -v $(docker-machine ip $(docker-machine active)):8080/bazbat
curl -v $(docker-machine ip $(docker-machine active)):8080/foobar

依赖关系

~37–56MB
~1M SLoC