Lobsters | 📄 原文链接 | 2026-10-18 收录

给 ActivityPub 写单元测试,难在规范散落各处

来源:shkspr.mobi — 2026-10-11

📋 概述

Terence Eden 在 NLnet 资助的 ActivityBot 项目里开始认真写测试,顺手记录下 ActivityPub 生态里四类测试各自撞到的墙。第一类是基础文本校验:一个 @user@server 形式的用户名,到底允许什么字符?服务器部分是域名,可以是非 ASCII 国际化域名甚至 emoji 域名;用户部分能否有点、撇号、大写?想找齐各部件的规范定义,结果发现非常困难。第二类是消息校验:WebFinger 响应长什么样、哪些字段必填、取值边界在哪,以及自己发出的消息别的服务器会不会认,现存的只有一些零散 JSON Schema。第三类是签名校验,HTTP Signatures 本身就难,验证要先收集一堆真实签名再回放进测试,所以作者开始把签名样本公开出来供他人复用;而生成签名几乎只有「发出去看对方认不认」这一条路。第四类是互通性:单机测试全绿也代表不了能和别人通信,接收方向的测试要能控制一台外部服务器发消息,而 Mastodon API 的入口只对公开实例开放。所有测试和签名样本都已公开。

🔑 核心要点

💡 金句

测试全过毫无意义——如果你没法和其他实现通信,别人也没法和你通信。
← 返回 Lobsters 首页