From 87576e1ab1a4c02f8847e8264e6a62abd36df793 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 8 Sep 2016 00:33:07 +0200 Subject: [PATCH] Fixing atom feeds for accounts, adding tests that would catch such bugs in future --- app/helpers/atom_builder_helper.rb | 2 +- spec/controllers/accounts_controller_spec.rb | 32 +++++++++++++++---- .../api/accounts/lookup_controller_spec.rb | 2 ++ .../api/accounts_controller_spec.rb | 2 ++ .../api/follows_controller_spec.rb | 2 ++ .../controllers/api/salmon_controller_spec.rb | 2 ++ .../api/subscriptions_controller_spec.rb | 2 ++ .../stream_entries_controller_spec.rb | 2 ++ spec/controllers/xrd_controller_spec.rb | 2 ++ 9 files changed, 41 insertions(+), 7 deletions(-) diff --git a/app/helpers/atom_builder_helper.rb b/app/helpers/atom_builder_helper.rb index ea54b9fdb6d..99b3414cda4 100644 --- a/app/helpers/atom_builder_helper.rb +++ b/app/helpers/atom_builder_helper.rb @@ -126,7 +126,7 @@ module AtomBuilderHelper end def link_enclosure(xml, media) - xml.link(rel: 'enclosure', href: full_asset_url(media.file.url), type: media.file_content_type, length: media.file_size) + xml.link(rel: 'enclosure', href: full_asset_url(media.file.url), type: media.file_content_type, length: media.file_file_size) end def link_avatar(xml, account) diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb index c5abe63a8d0..322b26f0b8f 100644 --- a/spec/controllers/accounts_controller_spec.rb +++ b/spec/controllers/accounts_controller_spec.rb @@ -1,17 +1,37 @@ require 'rails_helper' RSpec.describe AccountsController, type: :controller do + render_views + let(:alice) { Fabricate(:account, username: 'alice') } describe 'GET #show' do - it 'returns http success' do - get :show, params: { username: alice.username } - expect(response).to have_http_status(:success) + before do + status1 = Status.create!(account: alice, text: 'Hello world') + status2 = Status.create!(account: alice, text: 'Boop', thread: status1) + status3 = Status.create!(account: alice, text: 'Picture!') + status3.media_attachments.create!(account: alice, file: fixture_file_upload('files/attachment.jpg', 'image/jpeg')) + status4 = Status.create!(account: alice, text: 'Mentioning @alice') end - it 'returns http success with Atom' do - get :show, params: { username: alice.username }, format: 'atom' - expect(response).to have_http_status(:success) + context 'atom' do + before do + get :show, params: { username: alice.username }, format: 'atom' + end + + it 'returns http success with Atom' do + expect(response).to have_http_status(:success) + end + end + + context 'html' do + before do + get :show, params: { username: alice.username } + end + + it 'returns http success' do + expect(response).to have_http_status(:success) + end end end diff --git a/spec/controllers/api/accounts/lookup_controller_spec.rb b/spec/controllers/api/accounts/lookup_controller_spec.rb index 043df8c86ce..3f590b82f0b 100644 --- a/spec/controllers/api/accounts/lookup_controller_spec.rb +++ b/spec/controllers/api/accounts/lookup_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Api::Accounts::LookupController, type: :controller do + render_views + let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:token) { double acceptable?: true, resource_owner_id: user.id } diff --git a/spec/controllers/api/accounts_controller_spec.rb b/spec/controllers/api/accounts_controller_spec.rb index dd060ddaa4a..d8b26f815a0 100644 --- a/spec/controllers/api/accounts_controller_spec.rb +++ b/spec/controllers/api/accounts_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Api::AccountsController, type: :controller do + render_views + let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:token) { double acceptable?: true, resource_owner_id: user.id } diff --git a/spec/controllers/api/follows_controller_spec.rb b/spec/controllers/api/follows_controller_spec.rb index 28646525131..f1775dfbcb0 100644 --- a/spec/controllers/api/follows_controller_spec.rb +++ b/spec/controllers/api/follows_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Api::FollowsController, type: :controller do + render_views + let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } let(:token) { double acceptable?: true, resource_owner_id: user.id } diff --git a/spec/controllers/api/salmon_controller_spec.rb b/spec/controllers/api/salmon_controller_spec.rb index 785e1723b13..6897caeebbe 100644 --- a/spec/controllers/api/salmon_controller_spec.rb +++ b/spec/controllers/api/salmon_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Api::SalmonController, type: :controller do + render_views + let(:account) { Fabricate(:user, account: Fabricate(:account, username: 'catsrgr8')).account } before do diff --git a/spec/controllers/api/subscriptions_controller_spec.rb b/spec/controllers/api/subscriptions_controller_spec.rb index e13ec4939e3..a0b0b441358 100644 --- a/spec/controllers/api/subscriptions_controller_spec.rb +++ b/spec/controllers/api/subscriptions_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe Api::SubscriptionsController, type: :controller do + render_views + let(:account) { Fabricate(:account, username: 'gargron', domain: 'quitter.no', verify_token: '123', remote_url: 'topic_url', secret: 'abc') } describe 'GET #show' do diff --git a/spec/controllers/stream_entries_controller_spec.rb b/spec/controllers/stream_entries_controller_spec.rb index 56b636ab402..6f270af9d65 100644 --- a/spec/controllers/stream_entries_controller_spec.rb +++ b/spec/controllers/stream_entries_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe StreamEntriesController, type: :controller do + render_views + let(:alice) { Fabricate(:account, username: 'alice') } let(:status) { Fabricate(:status, account: alice) } diff --git a/spec/controllers/xrd_controller_spec.rb b/spec/controllers/xrd_controller_spec.rb index 9152a714b5e..eeaaaa786f0 100644 --- a/spec/controllers/xrd_controller_spec.rb +++ b/spec/controllers/xrd_controller_spec.rb @@ -1,6 +1,8 @@ require 'rails_helper' RSpec.describe XrdController, type: :controller do + render_views + describe 'GET #host_meta' do it 'returns http success' do get :host_meta