Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master
This commit is contained in:
43
spec/controllers/activitypub/follows_controller_spec.rb
Normal file
43
spec/controllers/activitypub/follows_controller_spec.rb
Normal file
@@ -0,0 +1,43 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe ActivityPub::FollowsController, type: :controller do
|
||||
let(:follow_request) { Fabricate(:follow_request, account: account) }
|
||||
|
||||
render_views
|
||||
|
||||
context 'with local account' do
|
||||
let(:account) { Fabricate(:account, domain: nil) }
|
||||
|
||||
it 'returns follow request' do
|
||||
signed_request = Request.new(:get, account_follow_url(account, follow_request))
|
||||
signed_request.on_behalf_of(follow_request.target_account)
|
||||
request.headers.merge! signed_request.headers
|
||||
|
||||
get :show, params: { id: follow_request, account_username: account.username }
|
||||
|
||||
expect(body_as_json[:id]).to eq ActivityPub::TagManager.instance.uri_for(follow_request)
|
||||
expect(response).to have_http_status :success
|
||||
end
|
||||
|
||||
it 'returns http 404 without signature' do
|
||||
get :show, params: { id: follow_request, account_username: account.username }
|
||||
expect(response).to have_http_status 404
|
||||
end
|
||||
end
|
||||
|
||||
context 'with remote account' do
|
||||
let(:account) { Fabricate(:account, domain: Faker::Internet.domain_name) }
|
||||
|
||||
it 'returns http 404' do
|
||||
signed_request = Request.new(:get, account_follow_url(account, follow_request))
|
||||
signed_request.on_behalf_of(follow_request.target_account)
|
||||
request.headers.merge! signed_request.headers
|
||||
|
||||
get :show, params: { id: follow_request, account_username: account.username }
|
||||
|
||||
expect(response).to have_http_status 404
|
||||
end
|
||||
end
|
||||
end
|
@@ -3,36 +3,49 @@ require 'rails_helper'
|
||||
RSpec.describe ActivityPub::Activity::Accept do
|
||||
let(:sender) { Fabricate(:account) }
|
||||
let(:recipient) { Fabricate(:account) }
|
||||
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Accept',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: {
|
||||
id: 'bar',
|
||||
type: 'Follow',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(recipient),
|
||||
object: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
},
|
||||
}.with_indifferent_access
|
||||
end
|
||||
let!(:follow_request) { Fabricate(:follow_request, account: recipient, target_account: sender) }
|
||||
|
||||
describe '#perform' do
|
||||
subject { described_class.new(json, sender) }
|
||||
|
||||
before do
|
||||
Fabricate(:follow_request, account: recipient, target_account: sender)
|
||||
subject.perform
|
||||
end
|
||||
|
||||
it 'creates a follow relationship' do
|
||||
expect(recipient.following?(sender)).to be true
|
||||
context 'with concerete object representation' do
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Accept',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: {
|
||||
type: 'Follow',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(recipient),
|
||||
object: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
},
|
||||
}.with_indifferent_access
|
||||
end
|
||||
|
||||
it 'creates a follow relationship' do
|
||||
expect(recipient.following?(sender)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
it 'removes the follow request' do
|
||||
expect(recipient.requested?(sender)).to be false
|
||||
context 'with object represented by id' do
|
||||
let(:json) do
|
||||
{
|
||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||
id: 'foo',
|
||||
type: 'Accept',
|
||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||
object: ActivityPub::TagManager.instance.uri_for(follow_request),
|
||||
}.with_indifferent_access
|
||||
end
|
||||
|
||||
it 'creates a follow relationship' do
|
||||
expect(recipient.following?(sender)).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -17,7 +17,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'http://google.com' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="http://google.com/"'
|
||||
is_expected.to include 'href="http://google.com"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,7 +25,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'https://nic.みんな/' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="https://nic.xn--q9jyb4c/"'
|
||||
is_expected.to include 'href="https://nic.みんな/"'
|
||||
end
|
||||
|
||||
it 'has display URL' do
|
||||
@@ -53,7 +53,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'http://www.google.com!' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="http://www.google.com/"'
|
||||
is_expected.to include 'href="http://www.google.com"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -61,7 +61,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { "http://www.google.com'" }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="http://www.google.com/"'
|
||||
is_expected.to include 'href="http://www.google.com"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -69,7 +69,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'http://www.google.com>' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="http://www.google.com/"'
|
||||
is_expected.to include 'href="http://www.google.com"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -93,7 +93,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'https://ja.wikipedia.org/wiki/日本' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC"'
|
||||
is_expected.to include 'href="https://ja.wikipedia.org/wiki/日本"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -101,7 +101,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'https://ko.wikipedia.org/wiki/대한민국' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="https://ko.wikipedia.org/wiki/%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD"'
|
||||
is_expected.to include 'href="https://ko.wikipedia.org/wiki/대한민국"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -109,7 +109,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'https://baike.baidu.com/item/中华人民共和国' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD"'
|
||||
is_expected.to include 'href="https://baike.baidu.com/item/中华人民共和国"'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -117,7 +117,7 @@ RSpec.describe Formatter do
|
||||
let(:text) { 'https://zh.wikipedia.org/wiki/臺灣' }
|
||||
|
||||
it 'has valid URL' do
|
||||
is_expected.to include 'href="https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3"'
|
||||
is_expected.to include 'href="https://zh.wikipedia.org/wiki/臺灣"'
|
||||
end
|
||||
end
|
||||
|
||||
|
@@ -34,4 +34,12 @@ RSpec.describe FollowRequest, type: :model do
|
||||
expect(follow_request.account.muting_reblogs?(target)).to be true
|
||||
end
|
||||
end
|
||||
|
||||
describe '#object_type' do
|
||||
let(:follow_request) { Fabricate(:follow_request) }
|
||||
|
||||
it 'equals to :follow' do
|
||||
expect(follow_request.object_type).to eq :follow
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user