mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 17:17:32 +00:00
Fixing some bugs, adding pending test examples
This commit is contained in:
parent
23d08c6749
commit
3b4e04dc32
|
@ -1,5 +1,6 @@
|
||||||
class AccountsController < ApplicationController
|
class AccountsController < ApplicationController
|
||||||
before_action :set_account
|
before_action :set_account
|
||||||
|
before_action :set_webfinger_header
|
||||||
|
|
||||||
def show
|
def show
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
@ -13,4 +14,12 @@ class AccountsController < ApplicationController
|
||||||
def set_account
|
def set_account
|
||||||
@account = Account.find_by!(username: params[:username], domain: nil)
|
@account = Account.find_by!(username: params[:username], domain: nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_webfinger_header
|
||||||
|
response.headers['Link'] = "<#{webfinger_account_url}>; rel=\"lrdd\"; type=\"application/xrd+xml\""
|
||||||
|
end
|
||||||
|
|
||||||
|
def webfinger_account_url
|
||||||
|
webfinger_url(resource: "acct:#{@account.acct}@#{Rails.configuration.x.local_domain}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class Api::SalmonController < ApplicationController
|
class Api::SalmonController < ApiController
|
||||||
before_action :set_account
|
before_action :set_account
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
class Api::SubscriptionsController < ApplicationController
|
class Api::SubscriptionsController < ApiController
|
||||||
before_action :set_account
|
before_action :set_account
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
3
app/controllers/api_controller.rb
Normal file
3
app/controllers/api_controller.rb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
class ApiController < ApplicationController
|
||||||
|
protect_from_forgery with: :null_session
|
||||||
|
end
|
|
@ -4,7 +4,7 @@ Nokogiri::XML::Builder.new do |xml|
|
||||||
title xml, @account.display_name
|
title xml, @account.display_name
|
||||||
subtitle xml, @account.note
|
subtitle xml, @account.note
|
||||||
updated_at xml, stream_updated_at
|
updated_at xml, stream_updated_at
|
||||||
logo xml, asset_url(@account.avatar.url(:medium))
|
logo xml, asset_url(@account.avatar.url(:medium, false))
|
||||||
|
|
||||||
author(xml) do
|
author(xml) do
|
||||||
include_author xml, @account
|
include_author xml, @account
|
||||||
|
|
|
@ -3,7 +3,7 @@ Nokogiri::XML::Builder.new do |xml|
|
||||||
xml.Subject @canonical_account_uri
|
xml.Subject @canonical_account_uri
|
||||||
xml.Alias url_for_target(@account)
|
xml.Alias url_for_target(@account)
|
||||||
xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: url_for_target(@account))
|
xml.Link(rel: 'http://webfinger.net/rel/profile-page', type: 'text/html', href: url_for_target(@account))
|
||||||
xml.Link(rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: atom_user_stream_url(id: @account.id))
|
xml.Link(rel: 'http://schemas.google.com/g/2010#updates-from', type: 'application/atom+xml', href: account_url(@account, format: 'atom'))
|
||||||
xml.Link(rel: 'salmon', href: api_salmon_url(@account.id))
|
xml.Link(rel: 'salmon', href: api_salmon_url(@account.id))
|
||||||
xml.Link(rel: 'magic-public-key', href: @magic_key)
|
xml.Link(rel: 'magic-public-key', href: @magic_key)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FetchFeedService do
|
RSpec.describe FetchFeedService do
|
||||||
pending
|
subject { FetchFeedService.new }
|
||||||
|
|
||||||
|
it 'fetches remote user\'s feed'
|
||||||
|
it 'processes the feed'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FollowRemoteAccountService do
|
RSpec.describe FollowRemoteAccountService do
|
||||||
pending
|
subject { FollowRemoteAccountService.new }
|
||||||
|
|
||||||
|
it 'returns nil if no such user can be resolved via webfinger'
|
||||||
|
it 'returns nil if the domain does not have webfinger'
|
||||||
|
it 'returns nil if remote user does not offer a hub URL'
|
||||||
|
it 'returns an already existing remote account'
|
||||||
|
it 'returns a new remote account'
|
||||||
|
it 'fills the remote account with profile information'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FollowService do
|
RSpec.describe FollowService do
|
||||||
pending
|
subject { FollowService.new }
|
||||||
|
|
||||||
|
it 'creates a following relation'
|
||||||
|
it 'creates local account for remote user'
|
||||||
|
it 'sends follow to the remote user'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe PostStatusService do
|
RSpec.describe PostStatusService do
|
||||||
pending
|
subject { PostStatusService.new }
|
||||||
|
|
||||||
|
it 'creates a new status'
|
||||||
|
it 'creates a new response status'
|
||||||
|
it 'processes mentions'
|
||||||
|
it 'pings PuSH hubs'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ProcessFeedService do
|
RSpec.describe ProcessFeedService do
|
||||||
pending
|
subject { ProcessFeedService.new }
|
||||||
|
|
||||||
|
it 'updates remote user\'s account information'
|
||||||
|
it 'creates local copies of all notes and comments'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,15 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ProcessInteractionService do
|
RSpec.describe ProcessInteractionService do
|
||||||
pending
|
subject { ProcessInteractionService.new }
|
||||||
|
|
||||||
|
it 'creates account for new remote user'
|
||||||
|
it 'updates account for existing remote user'
|
||||||
|
it 'ignores envelopes that do not address the local user'
|
||||||
|
it 'accepts a status that mentions the local user'
|
||||||
|
it 'accepts a status that is a reply to the local user\'s'
|
||||||
|
it 'accepts a favourite to a status by the local user'
|
||||||
|
it 'accepts a reblog of a status of the local user'
|
||||||
|
it 'accepts a follow of the local user'
|
||||||
|
it 'accepts an unfollow of the local user'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,22 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ProcessMentionsService do
|
RSpec.describe ProcessMentionsService do
|
||||||
pending
|
let(:account) { Fabricate(:account, username: 'alice') }
|
||||||
|
let(:remote_user) { Fabricate(:account, username: 'remote_user', domain: 'example.com', salmon_url: 'http://salmon.example.com') }
|
||||||
|
let(:status) { Fabricate(:status, account: account, text: "Hello @#{remote_user.acct}") }
|
||||||
|
|
||||||
|
subject { ProcessMentionsService.new }
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_request(:post, remote_user.salmon_url)
|
||||||
|
subject.(status)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a mention' do
|
||||||
|
expect(remote_user.mentions.where(status: status).count).to eq 1
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'posts to remote user\'s Salmon end point' do
|
||||||
|
expect(a_request(:post, remote_user.salmon_url)).to have_been_made
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe SendInteractionService do
|
RSpec.describe SendInteractionService do
|
||||||
pending
|
subject { SendInteractionService.new }
|
||||||
|
|
||||||
|
it 'sends an XML envelope to the Salmon end point of remote user'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe SetupLocalAccountService do
|
RSpec.describe SetupLocalAccountService do
|
||||||
pending
|
subject { SetupLocalAccountService.new }
|
||||||
|
|
||||||
|
it 'creates a user'
|
||||||
|
it 'creates an account for the user'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe UnfollowService do
|
RSpec.describe UnfollowService do
|
||||||
pending
|
subject { UnfollowService.new }
|
||||||
|
|
||||||
|
it 'destroys the following relation'
|
||||||
|
it 'sends remote interactionf or remote user'
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue