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 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 ...@@ -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
class Api::SalmonController < ApplicationController class Api::SalmonController < ApiController
before_action :set_account before_action :set_account
def update def update
......
class Api::SubscriptionsController < ApplicationController class Api::SubscriptionsController < ApiController
before_action :set_account before_action :set_account
def show def show
......
class ApiController < ApplicationController
protect_from_forgery with: :null_session
end
...@@ -4,7 +4,7 @@ Nokogiri::XML::Builder.new do |xml| ...@@ -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| ...@@ -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
......
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
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
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
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
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
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
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
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
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
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
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