diaspora/spec/presenters/social_relay_presenter_spec.rb
Jason Robinson bdf6c71772 Implement social relay functionality
* .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
2015-07-18 21:29:31 +03:00

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