p_public_has(){["$(curl -s -H "$PH""$P/api/v1/timelines/public?remote=true&limit=40"| j "print(any(s['uri'] == '$1' for s in d))")"="True"];}
# relayed_post <tag>: a public post of a fresh Mastodon account nobody here follows, by its uri
relayed_post(){
localwho="$1$run"
mastodon_user "$who"
mcurl -X POST -H "Authorization: Bearer $(mastodon_token "$who")""$M/api/v1/statuses" -d "status=a post only the $1 brings $run&visibility=public"| j "print(d['uri'])"
}
echo"relay"
PT=$(privapub_token alice_relay)
PH="Authorization: Bearer $PT"
[ -n "$PT"]&& ok "PrivaPub token for alice_relay"||{ ko "PrivaPub token for alice_relay";return 1;}
run=$(date +%s)
echo" Activity-Relay"
# PrivaPub subscribes a minute after it starts (and again six hours later while unanswered)
until_true 60'relay_subscribers | grep -qx privapub.test'&& ok "PrivaPub's instance actor subscribes to Activity-Relay"|| ko "PrivaPub never subscribed ($(relay_subscribers | tr '\n'' '))"
# (1 = Accepted)
until_true 30'[ "$(p_relay_state relay.test)" = "1" ]'&& ok "and takes its Accept"|| ko "PrivaPub's subscription is $(p_relay_state relay.test)"
m_relay relay.test
until_true 45'relay_subscribers | grep -qx mastodon.test'&& ok "Mastodon subscribes too"|| ko "Mastodon never subscribed"
s_uri=$(relayed_post relay)
until_true 60'p_public_has "$s_uri"'&& ok "a public post of an account nobody here follows reaches the federated timeline, forwarded"|| ko "the forwarded post never arrived"
["$(curl -s -H "$PH""$P/api/v1/timelines/home?limit=40"| j "print(any(s['uri'] == '$s_uri' for s in d))")"="False"]\
&& ok "and no one's home"|| ko "the relayed post landed in alice's home"
curl -s -o /dev/null -X POST -H "$PH""$P/api/v1/statuses" -d "status=a quiet PrivaPub post $run&visibility=unlisted"
until_true 30'[ "$(relay_creates "a PrivaPub post for the relay $run")" = "1" ]'&& ok "alice's public post goes to the relay"|| ko "PrivaPub never sent the relay alice's public post"
["$(relay_creates "a quiet PrivaPub post $run")"="0"]&& ok "and nothing less public"|| ko "PrivaPub sent the relay an unlisted post"
until_true 45'! relay_subscribers | grep -qx mastodon.test'&& ok "Mastodon leaves Activity-Relay"|| ko "Mastodon is still subscribed to Activity-Relay"
echo" aode-relay"
until_true 30'[ "$(p_relay_state aoderelay.test)" = "1" ]'&& ok "PrivaPub's instance actor subscribes to aode-relay, which accepts"|| ko "PrivaPub's aode-relay subscription is $(p_relay_state aoderelay.test)"
m_relay aoderelay.test
until_true 45'aoderelay_connected | grep -q mastodon.test'&& ok "Mastodon subscribes too"|| ko "Mastodon never subscribed to aode-relay ($(aoderelay_connected | tr '\n'' '))"
a_uri=$(relayed_post aoderelay)
until_true 60'p_public_has "$a_uri"'&& ok "a post aode-relay announces reaches the federated timeline as its author's"|| ko "the announced post never arrived"
["$(curl -s -H "$PH""$P/api/v1/timelines/public?remote=true&limit=40"| j "print(any((s.get('reblog') or {}).get('uri') == '$a_uri' for s in d))")"="False"]\
&& ok "never as the relay's boost"|| ko "the relay's announce shows as a boost"