Skip to content
Snippets Groups Projects
Commit 3b4e04dc authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Fixing some bugs, adding pending test examples

parent 23d08c67
No related branches found
No related tags found
No related merge requests found
Showing
with 83 additions and 14 deletions
class AccountsController < ApplicationController
before_action :set_account
before_action :set_webfinger_header
def show
respond_to do |format|
......@@ -13,4 +14,12 @@ class AccountsController < ApplicationController
def set_account
@account = Account.find_by!(username: params[:username], domain: nil)
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
class Api::SalmonController < ApplicationController
class Api::SalmonController < ApiController
before_action :set_account
def update
......
class Api::SubscriptionsController < ApplicationController
class Api::SubscriptionsController < ApiController
before_action :set_account
def show
......
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
subtitle xml, @account.note
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
include_author xml, @account
......
......@@ -3,7 +3,7 @@ Nokogiri::XML::Builder.new do |xml|
xml.Subject @canonical_account_uri
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://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: 'magic-public-key', href: @magic_key)
end
......
require 'rails_helper'
RSpec.describe FetchFeedService do
pending
subject { FetchFeedService.new }
it 'fetches remote user\'s feed'
it 'processes the feed'
end
require 'rails_helper'
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
require 'rails_helper'
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
require 'rails_helper'
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
require 'rails_helper'
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
require 'rails_helper'
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
require 'rails_helper'
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
require 'rails_helper'
RSpec.describe SendInteractionService do
pending
subject { SendInteractionService.new }
it 'sends an XML envelope to the Salmon end point of remote user'
end
require 'rails_helper'
RSpec.describe SetupLocalAccountService do
pending
subject { SetupLocalAccountService.new }
it 'creates a user'
it 'creates an account for the user'
end
require 'rails_helper'
RSpec.describe UnfollowService do
pending
subject { UnfollowService.new }
it 'destroys the following relation'
it 'sends remote interactionf or remote user'
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment