* .well-known/social-relay - to serve subscription preferences to relays * Workers.deferred_dispatch relay carbon copy functionality for outbound sending See discussion here: https://www.loomio.org/d/9vpoe0UR/public-post-federation#comment-730911 and spec here: https://wiki.diasporafoundation.org/Relay_servers_for_public_posts
122 lines
3.5 KiB
Ruby
122 lines
3.5 KiB
Ruby
require "spec_helper"
|
|
|
|
describe SocialRelayPresenter do
|
|
before do
|
|
@presenter = SocialRelayPresenter.new
|
|
end
|
|
|
|
describe "#as_json" do
|
|
it "works" do
|
|
expect(@presenter.as_json).to be_present
|
|
expect(@presenter.as_json).to be_a Hash
|
|
end
|
|
end
|
|
|
|
describe "#social relay well-known contents" do
|
|
describe "defaults" do
|
|
it "provides valid detault data" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "tags",
|
|
"tags" => []
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "pod tags" do
|
|
before do
|
|
AppConfig.relay.inbound.pod_tags = "foo,bar"
|
|
AppConfig.relay.inbound.include_user_tags = false
|
|
end
|
|
|
|
it "provides pod tags" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "tags",
|
|
"tags" => ["foo", "bar"]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "user tags" do
|
|
before do
|
|
AppConfig.relay.inbound.pod_tags = ""
|
|
AppConfig.relay.inbound.include_user_tags = true
|
|
ceetag = FactoryGirl.create(:tag, name: "cee")
|
|
lootag = FactoryGirl.create(:tag, name: "loo")
|
|
FactoryGirl.create(:tag_following, user: alice, tag: ceetag)
|
|
FactoryGirl.create(:tag_following, user: alice, tag: lootag)
|
|
alice.last_seen = Time.now - 2.month
|
|
alice.save
|
|
end
|
|
|
|
it "provides user tags" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "tags",
|
|
"tags" => ["cee", "loo"]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "pod tags combined with user tags" do
|
|
before do
|
|
AppConfig.relay.inbound.pod_tags = "foo,bar"
|
|
AppConfig.relay.inbound.include_user_tags = true
|
|
ceetag = FactoryGirl.create(:tag, name: "cee")
|
|
lootag = FactoryGirl.create(:tag, name: "loo")
|
|
FactoryGirl.create(:tag_following, user: alice, tag: ceetag)
|
|
FactoryGirl.create(:tag_following, user: alice, tag: lootag)
|
|
alice.last_seen = Time.now - 2.month
|
|
alice.save
|
|
end
|
|
|
|
it "provides combined pod and user tags" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "tags",
|
|
"tags" => ["foo", "bar", "cee", "loo"]
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "user tags for inactive user" do
|
|
before do
|
|
AppConfig.relay.inbound.pod_tags = ""
|
|
AppConfig.relay.inbound.include_user_tags = true
|
|
ceetag = FactoryGirl.create(:tag, name: "cee")
|
|
lootag = FactoryGirl.create(:tag, name: "loo")
|
|
FactoryGirl.create(:tag_following, user: alice, tag: ceetag)
|
|
FactoryGirl.create(:tag_following, user: alice, tag: lootag)
|
|
alice.last_seen = Time.now - 8.month
|
|
alice.save
|
|
end
|
|
|
|
it "ignores user tags" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "tags",
|
|
"tags" => []
|
|
)
|
|
end
|
|
end
|
|
|
|
describe "when scope is all" do
|
|
before do
|
|
AppConfig.relay.inbound.scope = "all"
|
|
AppConfig.relay.inbound.pod_tags = "foo,bar"
|
|
AppConfig.relay.inbound.include_user_tags = true
|
|
ceetag = FactoryGirl.create(:tag, name: "cee")
|
|
FactoryGirl.create(:tag_following, user: alice, tag: ceetag)
|
|
end
|
|
|
|
it "provides empty tags list" do
|
|
expect(@presenter.as_json).to eq(
|
|
"subscribe" => false,
|
|
"scope" => "all",
|
|
"tags" => []
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|