Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master

This commit is contained in:
Jenkins
2018-01-03 20:17:13 +00:00
66 changed files with 679 additions and 262 deletions

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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