From 15d442cf9dcd0ba5958be54c285dfeb32276190e Mon Sep 17 00:00:00 2001 From: Eugen Date: Sun, 9 Apr 2017 20:23:14 +0200 Subject: [PATCH 1/2] Fix /api/v1/accounts/update_credentials tests (#1357) --- app/controllers/api/v1/accounts_controller.rb | 8 ++- .../api/v1/accounts_controller_spec.rb | 54 ++++++++++--------- .../auth/registrations_controller_spec.rb | 2 + 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index bb7cda03..2c44e36a 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -17,10 +17,8 @@ class Api::V1::AccountsController < ApiController end def update_credentials - @account = current_user.account - - @account.update_attributes!(account_params) - + current_account.update!(account_params) + @account = current_account render action: :show end @@ -146,6 +144,6 @@ class Api::V1::AccountsController < ApiController end def account_params - @account_params ||= params.permit(:display_name, :note, :avatar, :header) + params.permit(:display_name, :note, :avatar, :header) end end diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index 98c87bf1..ed49779b 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -25,35 +25,41 @@ RSpec.describe Api::V1::AccountsController, type: :controller do end describe 'PATCH #update_credentials' do - it 'returns http success' do - expect(user.account.avatar).not_to exist - expect(user.account.header).not_to exist + describe 'with valid data' do + before do + avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png')) + header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png')) - avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png')) - header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png')) - params = { - display_name: "Alice Isn't Dead", - note: "Hi!\n\nToot toot!", - avatar: "data:image/png;base64,#{Base64.encode64(avatar)}", - header: "data:image/png;base64,#{Base64.encode64(header)}" - } - patch :update_credentials, params: params - expect(response).to have_http_status(:success) + patch :update_credentials, params: { + display_name: "Alice Isn't Dead", + note: "Hi!\n\nToot toot!", + avatar: "data:image/png;base64,#{Base64.encode64(avatar)}", + header: "data:image/png;base64,#{Base64.encode64(header)}", + } + end - user.reload + it 'returns http success' do + expect(response).to have_http_status(:success) + end - expect(user.account.display_name).to eq("Alice Isn't Dead") - expect(user.account.note).to eq("Hi!\n\nToot toot!") - expect(user.account.avatar).to exist - expect(user.account.header).to exist + it 'updates account info' do + user.account.reload + + expect(user.account.display_name).to eq("Alice Isn't Dead") + expect(user.account.note).to eq("Hi!\n\nToot toot!") + expect(user.account.avatar).to exist + expect(user.account.header).to exist + end end - it 'respects Account validations' do - note = "This is too long. " * 10 - error = { error: 'The account could not be updated: Note is too long (maximum is 160 characters)' }.to_json - patch :update_credentials, params: { note: note } - expect(response).to have_http_status(:unprocessable_entity) - expect(response.body).to eq(error) + describe 'with invalid data' do + before do + patch :update_credentials, params: { note: 'This is too long. ' * 10 } + end + + it 'returns http unprocessable entity' do + expect(response).to have_http_status(:unprocessable_entity) + end end end diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index 27ad6cbd..6b26e669 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -5,6 +5,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do describe 'GET #new' do before do + Setting.open_registrations = true request.env["devise.mapping"] = Devise.mappings[:user] end @@ -16,6 +17,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do describe 'POST #create' do before do + Setting.open_registrations = true request.env["devise.mapping"] = Devise.mappings[:user] post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678' } } end From c1729197458588a25e8f884db22360780e43d5c7 Mon Sep 17 00:00:00 2001 From: Eugen Date: Sun, 9 Apr 2017 20:55:54 +0200 Subject: [PATCH 2/2] Fix #1339 - better Atom titles (#1343) --- app/lib/atom_serializer.rb | 2 +- app/models/status.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/lib/atom_serializer.rb b/app/lib/atom_serializer.rb index b9dcee6b..845d38c9 100644 --- a/app/lib/atom_serializer.rb +++ b/app/lib/atom_serializer.rb @@ -67,7 +67,7 @@ class AtomSerializer append_element(entry, 'id', TagManager.instance.unique_tag(stream_entry.created_at, stream_entry.activity_id, stream_entry.activity_type)) append_element(entry, 'published', stream_entry.created_at.iso8601) append_element(entry, 'updated', stream_entry.updated_at.iso8601) - append_element(entry, 'title', stream_entry&.status&.title) + append_element(entry, 'title', stream_entry&.status&.title || 'Delete') entry << author(stream_entry.account) if root diff --git a/app/models/status.rb b/app/models/status.rb index 7e3dd3e2..16cd4383 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -75,7 +75,7 @@ class Status < ApplicationRecord end def title - content + reblog? ? "#{account.acct} shared a status by #{reblog.account.acct}" : "New status by #{account.acct}" end def hidden?