You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.4 KiB

  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. describe ActivityPub::FollowsController, type: :controller do
  4. let(:follow_request) { Fabricate(:follow_request, account: account) }
  5. render_views
  6. context 'with local account' do
  7. let(:account) { Fabricate(:account, domain: nil) }
  8. it 'returns follow request' do
  9. signed_request = Request.new(:get, account_follow_url(account, follow_request))
  10. signed_request.on_behalf_of(follow_request.target_account)
  11. request.headers.merge! signed_request.headers
  12. get :show, params: { id: follow_request, account_username: account.username }
  13. expect(body_as_json[:id]).to eq ActivityPub::TagManager.instance.uri_for(follow_request)
  14. expect(response).to have_http_status :success
  15. end
  16. it 'returns http 404 without signature' do
  17. get :show, params: { id: follow_request, account_username: account.username }
  18. expect(response).to have_http_status 404
  19. end
  20. end
  21. context 'with remote account' do
  22. let(:account) { Fabricate(:account, domain: Faker::Internet.domain_name) }
  23. it 'returns http 404' do
  24. signed_request = Request.new(:get, account_follow_url(account, follow_request))
  25. signed_request.on_behalf_of(follow_request.target_account)
  26. request.headers.merge! signed_request.headers
  27. get :show, params: { id: follow_request, account_username: account.username }
  28. expect(response).to have_http_status 404
  29. end
  30. end
  31. end